Hallo zusammen,
Ausgangslage ist ein Wandschalter "MQTT2_zigbee_Wandschalter_Arbeitszimmer" mit dem reading action eq "single_left".
Beim drücken soll geschaut werden ob das Reading "currentActivity" von "Hub_Arbeitszimmer" eq "Fernsehen" ist, dann "set Firetv_Arbeitszimmer pause".
Ist das Reading "currentActivity" von "Hub_Arbeitszimmer" eq "Solo4k", dann "set Solo4k_Arbeitszimmer pause"
defmod di_links_sub DOIF (([MQTT2_zigbee_Wandschalter_Arbeitszimmer:action] eq "single_left") and ([?Hub_Arbeitszimmer:currentActivity] eq "Fernsehen")) (set Firetv_Arbeitszimmer pause) DOELSEIF ([?Hub_Arbeitszimmer:currentActivity] eq "Solo4k") (set Solo4k_Arbeitszimmer pause)
attr di_links_sub do always
Das funktioniert so nicht, bzw. nur beim Aufruf von checkall.
Was mache ich falsch?
Bitte um Hilfe.
nach dem DOELSEIF fehlt der Trigger vom MQTT2_zigbee.... also genauso wie im ersten Zweig einbauen. Und die Teile vor und nach dem "and" brauchen nicht separat in Klammern gesetzt zu werden.
.... und untereinanderschreiben machts leserlicher....
DOIF (Bedingung)
(Ausführung)
DOELSEIF
(Bedingung2)
(Ausführung2)
etc...
Viel Erfolg! :)
Danke.
Wenn ich das so eingefühgt habe, hatte ich bis eben das Problen, das es immer doppelt ausgeführt wird.
Ich weiss jetzt aber, das es am doppelten Auslesen des payload im Schalterdevice liegt/lag.
Da muss ich das reading "action" entfernen, da der payload inkl den action mit "zigbee2mqtt/Wandschalter_Arbeitszimmer:.* { json2nameValue($EVENT) }" schon erkannt wird.
Es geht jetzt.
Evtl. muss ich bei etwas Ruhe mal an die automtischen Readings der Schalter ran.