Zigbee2mqtt dublowanie wiadomości

Cześć,
chciałem wskoczyć level wyżej i przenieść automatyzacje do Node-red. Tu zaczęły się schody. Zbudowałem flow, ktore obiera wszystko z mqtt, rozdziela wg urzadzenia, a nastepnie na poszczegolne stany. Zauważyłem, ze dość często wiadomości przychodzą podwójnie. Zajrzałem w logi zigbee2mqtt i faktycznie tak się dzieje.

Cytat
debug 2023-10-27 08:48:07: Received MQTT message on ‘zigbee2mqtt/hallway_outdoor_lights_triple_switch/set’ with data ‘{“state_l1”:“ON”}’
debug 2023-10-27 08:48:07: Publishing ‘set’ ‘state’ to ‘hallway_outdoor_lights_triple_switch’
info 2023-10-27 08:48:07: MQTT publish: topic ‘zigbee2mqtt/hallway_outdoor_lights_triple_switch’, payload ‘{“backlight_mode”:“OFF”,“last_seen”:“2023-10-27T08:48:07+02:00”,“linkquality”:142,“power_on_behavior”:“off”,“power_on_behavior_l1”:“off”,“state_l1”:“OFF”,“state_l2”:“OFF”,“state_l3”:“OFF”,“switch_type”:“toggle”}’
info 2023-10-27 08:48:07: MQTT publish: topic ‘zigbee2mqtt/hallway_outdoor_lights_triple_switch’, payload ‘{“backlight_mode”:“OFF”,“last_seen”:“2023-10-27T08:48:07+02:00”,“linkquality”:142,“power_on_behavior”:“off”,“power_on_behavior_l1”:“off”,“state_l1”:“ON”,“state_l2”:“OFF”,“state_l3”:“OFF”,“switch_type”:“toggle”}’
debug 2023-10-27 08:48:07: Received Zigbee message from ‘hallway_outdoor_lights_triple_switch’, type ‘attributeReport’, cluster ‘genOnOff’, data ‘{“onOff”:1}’ from endpoint 1 with groupID 0
info 2023-10-27 08:48:07: MQTT publish: topic ‘zigbee2mqtt/hallway_outdoor_lights_triple_switch’, payload ‘{“action”:“on_l1”,“backlight_mode”:“OFF”,“last_seen”:“2023-10-27T08:48:07+02:00”,“linkquality”:142,“power_on_behavior”:“off”,“power_on_behavior_l1”:“off”,“state_l1”:“ON”,“state_l2”:“OFF”,“state_l3”:“OFF”,“switch_type”:“toggle”}’
info 2023-10-27 08:48:07: MQTT publish: topic ‘zigbee2mqtt/hallway_outdoor_lights_triple_switch’, payload ‘{“action”:“”,“backlight_mode”:“OFF”,“last_seen”:“2023-10-27T08:48:07+02:00”,“linkquality”:142,“power_on_behavior”:“off”,“power_on_behavior_l1”:“off”,“state_l1”:“ON”,“state_l2”:“OFF”,“state_l3”:“OFF”,“switch_type”:“toggle”}’
info 2023-10-27 08:48:07: MQTT publish: topic ‘zigbee2mqtt/hallway_outdoor_lights_triple_switch/action’, payload ‘on_l1’
debug 2023-10-27 08:48:10: Received Zigbee message from ‘hallway_outdoor_lights_triple_switch’, type ‘attributeReport’, cluster ‘genOnOff’, data ‘{“onOff”:1}’ from endpoint 1 with groupID 0
info 2023-10-27 08:48:10: MQTT publish: topic ‘zigbee2mqtt/hallway_outdoor_lights_triple_switch’, payload ‘{“action”:“on_l1”,“backlight_mode”:“OFF”,“last_seen”:“2023-10-27T08:48:10+02:00”,“linkquality”:142,“power_on_behavior”:“off”,“power_on_behavior_l1”:“off”,“state_l1”:“ON”,“state_l2”:“OFF”,“state_l3”:“OFF”,“switch_type”:“toggle”}’
info 2023-10-27 08:48:10: MQTT publish: topic ‘zigbee2mqtt/hallway_outdoor_lights_triple_switch’, payload ‘{“action”:“”,“backlight_mode”:“OFF”,“last_seen”:“2023-10-27T08:48:10+02:00”,“linkquality”:142,“power_on_behavior”:“off”,“power_on_behavior_l1”:“off”,“state_l1”:“ON”,“state_l2”:“OFF”,“state_l3”:“OFF”,“switch_type”:“toggle”}’
info 2023-10-27 08:48:10: MQTT publish: topic ‘zigbee2mqtt/hallway_outdoor_lights_triple_switch/action’, payload ‘on_l1’

Widziałem githubie projektu, że problem się ciągnie od dłuższego czasu… Czy ktoś tu się spotkał z takim problemem? Czy jest inna alternatywa dla zigbee2mqtt?

Spotkał ale nie wiem czy to akurat jest problem.
Chodzi o ustawiany parametr QoS

Nie wiem jak ustawia domyślnie zigbee2mqtt ale możesz go ustawić ręcznie dla każdego urządzenia osobno.
Proponuje na próbę zmienić QoS=0 lub QoS=2 zgodnie po obu stronach : NR i Z2M

Cytat O QoS

Oto jak działa QoS:

  • QoS 0: odebrany najwyżej raz : Pakiet zostaje wysłany i to wszystko. Nie ma potwierdzenia, czy została otrzymana.
  • QoS 1: odebrany co najmniej raz : Pakiet jest wysyłany i przechowywany do czasu, aż klient nie otrzyma potwierdzenia z serwera. MQTT zapewnia, że ​​zostanie odebrany, ale mogą występować duplikaty.
  • QoS 2: odebrany dokładnie raz : taki sam jak QoS 1, ale nie ma duplikatów.

Jeśli chodzi o zużycie danych, oczywiście QoS 2 > QoS 1 > QoS 0, jeśli to Cię martwi.

Niestety to nic nie zmienia

Edit:

To problem ze switch’ami tuya…

tak btw, jak można w modułach tuya zaktualizować firmware?

Mam ikea i zachowują się podobnie.
Obejście jest takie, że w NR można pobierać stan z HA za pomocą event_state.
Wtedy zdarzenia są tylko od zmiany stanu.
Jeśli pobierasz stan w NR bezpośrednio z Mqtt to musisz sam zadbać o to aby wykrywać zmianę stanu.

Wiem, ale takie workaround’y to pudrowanie pryszcza.

Jest taki nod filter, który automatycznie przepuszcza pojedynczo takie same

image

1 Like