Hallo,
ich habe hier ein DOIF welches leider nicht schaltet.
([06:00-21:45] and [handy_da] eq "present" and [Helligkeit:state] < 25)(set WZ_Licht on)
DOELSEIF
([handy_da] eq "absent" or [Helligkeit:state] > 50)(set WZ_Licht off)
Ich denke ein DO Always benötige ich, da ja bei Dunkel an und bei Hell an geschaltet wird.?
Anbei die List:
Internals:
DEF ([06:00-21:45] and [handy_da] eq "present" and [Helligkeit:state] < 25)(set WZ_Licht on)
DOELSEIF
([handy_da] eq "absent" or [Helligkeit:state] > 50)(set WZ_Licht off)
NAME di_handy_da
NR 143
NTFY_ORDER 50-di_handy_da
STATE cmd_1
TYPE DOIF
READINGS:
2018-02-24 06:57:41 Device Helligkeit
2018-02-23 17:45:39 cmd 1
2018-02-23 17:45:39 cmd_event Helligkeit
2018-02-23 17:45:39 cmd_nr 1
2018-02-24 06:57:41 e_Helligkeit_state 0.6
2018-02-23 21:51:35 e_handy_da_STATE present
2018-02-23 06:43:18 mode enabled
2018-02-23 17:45:39 state cmd_1
2018-02-23 21:45:00 timer_01_c01 24.02.2018 06:00:00
2018-02-23 21:45:00 timer_02_c01 24.02.2018 21:45:00
2018-02-23 16:49:18 wait_timer no timer
Regex:
condition:
0 DOIF_time($hash,0,1,$wday,$hms) and InternalDoIf($hash,'handy_da','STATE') eq "present" and ReadingValDoIf($hash,'Helligkeit','state') < 25
1 InternalDoIf($hash,'handy_da','STATE') eq "absent" or ReadingValDoIf($hash,'Helligkeit','state') > 50
days:
devices:
0 handy_da Helligkeit
1 handy_da Helligkeit
all handy_da Helligkeit
do:
0:
0 set WZ_Licht on
1:
0 set WZ_Licht off
2:
helper:
DOIF_Readings_events
DOIF_eventas
event 0.6
globalinit 1
last_timer 2
sleeptimer -1
timerdev Helligkeit
timerevent 0.6
triggerDev Helligkeit
timerevents:
0.6
timereventsState:
state: 0.6
triggerEvents:
0.6
triggerEventsState:
state: 0.6
internals:
0 handy_da:STATE
1 handy_da:STATE
all handy_da:STATE
interval:
0 -1
1 0
itimer:
localtime:
0 1519448400
1 1519505100
readings:
0 Helligkeit:state
1 Helligkeit:state
all Helligkeit:state
realtime:
0 06:00:00
1 21:45:00
time:
0 06:00:00
1 21:45:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
trigger:
triggertime:
1519505100:
localtime 1519505100
hash:
uiState:
uiTable:
Attributes:
room Steckdosen
wait 0:500
Muss da doch ein Do always rein, oder habe ich was falsch gemacht?
Vielen Dank
Hoffi
Es hat doch geschalten. Zu mindest ist das DOIF im cmd1 und musste also WZ_Licht on geschalten haben.
Ja,Entschuldigung.
Es hat es gestern einnmal angeschalter. Aber bei "absent" nicht wieder aus, bzw. heute morgen nicht wieder an.
Hoffi
Dan mach dich mal absent und gib noch mal ein list vom DOIF
Hallo Hoffi,
do always brauchst Du immer, wenn sich der Zustand des gesamten DOIF nicht ändert (CMD 1 ausgeführt) Du aber bei erneutem wahr werden der () eine erneute Ausführung wünschst.
Also wenn in deinem Fall der DOELSEIF Zweig nicht eintritt aber der DOIF Zweig wiederholt wird (und geschaltet werden soll) brauchst Du do always.
Gruß Otto
Ich glaube ich habe den Fehler gefunden.
Der "Fehler" wird durch ein anderes DOIF ausgelöst, weiß aber nicht wie ich das ändern kann.
Der State/Readings werden unterschiedlich angezeigt, bzw. aktualisiert.
Bei den Readings steht "on" und bei Probably associated with "off"
e_Bwm_WZ_state on
Bwm_WZ off FS20
Anbei die List von DOIF:
Internals:
DEF ([Bwm_WZ:state] eq "on")(set WZ_Anwesend present)(set Bwm_WZ off)
DOELSE
(set WZ_Anwesend absent)
NAME di_BWM_WZ_FS20
NR 390
NTFY_ORDER 50-di_BWM_WZ_FS20
STATE cmd_1
TYPE DOIF
READINGS:
2018-02-25 09:47:30 Device Bwm_WZ
2018-02-25 09:56:30 cmd 1.2
2018-02-25 09:56:30 cmd_event Bwm_WZ
2018-02-25 09:56:30 cmd_nr 1
2018-02-25 09:56:30 cmd_seqnr 2
2018-02-25 09:47:30 e_Bwm_WZ_state on
2018-02-23 06:41:17 mode enabled
2018-02-25 09:56:30 state cmd_1
2018-02-25 09:56:30 wait_timer no timer
Regex:
condition:
0 ReadingValDoIf($hash,'Bwm_WZ','state') eq "on"
devices:
0 Bwm_WZ
all Bwm_WZ
do:
0:
0 set WZ_Anwesend present
1 set Bwm_WZ off
1:
0 set WZ_Anwesend absent
helper:
DOIF_Readings_events
DOIF_eventas
event on
globalinit 1
last_timer 0
sleepdevice Bwm_WZ
sleepsubtimer -1
sleeptimer -1
timerdev Bwm_WZ
timerevent on
triggerDev Bwm_WZ
timerevents:
on
timereventsState:
state: on
triggerEvents:
on
triggerEventsState:
state: on
internals:
itimer:
readings:
0 Bwm_WZ:state
all Bwm_WZ:state
trigger:
uiState:
uiTable:
Attributes:
do resetwait
wait 0,540:120
List vom Bewegungsmelder:
Internals:
BTN 00
CUL_MSGCNT 529
CUL_RAWMSG 810b04xx0101a001f52a000011
CUL_RSSI -81.5
CUL_TIME 2018-02-25 09:47:30
DEF f52a 00
IODev CUL
LASTInputDev CUL
MSGCNT 529
NAME Bwm_WZ
NR 271
STATE off
TYPE FS20
XMIT f52a
CODE:
1 f52a 00
READINGS:
2018-02-25 09:56:30 state off
Attributes:
IODev CUL
model fs20pira
room FS20,Wohnzimmer
Hoffi
Moin,
gibt es zwischen #5 und Deiner Ausgangsfrage außer Deinem Namen noch irgendeinen Zusammenhang? :-[
Ich kann ihn nicht erkennen.
Gruß Otto
Hallo Otto,
In meiner ersten Frage hatte ich das Problem, dass das in #1 gelistete DOIF nicht richtig schaltet.
Die funktion mit Do Always habe ich ausprobiert und verstehe ich auch.
Ich habe dadurch den Fehler nicht gefunden und habe mich auf die Suche gemacht und bin dann in dem gelisteteten DOIF in #5 den Fehler gefunden.
Nun sehe ich den Zusammenhang des in #1 gelisteten in der falschen Übergabe des Readings in #5.
Erst wenn das Reading auf "off" steht wird der zweite Zweig (#5) ausgelöst. Leider wird das Reading nicht geändert und belibt auf "ON" stehen
Ich hoffe das ich jetzt meine Gedanken wieder geben konnte und nichts vergessen habe.
Hoffi
([06:00-21:45] and [handy_da] eq "present" and [Helligkeit:state] < 25)(set WZ_Licht on)
DOELSEIF
([handy_da] eq "absent" or [Helligkeit:state] > 50)(set WZ_Licht off)
([Bwm_WZ:state] eq "on")(set WZ_Anwesend present)(set Bwm_WZ off)
DOELSE
(set WZ_Anwesend absent)
Also die einzige Textkette die in Beiden vorkommt ist WZ aber in unterschiedlichsten Stringkombinationen. Tut mir leid, ich sehe es nicht....
Ich verstehe das zweite DOIF so:
Wenn Bwm_WZ auf off geht wird sofort WZ_Anwesend auf present gesetzt nach 540 sec wird Bwm_WZ auf off gesetzt.
Jeder andere Event von Bwm_WZ setzt nach 120 sec den WZ_Anwesend auf absent. Allerdings setzt jeder Event auch die Timer zurück.
wait 0,540:120
Was das wirklich für Auswirkungen hat kann ich nicht sagen. Insbesondere ist mir nicht klar was passiert wenn Du den Bwm_WZ von "aussen" setzt.
Gruß Otto
::)
Entschuldigung. Stimmt. Da war ich doch schneller mit dem Wiedergeben.
Durch das
set WZ_Anwesend present
wird dann das DOIF in #1 getritggert
([06:00-21:45] and [handy_da] eq "present" and [Helligkeit:state] < 25)(set WZ_Licht on)
DOELSEIF
([handy_da] eq "absent" or [Helligkeit:state] > 50)(set WZ_Licht off)
Der BWM_WZ sendet nur ein "on", kein "off",das ich dann von "aussen" zurücksetze.
Problem ist, so denke ich, das der State im DOIF anders ausgewertet wird, als es beim BWM_WZ angezeigt wird.
Das Reading "e_Bwm_WZ_state" scheint sich im DOIF nicht zu aktualisieren.
([Bwm_WZ:state] eq "on")(set WZ_Anwesend present)(set Bwm_WZ off)
DOELSE
(set WZ_Anwesend absent)
Zitatwird dann das DOIF in #1 getritggert
Keine Ahnung wie das gehen soll, aber Du wirst es wissen.
[Bwm_WZ:state] wertet das reading
state aus, das muss mit dem Internal
STATE nicht unbedingt etwas zu tun haben.
State gibt es genau genommen nicht ;D
Zitat aus der DOIF Doku
ZitatEs kommt immer wieder vor, dass in der Definition des DOIF-Moduls angegebene Readings oder Status zur Laufzeit nicht existieren. Der Wert ist dann leer. Bei der Definition von Status oder Readings kann für diesen Fall ein Vorgabewert oder sogar eine Perlberechnung am Ende des Ausdrucks kommagetrennt angegeben werden.
Dann ändere den Trigger doch auf den Event ([Bwm_WZ:"on"]) allerdings musst Du im Eventmonitor den Event auch kontrollieren, ob wirklich so kommt.
Schau Dir das in der Doku genau an, damit Du weißt was ich meine. Das ist ausführlichst beschrieben!
Gruß Otto
Hallo Otto,
ich habe das einmal geändert,
doch auch so, wird das "off" nicht registriert.
e_Bwm_WZ_events on
Probably associated with
Bwm_WZ off
Irgendwie verhext. Das ist der einzige BWM, mit dem ich das Problem gerade habe.
Vielen dank für deine Gedanken und Hilfe
Hoffi
Mit solchen zerpflückten Schnipseln kann Dir keiner helfen :o über was soll man da nachdenken? Ich weiß weder wie Dein DOIF gerade aussieht noch wie Deine Events aussehen. :o
Also wie sehen die Events von Bwm_WZ aus? Eine komplette Folge von on bis off
Und ein list vom DOIF zu einem konkreten Zeitpunkt und dessen Erklärung (vorm Trigger oder nach dem Trigger oder am Ende wenn es "schief" lief)