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
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?
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.
Zitat von: rih am 18 November 2019, 23:27:30
Attributes:
repeatcmd 5:5
repeatsame 1:1
Wozu dient das?
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.
A: statt Status würde ich den Event abfragen.
B: was sagt denn der Event-Log? Wird dort das Doing angezeigt?
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)
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.