Moinsen,
ich habe noch ein Problem mit unserem "Wecksystem" der Kids. Generell wird zu einem Zeitpunkt, der im Kalender festgehalten ist, der Zyklus in Gang gesetzt. Je nach Rückmeldung vom Helligkeitssensor draussen wird entweder das Rollo hochgefahren oder das Licht angemacht. Klappt jetzt auch, allerdings blieben dann teilweise die Rollos unten da mit Licht geweckt wurde.
Ich habe dann einen "last catch" eingefügt, der etwa eine Stunde nach der Weckzeit die Rollos hochfahren soll (wenn vorher ein spezielles Reading gesetzt wurde):
## Normalmodus Wochentags - wenn zu dunkel Licht in zwei Stufen einschalten, ansonsten Rollo hoch
([DUMMY_WKUP_Kind1] eq "wecken" and [?DUMMY_Hausallein] eq "nein" and [sensorGarten:licht] < 55 ) ( set OG_LI_Kind1_dim 25 )
DOELSEIF ([DUMMY_WKUP_Kind1] eq "wecken" and [?DUMMY_Hausallein] eq "nein" and [sensorGarten:licht] > 54 ) ( set ROLL_Kind1 OBEN, setreading DUMMY_WKUP_Kind1 oldState OFF )
DOELSEIF ([DUMMY_WKUP_Kind1] eq "wecken" and [+00:10] and ([?DUMMY_WKUP_Kind1:state:sec]>600) and [?DUMMY_Hausallein] eq "nein" and [sensorGarten:licht] > 64 ) ( set ROLL_Kind1 OBEN; set DUMMY_WKUP_Kind1 aus, setreading DUMMY_WKUP_Kind1 oldState OFF )
DOELSEIF ([DUMMY_WKUP_Kind1] eq "wecken" and [+00:10] and ([?DUMMY_WKUP_Kind1:state:sec]>600) and [?DUMMY_Hausallein] eq "nein" and [sensorGarten:licht] < 65 ) ( set OG_LI_Kind1_Bett on, set OG_LI_Kind1 on, set DUMMY_WKUP_Kind1 aus, setreading DUMMY_WKUP_Kind1 oldState ROLLO)
## Last Catch
DOELSEIF ([?DUMMY_Hausallein] eq "nein" and [+00:05] and [?DUMMY_WKUP_Kind1.oldState] eq "ROLLO" and [$SELF:state:sec] > 3600) ( set ROLL_Kind1 OBEN, setreading DUMMY_WKUP_Kind1 oldState OFF )
So, das DOIF verbleibt aber im cmd_4, cmd_5 wird zwar alle 5 Minuten "angetestet aber nicht angesprungen. Ich vermute [$SELF:state:sec] > 3600
macht nicht das was ich vermute - ändert alleine das [+00:05] in cmd_5 den state des DOIF ? So eine kleiner Denkschubser wäre nett :-)
Viele Grüße - Michael
Zitat von: Michael P. am 30 Oktober 2019, 08:57:18
Moinsen,
ich habe noch ein Problem mit unserem "Wecksystem" der Kids. Generell wird zu einem Zeitpunkt, der im Kalender festgehalten ist, der Zyklus in Gang gesetzt. Je nach Rückmeldung vom Helligkeitssensor draussen wird entweder das Rollo hochgefahren oder das Licht angemacht. Klappt jetzt auch, allerdings blieben dann teilweise die Rollos unten da mit Licht geweckt wurde.
Ich habe dann einen "last catch" eingefügt, der etwa eine Stunde nach der Weckzeit die Rollos hochfahren soll (wenn vorher ein spezielles Reading gesetzt wurde):
## Normalmodus Wochentags - wenn zu dunkel Licht in zwei Stufen einschalten, ansonsten Rollo hoch
([DUMMY_WKUP_Kind1] eq "wecken" and [?DUMMY_Hausallein] eq "nein" and [sensorGarten:licht] < 55 ) ( set OG_LI_Kind1_dim 25 )
DOELSEIF ([DUMMY_WKUP_Kind1] eq "wecken" and [?DUMMY_Hausallein] eq "nein" and [sensorGarten:licht] > 54 ) ( set ROLL_Kind1 OBEN, setreading DUMMY_WKUP_Kind1 oldState OFF )
DOELSEIF ([DUMMY_WKUP_Kind1] eq "wecken" and [+00:10] and ([?DUMMY_WKUP_Kind1:state:sec]>600) and [?DUMMY_Hausallein] eq "nein" and [sensorGarten:licht] > 64 ) ( set ROLL_Kind1 OBEN; set DUMMY_WKUP_Kind1 aus, setreading DUMMY_WKUP_Kind1 oldState OFF )
DOELSEIF ([DUMMY_WKUP_Kind1] eq "wecken" and [+00:10] and ([?DUMMY_WKUP_Kind1:state:sec]>600) and [?DUMMY_Hausallein] eq "nein" and [sensorGarten:licht] < 65 ) ( set OG_LI_Kind1_Bett on, set OG_LI_Kind1 on, set DUMMY_WKUP_Kind1 aus, setreading DUMMY_WKUP_Kind1 oldState ROLLO)
## Last Catch
DOELSEIF ([?DUMMY_Hausallein] eq "nein" and [+00:05] and [?DUMMY_WKUP_Kind1.oldState] eq "ROLLO" and [$SELF:state:sec] > 3600) ( set ROLL_Kind1 OBEN, setreading DUMMY_WKUP_Kind1 oldState OFF )
So, das DOIF verbleibt aber im cmd_4, cmd_5 wird zwar alle 5 Minuten "angetestet aber nicht angesprungen. Ich vermute [$SELF:state:sec] > 3600
macht nicht das was ich vermute - ändert alleine das [+00:05] in cmd_5 den state des DOIF ? So eine kleiner Denkschubser wäre nett :-)
Viele Grüße - Michael
Du kannst ja den Status, bzw. das Reading state mit Datum sehen. Der Status des Moduls wird natürlich immer dann als letztes geändert, wenn ein Zweig ausgeführt wird, sonst nicht. Das kannst du immer am Datum des state-Readings erkennen, genau dieses wird mit [$SELF:state:sec] abgefragt. Wenn es also älter ist und der Zweig nicht ausgeführt wird, dann muss es an den anderen Bedingungen liegen.
Zitat von: Damian am 30 Oktober 2019, 11:30:15
Du kannst ja den Status, bzw. das Reading state mit Datum sehen. Der Status des Moduls wird natürlich immer dann als letztes geändert, wenn ein Zweig ausgeführt wird, sonst nicht. Das kannst du immer am Datum des state-Readings erkennen, genau dieses wird mit [$SELF:state:sec] abgefragt. Wenn es also älter ist und der Zweig nicht ausgeführt wird, dann muss es an den anderen Bedingungen liegen.
Hi Damian,
so hatte ich es auch verstanden, aber trotzdem will es nicht. Die anderen Bedingungen sollten eigentlich erfüllt sein:
list DUMMY_Hausallein
Internals:
[....]
NAME DUMMY_Hausallein
NR 403
STATE nein
TYPE dummy
READINGS:
2019-10-19 12:00:00 state nein
list DUMMY_WKUP_Kind1
Internals:
[...]
NAME DUMMY_WKUP_Kind1
STATE aus
TYPE dummy
READINGS:
2019-10-30 06:26:00 oldState ROLLO
2019-10-30 07:15:00 state aus
list DOIF Rolladen_Kind1
Internals:
[...]
STATE cmd_4
TYPE DOIF
VERSION 20268 2019-09-28 21:00:39
READINGS:
2019-10-30 06:26:00 cmd 4
2019-10-30 06:26:00 cmd_event timer_2
2019-10-30 06:26:00 cmd_nr 4
2019-10-29 19:26:00 mode enabled
2019-10-30 06:26:00 state cmd_4
[...]
"DUMMY_Hausallein" ist "nein", "DUMMY_WKUP_Kind1" mit reading "oldState" ist "ROLLO" und "$SELF.state" ist auf 06:26
Theoretisch sollte das DOIF greifen - meiner Meinung nach. Mache ich einen Klammerfehler ( Wald, Bäume ... ?) - ich steh auf dem Schlauch ...
Grüße - Michael
Mit dem Ausschnitt kann man nichts anfangen, poste mal das komplette list von DOIF Rolladen_Kind1.
Hi Damian,
das Problem saß mal wieder vor der Tastatur. Beim List ist mir das aufgefallen:
.....and ::InternalDoIf($hash,'DUMMY_WKUP_Kind1.oldState','STATE')....
Hier wird offensichtlich das völlig falsche reading zur Grundlage genommen. Also Fehler hier:
...[?DUMMY_WKUP_Kind1.oldState] eq "ROLLO"...
ist natürlich falsch, es muss sein
...[?DUMMY_WKUP_Kind1:oldState] eq "ROLLO"...
Doppelpunkt statt Punkt vor "oldState"
Grummel. Jetzt geht's.
Danke für's zuhören :-)
Grüße - MiPo