Hallo,
ich habe mehrere Zigbee Steckdosen (Lidl) in FHEM eingebunden, das Template ist Zigbee2mqtt_plug. Die Steckdosen lassen sich auch schalten. Soweit, sogut.
Nun habe ich mir ein DOIF erstellt, welches auf den Status off abfragt und das schlägt fehl. Kein syntaktisches Problem! Der Event Monitor zeigt folgendes:
2025-10-29 15:52:13 MQTT2_DEVICE MQTT2_zigbee_UG_AZ_ZigBee_Plug_1 set_on
2025-10-29 15:52:13 MQTT2_DEVICE MQTT2_zigbee_UG_AZ_ZigBee_Plug_1 off
2025-10-29 15:52:13 MQTT2_DEVICE MQTT2_zigbee_UG_AZ_ZigBee_Plug_1 on
2025-10-29 15:53:14 MQTT2_DEVICE MQTT2_zigbee_UG_AZ_ZigBee_Plug_1 set_off
2025-10-29 15:53:14 MQTT2_DEVICE MQTT2_zigbee_UG_AZ_ZigBee_Plug_1 on
2025-10-29 15:53:14 MQTT2_DEVICE MQTT2_zigbee_UG_AZ_ZigBee_Plug_1 off
Wie zu sehen ist, kommt nach dem set_on erst einmal der Status off, bevor zu guter letzt tatsächlich on im state erscheint. Andersherum natürlich ebenso.
Ich kann also die Steckdose nicht einschaten ohne dass mein DOIF auf das off triggert.
Als Übeltäter habe ich - so glaube ich - die folgende Zeile ausgemacht:
attr MQTT2_zigbee_UG_AZ_ZigBee_Plug_1 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT);; $ret->{state}=lc($ret->{state}) if defined $ret->{state};; return $ret }
Der Vollständigkeit halber hier das komplette List vom Device
Internals:
CID zigbee_UG_AZ_ZigBee_Plug_1
DEF zigbee_UG_AZ_ZigBee_Plug_1
FUUID 6728c282-f33f-21e6-4e1e-21983cad22ee1ce7
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_192.168.17.86_45322
MQTT2_FHEM_Server_MSGCNT 571
MQTT2_FHEM_Server_TIME 2025-10-29 16:29:15
MSGCNT 571
NAME MQTT2_zigbee_UG_AZ_ZigBee_Plug_1
NR 8338
STATE click
TYPE MQTT2_DEVICE
eventCount 211
OLDREADINGS:
READINGS:
2025-10-29 14:03:25 IODev MQTT2_FHEM_Server
2024-11-05 09:30:35 associatedWith MQTT2_zigbee_pi
2025-10-29 15:51:39 attrTemplateVersion 20220909
2025-10-29 16:29:15 child_lock UNLOCK
2025-10-29 16:29:15 color_mode xy
2025-10-29 16:29:15 current 0
2025-10-29 16:29:15 energy 0.11
2025-10-29 16:29:15 indicator_mode off/on
2025-10-29 16:29:15 last_seen 2025-10-29T15:29:15.065Z
2025-10-29 16:29:15 linkquality 177
2025-10-29 16:29:15 power 0
2025-10-29 16:29:15 power_outage_memory off
2025-10-29 16:29:15 state off
2025-10-29 16:29:15 update_available false
2025-10-29 16:29:15 update_installed_version 192
2025-10-29 16:29:15 update_latest_version 192
2025-10-29 16:29:15 update_state idle
2025-10-29 16:29:15 voltage 235
Attributes:
DbLogExclude .*
comment $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
devStateIcon {my $light = FW_makeImage(ReadingsVal($name,'state','off')); my $current = ReadingsVal($name,'current',0); my $pwr = ReadingsVal($name,'power',0); my $energy = ReadingsVal($name,'energy',0); qq(<div> <a href="/fhem?cmd.dummy=set $name toggle&XHR=1">$light</a> Aktuell: $current A Leistung.: $pwr W<b></b>)}
devicetopic zigbee2mqtt/UG_AZ_ZigBee_Plug_1
event-on-change-reading state
genericDeviceType switch
icon message_socket
model zigbee2mqtt_plug
readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
room MQTT2_DEVICE
setList on:noArg $DEVICETOPIC/set {"state":"ON"}
off:noArg $DEVICETOPIC/set {"state":"OFF"}
toggle:noArg $DEVICETOPIC/set {"state":"TOGGLE"}
setStateList on off toggle
stateFormat click
userattr alle_Rauchmelder_Struc alle_Rauchmelder_Struc_map structexclude
Habt ihr eine Idee, was ich ändern kann/muss?
Vielen Dank im voraus,
Gruß Wolfgang
Zeig uns bitte die "unverdauten" MQTT Daten beim Schalten.
Diese sieht man in der Detailansicht vom MQTT2_FHEM_Server, wenn man oben auf "Show MQTT traffic" klickt.
Hallo Rudi,
wow: was für eine prompte Reaktion :-) :) :)
17:55:22.908
SENT
zigbee2mqtt/UG_AZ_ZigBee_Plug_1/set
{"state":"ON"}
17:55:23.285
zigbee_pi
zigbee2mqtt/bridge/logging
{"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/UG_AZ_ZigBee_Plug_1', payload '{\"child_lock\":\"UNLOCK\",\"color_mode\":\"xy\",\"current\":0,\"energy\":0.11,\"indicator_mode\":\"off/on\",\"last_seen\":\"2025-10-29T16:55:23.284Z\",\"linkquality\":182,\"power\":0,\"power_outage_memory\":\"off\",\"state\":\"OFF\",\"update\":{\"installed_version\":192,\"latest_version\":192,\"state\":\"idle\"},\"update_available\":false,\"voltage\":230}'"}
17:55:23.305
zigbee_pi
zigbee2mqtt/UG_AZ_ZigBee_Plug_1
{"child_lock":"UNLOCK","color_mode":"xy","current":0,"energy":0.11,"indicator_mode":"off/on","last_seen":"2025-10-29T16:55:23.284Z","linkquality":182,"power":0,"power_outage_memory":"off","state":"OFF","update":{"installed_version":192,"latest_version":192,"state":"idle"},"update_available":false,"voltage":230}
17:55:23.375
zigbee_pi
zigbee2mqtt/bridge/logging
{"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/UG_AZ_ZigBee_Plug_1', payload '{\"child_lock\":\"UNLOCK\",\"color_mode\":\"xy\",\"current\":0,\"energy\":0.11,\"indicator_mode\":\"off/on\",\"last_seen\":\"2025-10-29T16:55:23.284Z\",\"linkquality\":182,\"power\":0,\"power_outage_memory\":\"off\",\"state\":\"ON\",\"update\":{\"installed_version\":192,\"latest_version\":192,\"state\":\"idle\"},\"update_available\":false,\"voltage\":230}'"}
17:55:23.395
zigbee_pi
zigbee2mqtt/UG_AZ_ZigBee_Plug_1
{"child_lock":"UNLOCK","color_mode":"xy","current":0,"energy":0.11,"indicator_mode":"off/on","last_seen":"2025-10-29T16:55:23.284Z","linkquality":182,"power":0,"power_outage_memory":"off","state":"ON","update":{"installed_version":192,"latest_version":192,"state":"idle"},"update_available":false,"voltage":230}
17:55:23.410
zigbee_pi
zigbee2mqtt/bridge/logging
{"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/UG_AZ_ZigBee_Plug_1', payload '{\"child_lock\":\"UNLOCK\",\"color_mode\":\"xy\",\"current\":0,\"energy\":0.11,\"indicator_mode\":\"off/on\",\"last_seen\":\"2025-10-29T16:55:23.348Z\",\"linkquality\":181,\"power\":0,\"power_outage_memory\":\"off\",\"state\":\"ON\",\"update\":{\"installed_version\":192,\"latest_version\":192,\"state\":\"idle\"},\"update_available\":false,\"voltage\":230}'"}
17:55:23.430
zigbee_pi
zigbee2mqtt/UG_AZ_ZigBee_Plug_1
{"child_lock":"UNLOCK","color_mode":"xy","current":0,"energy":0.11,"indicator_mode":"off/on","last_seen":"2025-10-29T16:55:23.348Z","linkquality":181,"power":0,"power_outage_memory":"off","state":"ON","update":{"installed_version":192,"latest_version":192,"state":"idle"},"update_available":false,"voltage":230}
17:55:24.931
SENT
zigbee2mqtt/UG_AZ_ZigBee_Plug_1/set
{"state":"OFF"}
17:55:25.335
zigbee_pi
zigbee2mqtt/bridge/logging
{"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/UG_AZ_ZigBee_Plug_1', payload '{\"child_lock\":\"UNLOCK\",\"color_mode\":\"xy\",\"current\":0,\"energy\":0.11,\"indicator_mode\":\"off/on\",\"last_seen\":\"2025-10-29T16:55:25.334Z\",\"linkquality\":183,\"power\":0,\"power_outage_memory\":\"off\",\"state\":\"ON\",\"update\":{\"installed_version\":192,\"latest_version\":192,\"state\":\"idle\"},\"update_available\":false,\"voltage\":230}'"}
17:55:25.355
zigbee_pi
zigbee2mqtt/UG_AZ_ZigBee_Plug_1
{"child_lock":"UNLOCK","color_mode":"xy","current":0,"energy":0.11,"indicator_mode":"off/on","last_seen":"2025-10-29T16:55:25.334Z","linkquality":183,"power":0,"power_outage_memory":"off","state":"ON","update":{"installed_version":192,"latest_version":192,"state":"idle"},"update_available":false,"voltage":230}
17:55:25.369
zigbee_pi
zigbee2mqtt/bridge/logging
{"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/UG_AZ_ZigBee_Plug_1', payload '{\"child_lock\":\"UNLOCK\",\"color_mode\":\"xy\",\"current\":0,\"energy\":0.11,\"indicator_mode\":\"off/on\",\"last_seen\":\"2025-10-29T16:55:25.334Z\",\"linkquality\":183,\"power\":0,\"power_outage_memory\":\"off\",\"state\":\"OFF\",\"update\":{\"installed_version\":192,\"latest_version\":192,\"state\":\"idle\"},\"update_available\":false,\"voltage\":230}'"}
17:55:25.390
zigbee_pi
zigbee2mqtt/UG_AZ_ZigBee_Plug_1
{"child_lock":"UNLOCK","color_mode":"xy","current":0,"energy":0.11,"indicator_mode":"off/on","last_seen":"2025-10-29T16:55:25.334Z","linkquality":183,"power":0,"power_outage_memory":"off","state":"OFF","update":{"installed_version":192,"latest_version":192,"state":"idle"},"update_available":false,"voltage":230}
17:55:25.405
zigbee_pi
zigbee2mqtt/bridge/logging
{"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/UG_AZ_ZigBee_Plug_1', payload '{\"child_lock\":\"UNLOCK\",\"color_mode\":\"xy\",\"current\":0,\"energy\":0.11,\"indicator_mode\":\"off/on\",\"last_seen\":\"2025-10-29T16:55:25.382Z\",\"linkquality\":182,\"power\":0,\"power_outage_memory\":\"off\",\"state\":\"OFF\",\"update\":{\"installed_version\":192,\"latest_version\":192,\"state\":\"idle\"},\"update_available\":false,\"voltage\":230}'"}
17:55:25.424
zigbee_pi
zigbee2mqtt/UG_AZ_ZigBee_Plug_1
{"child_lock":"UNLOCK","color_mode":"xy","current":0,"energy":0.11,"indicator_mode":"off/on","last_seen":"2025-10-29T16:55:25.382Z","linkquality":182,"power":0,"power_outage_memory":"off","state":"OFF","update":{"installed_version":192,"latest_version":192,"state":"idle"},"update_available":false,"voltage":230}
17:55:44.662
zigbee_pi
zigbee2mqtt/bridge/logging
{"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/UG_AZ_ZigBee_Plug_1', payload '{\"child_lock\":\"UNLOCK\",\"color_mode\":\"xy\",\"current\":0,\"energy\":0.11,\"indicator_mode\":\"off/on\",\"last_seen\":\"2025-10-29T16:55:44.659Z\",\"linkquality\":182,\"power\":0,\"power_outage_memory\":\"off\",\"state\":\"OFF\",\"update\":{\"installed_version\":192,\"latest_version\":192,\"state\":\"idle\"},\"update_available\":false,\"voltage\":230}'"}
17:55:44.683
zigbee_pi
zigbee2mqtt/UG_AZ_ZigBee_Plug_1
{"child_lock":"UNLOCK","color_mode":"xy","current":0,"energy":0.11,"indicator_mode":"off/on","last_seen":"2025-10-29T16:55:44.659Z","linkquality":182,"power":0,"power_outage_memory":"off","state":"OFF","update":{"installed_version":192,"latest_version":192,"state":"idle"},"update_available":false,"voltage":230}
17:55:58.190
zigbee_pi
zigbee2mqtt/bridge/logging
{"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/UG_AZ_ZigBee_Plug_1', payload '{\"child_lock\":\"UNLOCK\",\"color_mode\":\"xy\",\"current\":0,\"energy\":0.11,\"indicator_mode\":\"off/on\",\"last_seen\":\"2025-10-29T16:55:58.188Z\",\"linkquality\":180,\"power\":0,\"power_outage_memory\":\"off\",\"state\":\"OFF\",\"update\":{\"installed_version\":192,\"latest_version\":192,\"state\":\"idle\"},\"update_available\":false,\"voltage\":228}'"}
17:55:58.210
zigbee_pi
zigbee2mqtt/UG_AZ_ZigBee_Plug_1
{"child_lock":"UNLOCK","color_mode":"xy","current":0,"energy":0.11,"indicator_mode":"off/on","last_seen":"2025-10-29T16:55:58.188Z","linkquality":180,"power":0,"power_outage_memory":"off","state":"OFF","update":{"installed_version":192,"latest_version":192,"state":"idle"},"update_available":false,"voltage":228}
Danke und Gruß
Wolfgang
Die zigbee2mqtt/bridge/logging Daten sind fuer die Aufgabe irrelevant.
Bei den zigbee2mqtt/UG_AZ_ZigBee_Plug_1 Daten nach "set on" habe ich die gemeinsamen Teile rausgeschnitten.
Was bleibt ist:
17:55:23.305 ... {...,"state":"OFF",...}
17:55:23.395 ... {...,"state":"ON", ...}
17:55:23.430 ... {...,"state":"ON", ...}
Nach "set off" kommt:
17:55:25.355 ... {...,"state":"ON", ...}
17:55:25.390 ... {...,"state":"OFF",...}
17:55:25.424 ... {...,"state":"OFF",...}
17:55:44.683 ... {...,"state":"OFF",...}
17:55:58.210 ... {...,"state":"OFF",...}
wobei die Nachrichten #4 und #5 deutlich spaeter kommen.
Ich wuerde erst versuchen im Geraet diesen Unsinn abzustellen.
Wenn das nicht geht, dann kann man das setStateList Attribut entfernen: zusammen mit "event-on-change-reading state" werden die ueberfluessigen Events gefiltert.
Wenn das auch unpassend ist, dann muss man beim set einen "Merker" setzen (setList als perl Ausdruck), und die naechste Nachricht ignorieren, im perl Ausdruck vom readingList.
Und hoffen, dass das Geraet sich an diesem Muster haelt.
Hmm. Da stimmt irgendwas nicht, irgendwie werden da events munter doppelt gesendet. Klingt für mich aber eher nach einem Problem bei Z2M und nicht bei FHEM.
Kannst du bitte der Vollständigkeit halber noch
- ein list von deinem brigde-device posten?
- und die configuration.yaml von Z2M?
- und – am wichtigsten – einen Logauszug von Z2M beim schalten?
Die verwendete z2m-Version wäre auch noch relevant zu zeigen. Nicht, dass das Problem schon behoben wurde...
Wenn das Attribut setStateList auf ignore gesetzt ist, kommt keine falsche Statusmeldung, obwohl sich dadurch am Verhalten von z2m nichts ändert. D.h. es erfolgen zwei MQTT-Publishes (1.Publish mit altem Status, 2.Publish mit neuem Status).
Mit ignore verhinderst jetzt das set_on/off in state, das Problem mit deinem DOIF, welches auf off triggert, hat sich damit doch aber nicht gelöst?
Schreibst doch selbst, das sich am Verhalten von z2m nichts geändert hat und weiterhin erstmal der alte Status geschickt wird.