Самопроизвольное срабатывание скриптов wb-rules на счетчики нажатий

Добрый день.
Вчера в доме самопроизвольно выключился весь свет. Изучая логи выяснил, что была самопроизвольная сработка скрипта мастер выключателя на счетчик долгих нажатий (как и остальных правил, завязанных на счетчики нажатий).

Судя по логам произошло это после того, как отвалился и заново восстановился mqtt-бридж из Home Assistant (крутится на отдельном мини PC в локальной сети).

Mar 03 21:33:36 wirenboard-AC6A3GB6 mosquitto[3819]: 1741030416: Client core-mosquitto.wb-bridge closed its connection.
Mar 03 21:34:42 wirenboard-AC6A3GB6 mosquitto[3819]: 1741030482: New connection from 192.168.88.100:57352 on port 1883.
Mar 03 21:34:42 wirenboard-AC6A3GB6 mosquitto[3819]: 1741030482: New bridge connected from 192.168.88.100:57352 as core-mosquitto.wb-bridge (p2, c1, k60).
...
Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching action on 'wb-mdm3_163/Input 1 Long Press Counter'   ---> сработка правила на счетчик

Конфиг mqtt-моста на HA
connection wb-bridge
address 192.168.88.150:1883
topic /devices/+/controls/+/# both 2 wb ""
try_private true
cleansession true
notifications true
Логи
Mar 03 21:11:38 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:11:38Z E! [inputs.mqtt_consumer::mqtt-consumer-string] Error in plugin: connection lost: pingresp not received, disconnecting
Mar 03 21:11:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:12:01 wirenboard-AC6A3GB6 mosquitto[3819]: 1741029121: New connection from /var/run/mosquitto/mosquitto.sock:0 on port 0.
Mar 03 21:12:01 wirenboard-AC6A3GB6 mosquitto[3819]: 1741029121: New client connected from /var/run/mosquitto/mosquitto.sock:0 as wb-cloud-agent-telegraf-Dw6Ko0YE (p2, c1, k60).
Mar 03 21:12:01 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:12:01Z I! [inputs.mqtt_consumer::mqtt-consumer-string] Connected [unix:///var/run/mosquitto/mosquitto.sock]
Mar 03 21:12:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:13:42 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:13:42Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:13:42 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:13:42Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:13:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:14:33 wirenboard-AC6A3GB6 NetworkManager[3543]: <info>  [1741029273.9265] dhcp4 (eth0): state changed new lease, address=192.168.88.150
Mar 03 21:14:48 wirenboard-AC6A3GB6 wb-mqtt-serial[23579]: WARNING: [modbus] failed to read 4 input(s) @ 4668 of device </dev/ttyRS485-1 115200 8 N 2> modbus:186: Serial protocol error: request timed out
Mar 03 21:14:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:15:42 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:15:42Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:15:42 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:15:42Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:15:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:16:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:17:01 wirenboard-AC6A3GB6 CRON[25576]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Mar 03 21:17:01 wirenboard-AC6A3GB6 CRON[25580]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Mar 03 21:17:01 wirenboard-AC6A3GB6 CRON[25576]: pam_unix(cron:session): session closed for user root
Mar 03 21:17:46 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:17:46Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:17:46 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:17:46Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:17:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:18:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:19:46 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:19:46Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:19:46 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:19:46Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:19:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:20:07 wirenboard-AC6A3GB6 wb-mqtt-serial[23579]: WARNING: [modbus] failed to read 24 input(s) @ 4864 of device </dev/ttyRS485-1 115200 8 N 2> modbus:186: Serial protocol error: malformed response: invalid crc
Mar 03 21:20:09 wirenboard-AC6A3GB6 kernel: RTL871X: set group key camid:2, addr:00:00:00:00:00:00, kid:2, type:TKIP
Mar 03 21:20:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:21:51 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:21:51Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:21:51 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:21:51Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:21:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:22:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:23:52 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:23:52Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:23:52 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:23:52Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:23:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:24:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:25:52 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:25:52Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:25:52 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:25:52Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:25:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:26:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:27:56 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:27:56Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:27:56 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:27:56Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:27:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:28:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:29:33 wirenboard-AC6A3GB6 NetworkManager[3543]: <info>  [1741030173.9143] dhcp4 (eth0): state changed new lease, address=192.168.88.150
Mar 03 21:29:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:30:00 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:30:00Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:30:00 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:30:00Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:30:09 wirenboard-AC6A3GB6 kernel: RTL871X: set group key camid:1, addr:00:00:00:00:00:00, kid:1, type:TKIP
Mar 03 21:30:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:31:01 wirenboard-AC6A3GB6 wb-mqtt-db[4063]: INFO: [dblogger] Group data limit is reached: group all, row count 1020010, limit 1000000
Mar 03 21:31:11 wirenboard-AC6A3GB6 mosquitto[3819]: 1741030271: Client wb-cloud-agent-telegraf-Dw6Ko0YE closed its connection.
Mar 03 21:31:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:32:04 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:32:04Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
Mar 03 21:32:04 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:32:04Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
Mar 03 21:32:18 wirenboard-AC6A3GB6 wb-mqtt-serial[23579]: WARNING: [modbus] failed to read 4 input(s) @ 4284 of device </dev/ttyRS485-1 115200 8 N 2> modbus:186: Serial protocol error: request timed out
Mar 03 21:32:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
-----> Mar 03 21:33:36 wirenboard-AC6A3GB6 mosquitto[3819]: 1741030416: Client core-mosquitto.wb-bridge closed its connection.  ---> отключение бриджа HA
Mar 03 21:33:58 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] _update_git_status started!
Mar 03 21:34:09 wirenboard-AC6A3GB6 telegraf[18122]: 2025-03-03T19:34:09Z E! [inputs.mqtt_consumer::mqtt-consumer-string] Error in plugin: connection lost: pingresp not received, disconnecting
-----> Mar 03 21:34:42 wirenboard-AC6A3GB6 mosquitto[3819]: 1741030482: New connection from 192.168.88.100:57352 on port 1883.   ---> восстановление бриджа HA
-----> Mar 03 21:34:42 wirenboard-AC6A3GB6 mosquitto[3819]: 1741030482: New bridge connected from 192.168.88.100:57352 as core-mosquitto.wb-bridge (p2, c1, k60).
-----> Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching action on 'wb-mdm3_163/Input 1 Long Press Counter'   ---> сработка правила на счетчик
Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] switching off 'wb-mdm3_163/K1'(was state=on)
Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] switching off 'wb-mr6c_161/K1'(was state=off)
Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] switching off 'wb-mr6c_161/K2'(was state=off)
Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] switching off 'wb-mr6c_161/K3'(was state=on)
-----> Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching action on 'wb-mdm3_163/Input 3 Long Press Counter'    ---> сработка правила на счетчик
Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] switching off 'wb-mdm3_163/K3'(was state=on)
Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] switching off 'wb-mr6c_135/K4'(was state=off)
Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] switching off 'wb-mr6c_135/K5'(was state=off)
Mar 03 21:34:44 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] switching off 'wb-mr6c_135/K6'(was state=off)
----->  Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Master switch fired    ---> сработка правила на счетчик
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off R1.K1(wb-mr6c_75/K1) was 'off'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off R1.K6(wb-mr6c_75/K6) was 'off'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED2.K1(wb-led_47/Channel 1) was 'off'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off D1.K1(wb-mdm3_93/K1) was 'off'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off D1.K2(wb-mdm3_93/K2) was 'off'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off R2.K3(wb-mr6c_95/K3) was 'off'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED3.K1(wb-led_48/Channel 1) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED3.K2(wb-led_48/Channel 2) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED3.K3(wb-led_48/Channel 3) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED3.K4(wb-led_48/Channel 4) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED4.K1(wb-led_52/Channel 1) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED4.K2(wb-led_52/Channel 2) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED4.K3(wb-led_52/Channel 3) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED4.K4(wb-led_52/Channel 4) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED5.K1(wb-led_67/Channel 1) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off LED5.K2(wb-led_67/Channel 2) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off R9.K5(wb-mr6c_170/K5) was 'on'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off R9.K6(wb-mr6c_170/K6) was 'off'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off D2.K1(wb-mdm3_153/K1) was 'off'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off D2.K2(wb-mdm3_153/K2) was 'off'
Mar 03 21:34:45 wirenboard-AC6A3GB6 wb-rules[4134]: INFO: [rule info] Switching off D2.K3(wb-mdm3_153/K3) was 'off'

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

После этого я подправил логирование нажатий в скриптах, чтобы выводился текущий счетчик.
Пока разбирался, заметил, что устройства, подключенные через WM_MIO-E горят красным, хотя в конфигураторе устройств ошибок не было и при этом устройства моргали быстро, т.е. шел опрос по модбасу.

Решил перезагрузить сервис wb-mqtt-serial и снова получил срабатывания счетчиков нажатий со значением 0.

Логи 2
Mar 03 23:15:49 wirenboard-AC6A3GB6 wb-mqtt-serial[23579]: INFO: [signal handling] Received signal 15
Mar 03 23:15:49 wirenboard-AC6A3GB6 systemd[1]: Stopping MQTT Driver for serial devices...
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-mqtt-db[4063]: WARNING: [conventions] converting empty value to boolean "false"
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mio-gpio_173:1/K7: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mio-gpio_173:1/K7: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mio-gpio_173:1/K4: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-mqtt-db[4063]: WARNING: [conventions] converting empty value to boolean "false"
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-mqtt-db[4063]: WARNING: [conventions] converting empty value to boolean "false"
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mio-gpio_173:2/K3: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mio-gpio_173:2/K3: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mio-gpio_173:2/K3: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mio-gpio_173:4/K1: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mio-gpio_173:5/K1: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mwac_64/K1: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mwac_64/K2: No such control
Mar 03 23:15:50 wirenboard-AC6A3GB6 wb-rules[15083]: WARNING: [frontend] failed to remove external control wb-mwac_64/K2: No such control
...
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 480>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 481>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 482>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 483>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 484>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 485>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 496>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 497>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 498>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 499>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 500>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 501>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 512>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 513>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:129:input: 514>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are disabled for <modbus:129: reboot>
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: secp_waiting_time_title: setup register <<192.168.88.50:23> modbus:105:holding: 1143> <-- 200 (0xc8)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial device] device <192.168.88.50:23> modbus:105 is connected
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Continuous read enabled [slave_id is 148]
---->  Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching action on 'wb-mr6c_129/Input 5 Single Press Counter'(counter=0)  ----> Сработка правила на счетчик
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] switching 'wb-mr6c_170/K5'(was state=on)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: Mode: setup register <</dev/ttyMOD2 9600 8 N 2> modbus:148:holding: 275> <-- 0 (0x0)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: Mode: setup register <</dev/ttyMOD2 9600 8 N 2> modbus:148:holding: 276> <-- 0 (0x0)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial device] device </dev/ttyMOD2 9600 8 N 2> modbus:148 is connected
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Continuous read enabled [slave_id is 170]
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: Mode: setup register <</dev/ttyRS485-1 115200 8 N 2> modbus:170:holding: 16> <-- 6 (0x6)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: Mode: setup register <</dev/ttyRS485-1 115200 8 N 2> modbus:170:holding: 9> <-- 6 (0x6)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: secp_waiting_time_title: setup register <</dev/ttyRS485-1 115200 8 N 2> modbus:170:holding: 1140> <-- 200 (0xc8)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: Mode: setup register <</dev/ttyRS485-1 115200 8 N 2> modbus:170:holding: 10> <-- 6 (0x6)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: sp_title: setup register <</dev/ttyRS485-1 115200 8 N 2> modbus:170:holding: 554> <-- 3 (0x3)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: secp_waiting_time_title: setup register <</dev/ttyRS485-1 115200 8 N 2> modbus:170:holding: 1141> <-- 0 (0x0)
Mar 03 23:16:23 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Continuous read enabled [slave_id is 16]
...
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:75:input: 487>
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are enabled for <modbus:75:input: 519>
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [serial client] Events are disabled for <modbus:75: reboot>
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Continuous read enabled [slave_id is 108]
------> Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Master switch fired ----> Сработка правила на счетчик (мастер выключатель)
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching off R1.K1(wb-mr6c_75/K1) was 'off'
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching off R1.K6(wb-mr6c_75/K6) was 'off'
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching off LED2.K1(wb-led_47/Channel 1) was 'off'
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-mqtt-serial[27540]: INFO: [modbus] Init: Dimmer Mode: setup register <<192.168.88.50:23> modbus:108:holding: 4000> <-- 34 (0x22)
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching off D1.K1(wb-mdm3_93/K1) was 'off'
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching off D1.K2(wb-mdm3_93/K2) was 'off'
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching off R2.K3(wb-mr6c_95/K3) was 'off'
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching off LED3.K1(wb-led_48/Channel 1) was 'off'
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching off LED3.K2(wb-led_48/Channel 2) was 'off'
Mar 03 23:16:28 wirenboard-AC6A3GB6 wb-rules[15083]: INFO: [rule info] Switching off LED3.K3(wb-led_48/Channel 3) was 'off'

Вроде писали, что поведение со счетчиками было исправлено. Кейс показывает что не до конца.

Использую последний Stable.
Диагностический архив прилагаю.
diag_output_AC6A3GB6_2025-03-04-11.05.32.zip (798,2 КБ)

P.S. Прошу отнестись к проблеме серьезно. Инсталляция используется в уже жилом доме и это крайне неприятно получить выключение света, или наоборот, самопроизвольное включение ночью. И это довольно простые автоматизации на свет, без критических последствий. Но могли быть и открытые ворота, и остановленные насосы. Правила написаны по рекомендуемой производителем схеме со счетчиком нажатий, которая на данном этапе выглядит весьма небезопасно.

Добрый день,

Проанализировал логи, есть предположение о задвоении данных при восстановлении связи.

Рекомендую:

  • Изменить QoS на 1 и протестировать, сохраняется ли проблема.
  • Добавить в конфигурацию параметр:
cleansession false

Это поможет сохранить состояние подписок и избежать передачи устаревших данных после восстановления соединения.

После внесения изменений прошу протестировать и сообщить результат.

Добрый день, Александр.

Спасибо, конфиг mqtt-моста поменял, буду наблюдать.

Кроме моста остается второй кейс со сработкой правил при перезагрузке wb-mqtt-serial.

Сегодня пробовал несколько раз воспроизвести, но поведение не повторилось.
Буду тоже наблюдать.

1 лайк

Добрый день,
Удалось ли решить вопрос?

Добрый день.
Пока не повторялось.
Отпишусь в теме, если повторится

1 лайк

Добрый день. Сегодня снова случилось срабатывание скриптов на счетчики, хотя тут скорее всего причина другая. Было отключение света где-то на час (в логах где-то в районе 11:00), контроллер его пережил на внутренней батарейке, но устройства отключились. После подачи питания (примерно в 11:38) стали срабатывать счетчики нажатий с 0 значением, а затем с ненулевым. Например, для счетчика wb-led_107/Input 3 Counter начала была сработка с 0, потом с 6. После чего при ручном срабатывании с выключателя счетчик был 1.

Что странно, сработали всего несколько счетчиков нажатий (я по логам насчитал 4), остальные нет, хотя счетчики в результате все равно обнулились.

Логи wb-rules
Mar 19 11:37:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
->>>>   Сработака wb-mr6c_95/Input 2 counter=0
Mar 19 11:38:09 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] down_stairs rule on wb-mr6c_95/Input 2 counter(0)
Mar 19 11:38:09 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switchStairs backward
->>>>   Сработака wb-mr6c_169/Input 1 counter=0
Mar 19 11:38:11 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] up_stairs rule on wb-mr6c_169/Input 1 counter(0)
Mar 19 11:38:11 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switchStairs forward
Mar 19 11:38:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] warmWall[warmWall2floor]: Temperature error triggered, error = ''
->>>>   Сработака wb-led_107/Input 3 counter=0
Mar 19 11:38:55 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 3 Counter'(counter=0)
Mar 19 11:38:55 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K5'(was state=off)
->>>>   Сработака wb-led_107/Input 4 counter=0
Mar 19 11:38:55 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 4 Counter'(counter=0)
Mar 19 11:38:55 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K6'(was state=off)
Mar 19 11:38:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!

->>>> Через какое-то время сработака wb-mr6c_95/Input 2 counter=69
Mar 19 11:39:58 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] down_stairs rule on wb-mr6c_95/Input 2 counter(69)
Mar 19 11:39:58 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switchStairs backward
->>>> и сработака wb-mr6c_169/Input 1 counter=125
Mar 19 11:39:58 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] up_stairs rule on wb-mr6c_169/Input 1 counter(125)
Mar 19 11:39:58 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switchStairs forward

->>>> Сработака wb-led_107/Input 3 counter=6
Mar 19 11:40:00 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 3 Counter’(counter=6)
Mar 19 11:40:00 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K5’(was state=off)
->>>> Сработака wb-led_107/Input 4 counter=6
Mar 19 11:40:00 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 4 Counter’(counter=6)
Mar 19 11:40:00 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K6’(was state=off)
->>>> Ручное включение -----, счетчик уже равен 1
Mar 19 11:40:36 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] up_stairs rule on wb-mr6c_169/Input 1 counter(1)
Mar 19 11:40:36 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switchStairs forward

Еще из странного, после включения питания правило по переключению света на счетчик нажатий отрабатывало некорректно.

Само правило выглядит вот так:

function switchAction(inputTopic, outputTopic, action) {
    defineRule("on_switch: " + inputTopic + " -> "+ JSON.stringify(outputTopic), {
        whenChanged: inputTopic,
        then: function(newValue, devName, cellName) {
            log("Switching action on '{}'(counter={})", inputTopic, newValue);
            if (Array.isArray(outputTopic)) {
                outputTopic.forEach(function (topic) {
                    action(topic);
                })
            } else {
                action(outputTopic);
            }
        }
    });
}

function switchTopic(topic) {
var state = dev[topic];
log(“switching ‘{}’(was state={})”, topic, state ? “on” : “off”);
dev[topic] = !state;
}
function switchOffTopic(topic) {
var state = dev[topic];
log(“switching off ‘{}’(was state={})”, topic, state ? “on” : “off”);
dev[topic] = false;
}

function simpleSwitch(inputTopic, outputTopic) {
switchAction(inputTopic, outputTopic, switchTopic);
}

function simpleSwitchOff(inputTopic, outputTopic) {
switchAction(inputTopic, outputTopic, switchOffTopic);
}

и уже в коде вызываются функцией simpleSwitch

// Мастер спальня,  Подвесы
simpleSwitch("wb-led_107/Input 3 Counter", "wb-mr6c_161/K5");
simpleSwitch("wb-led_107/Input 4 Counter", "wb-mr6c_161/K6");

По логам видно, что правила срабатывают, но состояние из dev[topic] вытаскивается не верно:

Логи срабатываний
Mar 19 12:43:52 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 3 Counter'(counter=1)
Mar 19 12:43:52 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K5'(was state=off)
Mar 19 12:43:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 19 12:44:03 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 4 Counter'(counter=1)
Mar 19 12:44:03 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K6'(was state=off)
Mar 19 12:44:06 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 4 Counter'(counter=2)
Mar 19 12:44:06 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K6'(was state=off)
Mar 19 12:44:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 19 12:45:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 19 12:46:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 19 12:47:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 19 12:48:49 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 3 Counter'(counter=2)
Mar 19 12:48:49 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K5'(was state=off)
Mar 19 12:48:50 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 3 Counter'(counter=3)
Mar 19 12:48:50 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K5'(was state=off)
Mar 19 12:48:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 19 12:49:06 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 4 Counter'(counter=3)
Mar 19 12:49:06 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K6'(was state=off)
Mar 19 12:49:07 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 4 Counter'(counter=4)
Mar 19 12:49:07 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K6'(was state=off)

Например для wb-led_107/Input 3 Counter приходит значение 1, 2, 3 и свет должен каждый раз переключиться. Но по факту он всегда пытается включиться. Т.е. в коде ниже state всегда равен 0.

function switchTopic(topic) {
    var state = dev[topic];
    log("switching '{}'(was state={})", topic, state ? "on" : "off");
    dev[topic] = !state;
}


Mar 19 12:43:52 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 3 Counter’(counter=1)
Mar 19 12:43:52 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K5’(was state=off)
Mar 19 12:48:49 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 3 Counter’(counter=2)
Mar 19 12:48:49 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K5’(was state=off)
Mar 19 12:48:50 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 3 Counter’(counter=3)
Mar 19 12:48:50 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K5’(was state=off)

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

function switchOffTopic(topic) {
    var state = dev[topic];
    log("switching off '{}'(was state={})", topic, state ? "on" : "off");
    dev[topic] = false;
}
...
>>> Сработака мастер выключателя спальни, выключение всего света
Mar 19 12:49:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_108/Input 4 Long Press Counter'(counter=1)
Mar 19 12:49:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-led_108/CCT1'(was state=off)
Mar 19 12:49:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-led_108/CCT2'(was state=off)
Mar 19 12:49:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_161/K4'(was state=off)
Mar 19 12:49:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K1'(was state=off)
Mar 19 12:49:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K3'(was state=off)
Mar 19 12:49:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-led_105/Channel 4'(was state=off)
Mar 19 12:49:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K5'(was state=off)
Mar 19 12:49:13 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K6'(was state=off)
....
>>>Теперь правило срабатывает правильно
Mar 19 12:49:35 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 3 Counter'(counter=4)
Mar 19 12:49:35 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K5'(was state=off)
Mar 19 12:49:36 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_107/Input 3 Counter'(counter=5)
Mar 19 12:49:36 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching 'wb-mr6c_161/K5'(was state=on)

Диагностику приложил

приложен диагностический архив, доступен только сотрудникам поддержки
(292,3 КБ)

Дополню, сегодня правил кое-какие параметры устройств, при сохранении снова сработали счетчики нажатий, уже похоже, что тут все остальные со значением счетчика 0

Логи wb-rules в момент перезапуска wb-mqtt-serial
Mar 20 16:31:08 wirenboard-AC6A3GB6 wb-rules[4042]: WARNING: [frontend] failed to remove external control wb-led_109/Input 3 Counter: No such control
Mar 20 16:31:08 wirenboard-AC6A3GB6 wb-rules[4042]: WARNING: [frontend] failed to remove external control wb-led_109/Input 3: No such control
Mar 20 16:31:08 wirenboard-AC6A3GB6 wb-rules[4042]: WARNING: [frontend] failed to remove external control wb-led_109/Input 1: No such control
-->>>> Mar 20 16:31:30 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-mr6c_135/Input 5 Long Press Counter'(counter=0)
Mar 20 16:31:30 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mdm3_163/K3'(was state=off)
-->>>> Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-mr6c_161/Input 4 Long Press Counter'(counter=0)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-led_108/CCT1'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-led_108/CCT2'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_161/K4'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K1'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K3'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-led_105/Channel 4'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K5'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K6'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_161/K5'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_161/K6'(was state=off)
-->>>> Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-mdm3_163/Input 1 Long Press Counter'(counter=0)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mdm3_163/K1'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_161/K1'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_161/K2'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_161/K3'(was state=on)
-->>>> Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-mdm3_163/Input 3 Long Press Counter'(counter=0)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mdm3_163/K3'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_135/K4'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_135/K5'(was state=off)
Mar 20 16:31:31 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_135/K6'(was state=off)
-->>>> Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Master switch fired
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off R1.K1(wb-mr6c_75/K1) was 'off'
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off R1.K6(wb-mr6c_75/K6) was 'off'
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off LED2.K1(wb-led_47/Channel 1) was 'off'
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off D1.K1(wb-mdm3_93/K1) was 'off'
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off D1.K2(wb-mdm3_93/K2) was 'off'
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off R2.K3(wb-mr6c_95/K3) was 'off'
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off LED3.K1(wb-led_48/Channel 1) was 'off'
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off LED3.K2(wb-led_48/Channel 2) was 'off'
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off LED3.K3(wb-led_48/Channel 3) was 'off'
Mar 20 16:31:34 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off LED3.K4(wb-led_48/Channel 4) was 'off'
....
Mar 20 16:31:35 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off R8.K6(wb-mr6c_169/K6) was 'off'
Mar 20 16:31:35 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off R5.K3(wb-mr6c_135/K3) was 'off'
Mar 20 16:31:35 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off R5.K2(wb-mr6c_135/K2) was 'off'
Mar 20 16:31:35 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off R1.K5(wb-mr6c_75/K5) was 'off'
Mar 20 16:31:35 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching off R5.K1(wb-mr6c_135/K1) was 'off'
-->>>> Mar 20 16:31:38 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on 'wb-led_108/Input 3 Long Press Counter'(counter=0)
Mar 20 16:31:38 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-led_108/CCT1'(was state=off)
Mar 20 16:31:38 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-led_108/CCT2'(was state=off)
Mar 20 16:31:38 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_161/K4'(was state=off)
Mar 20 16:31:38 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K1'(was state=off)
Mar 20 16:31:38 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-mr6c_156/K3'(was state=off)
Mar 20 16:31:38 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching off 'wb-led_105/Channel 4'(was state=off)

diag_output_AC6A3GB6_2025-03-20-16.34.56.zip (301,2 КБ)

Добрый день!

Можете прислать срабатывающие правила полностью? Попробую воспроизвести ситуацию у себя.

Добрый день. Скинул архивом.
001_DeviceHelper.js - всякие вспомогательные функции, вынесенные в глобальный контекст.
Например simpleSwitch(), simpleSwitchOff()
И немного хелперов типа Alias и Channel (попытка уйти от необходимости передавать стандартные названия топиков).

К примеру:

Channel("R1.K1"); // возвращает "wb-mr6c_75/K1"
Channel("R1.I1");  // возвращает "wb-mr6c_75/Input 1 counter"
Channel("LED1.I1", "Long");  // возвращает "wb-led_37/Input 1 Long Press Counter"
Channel("LED1.CCT2");  // возвращает "wb-led_37/CCT2"
simpleSwitch(Channel("R1.I2","Long"), Channel("R7.K5"));
addAlias("Switch1", "R7.I4");  
simpleSwitch(Alias("Switch1"), Channel("R7.K5"));

switches.js - сами скрипны и алиасы

rules.7z (3,4 КБ)

В ECMAScript5, который используется в wb-rules, не работают стрелочные функции. Вы что-то сторонне используете вместо wb-rules?

Добрый день. Это псевдо код сверху, просто пример, что возвращает функция, для понимания. Не подумал, что это введёт в заблуждение) неудачное форматирование

Upd: подправил для однозначности

Добрый день!

Есть гипотеза, что при перезагрузке контроллера не все устройства успевают прогрузиться, из-за чего прилетает значение 0, которое сбивает логику работы скрипта.

Рекомендую добавить проверку на готовность всех устройств — и только после её успешного прохождения запускать выполнение скриптов.

Тут есть разные сценарии:

  1. Перезапуск контроллера без пропадания питания на устройствах. В этом случае физические счетчики на устройствах не сбрасываются на 0. Тут вопрос как между собой работают инициализация правил и wb-mqtt-serial, работают независимо или кто-то кого-то ждет/уведомляет.

  2. Перезагрузка устройств по питанию без перезапуска контроллера. В таком случае физические счетчики устройств сбрасываются в 0. (Это как раз был мой случай последний). Там странно почему пришел 0, потом не ноль.

  3. Перезагрузка wb-mqtt-serial, wb-rules, отдельно, в разных последовательностях. Тут вопрос какие у них между собой зависимости. На сколько я понимаю wb-mqtt-serial пересоздает все топики устройств, с которыми уже работает wb-rules.
    На сколько я понимаю, раньше еще была проблема, когда при перезапуске wb-mqtt-serial срабатывали счетчики (N->undefined->N), которая уже решена.

В любом случае, хорошо бы решить это на уровне движка правил, чтобы не было подобных ложных срабатываний.

Как предложение, если переписать логику так, что значение счетчика 0 будет игнорироваться, а при переполнении счетчика на устройстве начинать его с 1, а не с 0,
тогда перезагрузка устройства по питанию никогда бы не приводила к сработаке правил.
Можно было бы добавить по аналогии с when и whenChanged добавить whenCounter, который бы скрывал все дополнительные проверки.

Есть предложения как это можно сделать?

Добрый день!

Я бы попробовал реализовать отложенный старт правил — например, так:

var isReady = false;

log("Ожидание 10 секунд перед активацией правил...");

setTimeout(function() {
  isReady = true;
  log("Прошло 10 секунд. Правила активированы!");
  // Дополнительно можно включить индикацию или отправить сообщение:
  // dev["wb-gpio/EXT1_R3A"] = true; // включить светодиод
  // publish("/alerts/rules", "Rules activated");
}, 10000);

Не совсем конечно элегантное решение, но должно работать.

Идея понятна, но, к сожалению, это не спасет при перезагрузке устройств по питанию.
Правила при этом не перезагружаются.
К тому же таймер не гарантирует инициализацию всех устройств.

Лучше я добавлю проверку на 0 счетчик. В худшем случае это будет пропуск одного нажатия при переполнении счетчика. Это не критично.

Для себя сделал вывод, что пользоваться скриптами на счетчик нажатий на текущий момент не безопасно, софт не гарантирует, что сработка будет только при замыкании входа.

В целом получается более безопасно сейчас использовать непосредственно напрямую device/Input N, c программной реализацией различных типов нажатий. Правильно ли я понимаю, что при наличии быстрого модбаса и событий, пропусков “Input N” сейчас быть не должно?

Добрый день!

Да, вы правы — шанс потери данных минимален, но полностью исключать его нельзя. Например, если на шине RS-485 возникнет большое количество ошибок обмена, контроллер может автоматически отключить шину от опроса.

Добрый день, удалось ли решить вопрос?

Добрый день. К сожалению нет, 23.03 ночью снова было отключение электричества. Снова контроллер пережил на встроенной батарейке, а устройства, запитанные от БП напрямую были обесточены. В итоге когда дали электричество включился свет. Проверка на 0 счетчик не помогла.
Чуть позже выложу подробные логи и диагностический архив.

1 лайк

Добрый день,

Буду ждать от вас информацию. Также прошу прикрепить, пожалуйста:
схему коммутации;
— перечень оборудования и описание, как именно оно подключено к контроллеру.

23.03 было отключение света где-то с 6:00 до 9:25.

Логи wb-rules в момент сработки правил
Mar 23 09:23:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:24:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
// самопроизвольно включился скрипт подсветки лестницы
Mar 23 09:25:07 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] up_stairs rule on wb-mr6c_169/Input 1 counter(0)
Mar 23 09:25:07 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switchStairs forward
Mar 23 09:25:08 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] warmWall[warmWall2floor]: Temperature error triggered, error = ''
Mar 23 09:25:08 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] down_stairs rule on wb-mr6c_95/Input 2 counter(0)
Mar 23 09:25:08 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switchStairs backward

// самопроизвольно включился свет на двух светильниках в спальне
Mar 23 09:25:47 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 3 Counter’(counter=0)
Mar 23 09:25:47 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K5’(was state=off)
Mar 23 09:25:47 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 4 Counter’(counter=2)
Mar 23 09:25:47 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K6’(was state=off)

// отключил их вручную с выключателя
Mar 23 09:25:52 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 4 Counter’(counter=3)
Mar 23 09:25:52 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K6’(was state=on)
Mar 23 09:25:55 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 3 Counter’(counter=1)
Mar 23 09:25:55 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K5’(was state=on)

// снова самопроизвольно включился скрипт подсветки лестницы
Mar 23 09:25:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:26:53 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] down_stairs rule on wb-mr6c_95/Input 2 counter(11)
Mar 23 09:26:53 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switchStairs backward
Mar 23 09:26:53 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] up_stairs rule on wb-mr6c_169/Input 1 counter(14)
Mar 23 09:26:53 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switchStairs forward

// снова самопроизвольно включился свет на двух светильниках в спальне (значения счетчиков странные)
Mar 23 09:26:56 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 3 Counter’(counter=14)
Mar 23 09:26:56 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K5’(was state=off)
Mar 23 09:26:56 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 4 Counter’(counter=21)
Mar 23 09:26:56 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K6’(was state=off)
Mar 23 09:26:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!

// отключили их вручную с выключателя
Mar 23 09:27:01 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 3 Counter’(counter=2)
Mar 23 09:27:01 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K5’(was state=on)
Mar 23 09:27:10 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] Switching action on ‘wb-led_107/Input 4 Counter’(counter=4)
Mar 23 09:27:10 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] switching ‘wb-mr6c_161/K6’(was state=on)
Mar 23 09:27:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:28:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:29:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:30:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:31:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:32:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:33:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:34:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:35:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!
Mar 23 09:36:59 wirenboard-AC6A3GB6 wb-rules[4042]: INFO: [rule info] _update_git_status started!

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

Блок питания на 240Ватт 24в (подкручен на 27в). От него питается контроллер, и напрямую от него все устройства.
Основная часть реле и диммеров подключены напрямую в RS485-1 (в главном щите), часть wb-led через ethrernet шлюз MIO-E v2. На изолированных портах MOD1 и MOD2 подключены датчики первого и второго этажа соответственно.
Из примера логов часть правил сработала на устройствах, подключенных через RS485-1 (wb-mr6c_169), часть подключенных через MIO-E v2. (wb-led_107).
Вам наверное проще посмотреть serial-config, чтобы понять где какие устройства подключены.

В схемах не силен, если нужно, могу скинуть схему компоновки щитов с обнародованием WB, сделанную в Визио.

приложен диагностический архив, доступен только сотрудникам поддержки
(346,8 КБ)