DOIF führt Kommando nicht aus

Begonnen von rih, 18 November 2019, 23:27:30

Vorheriges Thema - Nächstes Thema

rih

Hallo,

ich möchte die Hintergrundbeleuchtung meines LCD's zu bestimmten Zeiten ein- / ausschalten. Mittels einem Taster möchte ich die Beleuchtung aber auch jederzeit ein- / ausschalten können.
Das automatische Einschalten morgens sowie das Toggeln mit dem Taster funktioniert. Was nicht funktioniert, ist das automatische Abschalten um 23 Uhr. Das DOIF wechselt zwar in den 2. Zweig (cmd_2 steht auch im Status), doch das Kommando wird offensichtlich nicht abgesetzt. Setze ich das Kommando danach manuell ab, dann schaltet das Display ab. Kann mir da gerade keinen Reim drauf machen.  Die Repeatcmd / Repeatsame sind nur ein Versuch, um eventuelle Wlan-Probleme auszuschließen. Wo liegt der Fehler?

Definition:
([08:45] or ([Wemos_Taster:Switch] eq "on" and [$SELF] eq "cmd_2")) (set Wemos_LCD lcdcmd on) DOELSEIF ([23:00] or ([Wemos_Taster:Switch] eq "on" and [$SELF] eq "cmd_1")) (set Wemos_LCD lcdcmd off)

List des DOIF im "Fehlerfall":
Internals:
   DEF        ([08:45] or ([Wemos_Taster:Switch] eq "on" and [$SELF] eq "cmd_2")) (set Wemos_LCD lcdcmd on) DOELSEIF ([23:00] or ([Wemos_Taster:Switch] eq "on" and [$SELF] eq "cmd_1")) (set Wemos_LCD lcdcmd off)
   FUUID      5c59fd06-f33f-17f9-7f6e-dbe82c4800cf6acf
   MODEL      FHEM
   NAME       LCD_HGB
   NR         214
   NTFY_ORDER 50-LCD_HGB
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2019-11-18 23:04:40   Device          Wemos_Taster
     2019-11-18 23:00:00   cmd             2
     2019-11-18 23:00:00   cmd_count       1
     2019-11-18 23:00:00   cmd_event       timer_2
     2019-11-18 23:00:00   cmd_nr          2
     2019-11-17 23:30:49   mode            enabled
     2019-11-18 23:00:00   state           cmd_2
     2019-11-18 08:45:00   timer_01_c01    19.11.2019 08:45:00
     2019-11-18 23:00:00   timer_02_c02    19.11.2019 23:00:00
     2019-11-18 23:00:02   wait_timer      no timer
   Regex:
     accu:
   attr:
     cmdState:
     repeatcmd:
       5
       5
     repeatsame:
       1
       1
     wait:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday) or (::ReadingValDoIf($hash,'Wemos_Taster','Switch') eq "on" and ::InternalDoIf($hash,'LCD_HGB','STATE') eq "cmd_2")
     1          ::DOIF_time_once($hash,1,$wday) or (::ReadingValDoIf($hash,'Wemos_Taster','Switch') eq "on" and ::InternalDoIf($hash,'LCD_HGB','STATE') eq "cmd_1")
   days:
   devices:
     0           Wemos_Taster LCD_HGB
     1           Wemos_Taster LCD_HGB
     all         Wemos_Taster LCD_HGB
   do:
     0:
       0          set Wemos_LCD lcdcmd on
     1:
       0          set Wemos_LCD lcdcmd off
     2:
   helper:
     event      absent
     globalinit 1
     last_timer 2
     sleepdevice timer_2
     sleepsubtimer -1
     sleeptimer -1
     timerdev   
     timerevent timer_2
     triggerDev Wemos_Taster
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: timer_2
       state: cmd_2
     timerevents:
       timer_2
     timereventsState:
       state: absent
     triggerEvents:
       absent
     triggerEventsState:
       state: absent
   internals:
     0           LCD_HGB:STATE
     1           LCD_HGB:STATE
     all         LCD_HGB:STATE
   interval:
   intervalfunc:
   itimer:
   localtime:
     0          1574149500
     1          1574200800
   readings:
     0           Wemos_Taster:Switch
     1           Wemos_Taster:Switch
     all         Wemos_Taster:Switch
   realtime:
     0          08:45:00
     1          23:00:00
   time:
     0          08:45:00
     1          23:00:00
   timeCond:
     0          0
     1          1
   timer:
     0          0
     1          0
   timers:
     0           0
     1           1
   trigger:
   triggertime:
     1574149500:
       localtime  1574149500
       hash:
     1574200800:
       localtime  1574200800
       hash:
   uiState:
   uiTable:
Attributes:
   repeatcmd  5:5
   repeatsame 1:1

amenomade

Zitatdoch das Kommando wird offensichtlich nicht abgesetzt
Sicher? Ich sehe keinen Grund. Wenn er auf cmd_2 gewechselt hat, hat er bestimmt das Kommando abgesetzt. Hast Du eine Log von Wemos_LCD?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

rih

Sicher bin ich nicht. Dagegen spricht auch: wenn ich zum Test die Schaltzeiten auf z.B. ein = 10:00, aus = 10:01 lege, dann wird die Hintergrundbeleuchtung entsprechend geschaltet. Was da um 23:00 Uhr anders sein soll, erschließt sich mir allerdings nicht.

Logfile habe ich jetzt eins angelegt, gefiltert auf lcdcmd (sonst wird es zuviel). Mal beobachten, was da im Laufe des Tages bis nach 23:00 Uhr passiert. Danke für den Tipp.

Per


rih

ZitatCode: [Auswählen]
Attributes:
   repeatcmd  5:5
   repeatsame 1:1
Wozu dient das?

Wie ich oben schon schrieb, war das nur ein Versuch und so gedacht, dass das Kommando in beiden Zeigen nach 5 s wegen eventuellen Wlan-Problemen einmal wiederholt wird. Komischerweise funktioniert die Wiederholung aber auch nicht. Ich nehme an, dass Deine Frage darauf abzielt. Weil sie nicht funktionieren kann?
Tut aber nichts zur Sache. Auch schon ohne die Repeats hat das Display nicht abgeschaltet. Im Logfile steht bis jetzt nichts Auffälliges.

Per

A: statt Status würde ich den Event abfragen.
B: was sagt denn der Event-Log? Wird dort das Doing angezeigt?

rih

Zu A: bei der Tasterabfrage frage ich nun das Event ab. Beim $SELF gelingt mir das leider nicht. Allerdings ist ja nicht die Tastersteuerung das Problem, sondern die Zeitsteuerung.

Zu B: ja, zumindest bei den Tests wird das Event LCD_HGB off  im Eventmonitor aufgelistet.

Ich hoffe, dass ich Deine Anregungen richtig verstanden habe.  Die Repeats habe ich wieder gelöscht. Mal schauen, was um 23 Uhr passiert.
Aktueller Stand des DOIF:
([18:30] or ([Wemos_Taster:"Switch: on"] and [$SELF] eq "cmd_2")) (set Wemos_LCD lcdcmd on) DOELSEIF ([23:00] or ([Wemos_Taster:"Switch: on"] and [$SELF] eq "cmd_1")) (set Wemos_LCD lcdcmd off)

rih

OK, nun hat es auch um 23 Uhr wie bei den Tests zuvor funktioniert. Einträge im Logfile und Eventmonitor wie erwartbar. Mal weiter beobachten.