Ich steuere zwei HUEGruppen in der Küche und lasse mir nach dem Zustandswechsel über TelegramBot eine Nachricht zukommen. Obwohl ich nur einen Zustand triggere, treffen zwei Nachrichten ein.
Doch ersteinmal das RAW-Listing:
defmod di_VLGruppe023 DOIF ([Li_Ku_HUEGroup4:state] eq "on") (set VillaLuehl message Die Arbeitsbankbeleuchtung in der Küche wurde eingeschaltet)\
DOELSEIF ([Li_Ku_HUEGroup4:state] eq "off") (set VillaLuehl message Die Arbeitsbankbeleuchtung in der Küche wurde ausgeschaltet)\
DOELSEIF ([Li_Ku_HUEGroup2:state] eq "on") (set VillaLuehl message Die Regalbeleuchtung in der Küche wurde eingeschaltet) \
DOELSEIF ([Li_Ku_HUEGroup2:state] eq "off") (set VillaLuehl message Die Regalbeleuchtung in der Küche wurde ausgeschaltet)\
attr di_VLGruppe023 checkReadingEvent 1
attr di_VLGruppe023 group Küche
attr di_VLGruppe023 repeatsame 1:1:1:1
attr di_VLGruppe023 room TelegramBot->Küche
attr di_VLGruppe023 sortby 3
setstate di_VLGruppe023 cmd_4
setstate di_VLGruppe023 2018-05-07 12:50:39 Device Li_Ku_HUEGroup2
setstate di_VLGruppe023 2018-05-07 12:50:39 cmd 4
setstate di_VLGruppe023 2018-05-07 12:50:39 cmd_count 1
setstate di_VLGruppe023 2018-05-07 12:50:39 cmd_event Li_Ku_HUEGroup2
setstate di_VLGruppe023 2018-05-07 12:50:39 cmd_nr 4
setstate di_VLGruppe023 2018-05-07 12:50:39 e_Li_Ku_HUEGroup2_state off
setstate di_VLGruppe023 2018-05-07 12:50:39 e_Li_Ku_HUEGroup4_state off
setstate di_VLGruppe023 2018-05-06 23:08:08 mode enabled
setstate di_VLGruppe023 2018-05-07 12:50:39 state cmd_4
setstate di_VLGruppe023 2018-05-07 11:20:03 wait_timer no timer
Das bedeutet, dass der Trigger [Li_Ku_HUEGroup4:state] eq "on" gleichzeitig mit dem Trigger [Li_Ku_HUEGroup2:state] eq "on" gesendet wird.
Bedingt durch HUE (was ich nicht beeinflussen kann) wird also bei einem Statuswechsel der Zustand aller Gruppen übermittelt. Hinzu kommen in unregelmäßigen Abständen Statusmeldungen wie diese hier, die natürlich das DOIF triggern.
2018-05-07 12:12:43 DOIF di_VLGruppe023 cmd_event: Li_Ku_HUEGroup4
2018-05-07 12:12:43 HUEDevice Li_Ku_HUEGroup4 all_on: 0
2018-05-07 12:12:43 HUEDevice Li_Ku_HUEGroup4 any_on: 0
2018-05-07 12:12:43 HUEDevice Li_Ku_HUEGroup4 off
2018-05-07 12:12:44 HUEDevice Li_Ku_HUEGroup4 off
2018-05-07 12:12:44 HUEDevice Li_Sz_HUEGroup3 off
2018-05-07 12:12:44 DOIF di_VLGruppe023 cmd_event: Li_Ku_HUEGroup22018-05-07 12:12:43 DOIF di_VLGruppe023 cmd_event: Li_Ku_HUEGroup4
Wie kann ich sicherstellen, das nur die Trigger beachtet werden, die sich geändert haben und nicht die unverändert geblieben sind?
Ich habe offensichtlich das DOIF-Modul noch nicht richtig verinnerlicht. Ich lese und lese, denke und denke - alles hat nicht gebracht (repeatsame, checkReadingEvent). Ich hatte schon versucht mit notify zu arbeiten, aber dafür stecke ich in der FHEM-Materie nicht tief genug drin. Wo kann ich meinen Code verändern/verbessern/korrigieren?
Gruß Eberhard
Zitat von: FHEm2005 am 07 Mai 2018, 12:54:31Wie kann ich sicherstellen, das nur die Trigger beachtet werden, die sich geändert haben und nicht die unverändert geblieben sind?
Mittels des Attributes
event-on-change-reading beim überwachten Device (nicht beim DOIF!).
Im Eventlog kannst du feststellen, ob das auslösende Event oder das DOIF zweimal auslöst.
OMG - wie blöd kann man(n) eigentlich sein. Darauf hätte ich auch kommen müssen. Einfach mal die Sichtweise ändern. Um die Statusmeldungen ist es ziemlich ruhig geworden....
Herzlichen Dank! Gruß Eberhard