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)