Скрипт трижды отрабатывает одно сообщение топика zigbee2mqtt

Здравствуйте! Есть такой скрипт обработки нажатия кнопки zigbee выключателя aqara:

 function AqaraVannayaClick(inValue){
   log.info("TestAqara", inValue);
   if (inValue == "single") {
       dev["wb-mr6cv3_195/K1"] = !dev["wb-mr6cv3_195/K1"];
   } else if (inValue == "double") {
       dev["wb-mr6cv3_195/K2"] = !dev["wb-mr6cv3_195/K2"];
   }
 }
 
 trackMqtt("/devices/AqaraVannayaClick/controls/action", function(newValue) {
   AqaraVannayaClick(newValue.value); 
});

При одном сообщении от zigbee2mqtt:

20-02-2024 21:35:17.905 [zigbee2mqtt]	Zigbee2MQTT:info  2024-02-20 18:35:17: MQTT publish: topic 'zigbee2mqtt/AqaraVannayaClick', payload '{"action":"single","battery":100,"device_temperature":34,"last_seen":1708454117901,"linkquality":25,"power_outage_count":228,"voltage":3025}'

Скрипт отрабатывает трижды:

20-02-2024 21:35:18.011 [wb-rules]	INFO: [rule info] TestAqara single
20-02-2024 21:35:18.007 [wb-rules]	INFO: [rule info] TestAqara single
20-02-2024 21:35:18.001 [wb-rules]	INFO: [rule info] TestAqara single

В чем может быть проблема?

Добрый день.
После перезапуска wb-rules - так же?

Да, перезапуск не помогает

Довольно интересно.
Попробую воспроизвести.
Итак, использую sonoff кнопку. Ее топик в z2m

Запускаю и нажимаю два раза короткое и один раз длинное:

root@wirenboard-AQASN7R6:~# mosquitto_sub -v -t "zigbee2mqtt/Button_on_table"
zigbee2mqtt/Button_on_table {"action":"single","battery":100,"last_seen":1708518918757,"linkquality":33,"voltage":3000}
zigbee2mqtt/Button_on_table {"action":"single","battery":100,"last_seen":1708518996147,"linkquality":31,"voltage":3000}
zigbee2mqtt/Button_on_table {"action":"long","battery":100,"last_seen":1708519004136,"linkquality":31,"voltage":3000}

обрабатываю с помощью

function makeRule (ruleName, devTopick, outTopick){
  defineRule(ruleName, {
  whenChanged: devTopick,
    then: function(newValue, devName, cellName) {
      if (newValue){
        log.info("Rile ",ruleName, " new ", newValue)
        dev[devName][cellName]="";
      }
    }
  })

}

makeRule("testZigbeeButton","Button_on_table/action", "");

Вижу ожидаемое:
Screenshot_20240221_154435

Абсолютно такая же беда (((
а сейчас даже вот так за одно нажатие

2024-02-21 16:54:33TestAqara single

2024-02-21 16:54:33TestAqara single

2024-02-21 16:54:33TestAqara single

2024-02-21 16:54:33TestAqara single

2024-02-21 16:54:34TestAqara single

2024-02-21 16:54:34TestAqara single

2024-02-21 16:54:34TestAqara single

2024-02-21 16:54:34TestAqara single

2024-02-21 16:54:34TestAqara single

2024-02-21 16:54:34TestAqara single

2024-02-21 16:54:34TestAqara single

но это возникает после длительной работы контроллера …
после перезагрузки приходит по одному разу

Поднимал вопрос в теме:

весьма странная обработка событий …

А после перезапуска wb-rules?

Точно не скажу, нужно посмотреть, если будет ещё такая проблема

После перезагрузки контроллера проблема не ушла. После ребута перезапустил wb-rules, тогда помогло. Ранее ребут контроллера или службы не решало проблемы

Попробую воспроизвести.

Ситуация ухудшилась: после последней перезагрузки 22.02 работало без проблем в течении дня, на следующий день “затроение” вернулось, сегодня уже скрипт на одно нажатие отрабатывает 5 раз

26-02-2024 07:42:18.657 [wb-rules]	INFO: [rule info] TestAqara single
26-02-2024 07:42:18.653 [wb-rules]	INFO: [rule info] TestAqara single
26-02-2024 07:42:18.649 [wb-rules]	INFO: [rule info] TestAqara single
26-02-2024 07:42:18.646 [wb-rules]	INFO: [rule info] TestAqara single
26-02-2024 07:42:18.640 [wb-rules]	INFO: [rule info] TestAqara single

На контроллер после последнего ребута даже не заходил, никаких действий не проводил

А какое количество экземпляров

trackMqtt("/devices/AqaraVannayaClick/controls/action", function(newValue) {
   AqaraVannayaClick(newValue.value); 

запущено?

Подскажите где это можно посмотреть?

Посмотреть - не предусмотрена возможность перечислить правила.
Но при написании ПО (обычно) предусматривается создание не более одного экземпляра. Проще, пожалуй контролировать выводом в лог при создании экземпляра.

Существует в одном экземпляре

У меня не удается воспроизвести подобное. Пожалуйста создайте отдельное правило в отдельном скрипте для регистрации, ну и выводите в него каждое опубликованное значение и сам топик.

Выполнили полный сброс используя прошивку 202402261201_wb-2401_bullseye_wb7x
Из ПО установил только то, что необходимо для zigbee2mqtt, ситуация не поменялась и стала хуже.
Создал такое отдельное правило:

trackMqtt("/devices/AqaraVannayaClick/controls/action", function(newValue) {
  log.info("trouble_aqara: /devices/AqaraVannayaClick/controls/action", dev["AqaraVannayaClick/action"]);
  log.info("trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen", dev["AqaraVannayaClick/last_seen"]);
  log.info("trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality", dev["AqaraVannayaClick/linkquality"]);
});

Это реакция на одно нажатие:

28-02-2024 10:56:13.075 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:13.073 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:13.072 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:13.066 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:13.065 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:13.063 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:13.057 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:13.055 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:13.051 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:13.044 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:13.044 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:13.040 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:13.038 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:13.032 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:13.030 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:13.028 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:13.023 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:13.020 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:13.018 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:13.011 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:13.011 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:13.009 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:13.007 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:13.001 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:12.999 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:12.997 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:12.992 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:12.990 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:12.988 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:12.975 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:12.975 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:12.974 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:12.972 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single
28-02-2024 10:56:12.970 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/linkquality 47
28-02-2024 10:56:12.968 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/last_seen 1709106972844
28-02-2024 10:56:12.966 [wb-rules]	INFO: [rule info] trouble_aqara: /devices/AqaraVannayaClick/controls/action single

28-02-2024 10:56:12.848 [zigbee2mqtt]	Zigbee2MQTT:info  2024-02-28 07:56:12: MQTT publish: topic 'zigbee2mqtt/AqaraVannayaClick', payload '{"action":"single","last_seen":1709106972844,"linkquality":47}'```

Пожалуйста подпишитесь с помощью mosquitto_sub на топик устройства в z2m и на топик после шлюза. У меня одной публикации z2m соответствует одна публикация в топик:

mosquitto_sub -v -t zigbee2mqtt/Button2 -t /devices/Button2/controls/action
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117139177,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117142895,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117144442,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117145882,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
^Croot@wirenboard-AQASN7R6:~# mosquitto_sub -v -t zigbee2mqtt/Button2 -t /devices/Button2/controls/action
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117154840,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117156936,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117158929,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117160395,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"double","battery":100,"last_seen":1709117161554,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action double
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117162342,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"single","battery":100,"last_seen":1709117166879,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action single
zigbee2mqtt/Button2 {"action":"long","battery":100,"last_seen":1709117171783,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action long
zigbee2mqtt/Button2 {"action":"double","battery":100,"last_seen":1709117173951,"linkquality":143,"voltage":3100}
/devices/Button2/controls/action double

Хотя, кажется у меня похожее воспроизводится, сейчас подебажу в эту сторону.

Да, нашел и описал баг, разработчики исправят.

фикс в 2401, wb-zigbee2mqtt=1.3.4

1 лайк