Тормоза при работе Zigbee

Добрый,
итак ситуация аналогична с Перестают работать правила wb-rules при включенном zigbee2mqtt - #25 от пользователя dotmeer, но создаю отдельную ветку, как тут рекомендуют

Проблема:

Работающий Zigbee сильно перегружает wb-rules, отчего остальные правила начинают работать с некомфортной задержкой (включение света по датчику через МИНУТУ-ДВЕ после сработки).

Исходные данные:
Контроллер Batch No 7.3B/2GC/2 636
Current uptime 1d 5h 39m
DTS Version 730
HW Revision 7.3
Release name unstable.latest
Release suite testing
Short SN AMENMA3Q

zigbee2mqtt Version 1.33.1, плата соответсвенно v2

На zigbee2mqtt есть устройства

  1. термостаты Moes BHT-002-GCLZB control via MQTT | Zigbee2MQTT
  2. термостаты TuYa TS0601_thermostat control via MQTT | Zigbee2MQTT

Никаких правил по zigbee НЕТ. Остальные правила без zigbee работают идеально и МГНОВЕННО, при максимальном аптайме пару месяцев.

zigbee2mqtt работает с вэб мордой, но при отключеной трансляцие в wb-rules (или удаление wb-zigbee2mqtt, или настройка zigbee2mqtt в нечитаемый на wb формат), она не влияяет.

История:
1.Подвисания работы правил наблюдались сразу как были подцеплены zigbee устройства, еще на этапе ремонта, месяцев 5 назад - просто отключил wb-zigbee2mqtt тогда. Система на тестинг,е и обновляю регулярно - соответственно старые версии ПО исключаем.
2. При изменении настройки в zigbee2mqtt в выдаче информации в mqtt с json на attributes (начинает просто топики соответствующие названию парметра писать, а не одним json, соответственно wb-zigbee2mqtt не видит) проблема уходит - zigbee2mqtt исключаем.
3. Обнаружил что после рестарта wb-rules на какое то время (уже минут 20 прошло и все ок) проблема пропадает - остается проблема в связке wb-rules - wb-zigbee2mqtt. Напоминаю, что без zigbee остальные правила работают идеально и мгновенно, а своих правил трогающих zigbee устройства нет.

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

На всякий случай по поводу moes bht-002 - там есть проблема с флудом от него, согласно рекомендации он подрезан параметром debounce 5 в zigbee2mqtt, сообщения раз в 5 сек

Пример того что идет от zigbee2mqtt

 Info <small>2023-11-24 15:46:40</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.7', payload '{"child_lock":"LOCK","current_heating_setpoint":28,"deadzone_temperature":1,"heat":"OFF","last_seen":"2023-11-24T15:46:37+05:00","linkquality":0,"local_temperature":28,"local_temperature_calibration":0,"max_temperature":35,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:46:46</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.5', payload '{"child_lock":"LOCK","current_heating_setpoint":27,"deadzone_temperature":0,"heat":"OFF","last_seen":"2023-11-24T15:46:42+05:00","linkquality":3,"local_temperature":27,"local_temperature_calibration":0,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:46:48</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.7', payload '{"child_lock":"LOCK","current_heating_setpoint":28,"deadzone_temperature":1,"heat":"OFF","last_seen":"2023-11-24T15:46:45+05:00","linkquality":0,"local_temperature":28,"local_temperature_calibration":0,"max_temperature":35,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:46:48</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.6', payload '{"child_lock":"LOCK","current_heating_setpoint":29,"deadzone_temperature":0,"heat":"OFF","last_seen":"2023-11-24T15:46:45+05:00","linkquality":3,"local_temperature":29,"local_temperature_calibration":0,"max_temperature":35,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:46:54</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.5', payload '{"child_lock":"LOCK","current_heating_setpoint":27,"deadzone_temperature":0,"heat":"OFF","last_seen":"2023-11-24T15:46:49+05:00","linkquality":3,"local_temperature":27,"local_temperature_calibration":0,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:46:55</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.6', payload '{"child_lock":"LOCK","current_heating_setpoint":29,"deadzone_temperature":0,"heat":"OFF","last_seen":"2023-11-24T15:46:52+05:00","linkquality":3,"local_temperature":29,"local_temperature_calibration":0,"max_temperature":35,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:47:01</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.6', payload '{"child_lock":"LOCK","current_heating_setpoint":29,"deadzone_temperature":0,"heat":"OFF","last_seen":"2023-11-24T15:46:57+05:00","linkquality":3,"local_temperature":29,"local_temperature_calibration":0,"max_temperature":35,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:47:02</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.7', payload '{"child_lock":"LOCK","current_heating_setpoint":28,"deadzone_temperature":1,"heat":"OFF","last_seen":"2023-11-24T15:47:03+05:00","linkquality":0,"local_temperature":28,"local_temperature_calibration":0,"max_temperature":35,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:47:09</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.5', payload '{"child_lock":"LOCK","current_heating_setpoint":27,"deadzone_temperature":0,"heat":"OFF","last_seen":"2023-11-24T15:47:05+05:00","linkquality":3,"local_temperature":27,"local_temperature_calibration":0,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:47:09</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.7', payload '{"child_lock":"LOCK","current_heating_setpoint":28,"deadzone_temperature":1,"heat":"OFF","last_seen":"2023-11-24T15:47:06+05:00","linkquality":0,"local_temperature":28,"local_temperature_calibration":0,"max_temperature":35,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:47:14</small>`MQTT publish: topic 'zigbee2mqtt/FloorHeatThermostat-2.5', payload '{"child_lock":"LOCK","current_heating_setpoint":27,"deadzone_temperature":0,"heat":"OFF","last_seen":"2023-11-24T15:47:15+05:00","linkquality":3,"local_temperature":27,"local_temperature_calibration":0,"max_temperature_limit":35,"min_temperature_limit":5,"preset":"hold","preset_mode":"hold","running_state":"idle","sensor":"AL","system_mode":"heat"}'`

Info <small>2023-11-24 15:47:43</small>`MQTT publish: topic 'zigbee2mqtt/TuYa TRV floor heating', payload '{"auto_lock":"MANUAL","away_mode":"OFF","away_preset_days":1,"away_preset_temperature":25,"battery_low":false,"boost_time":300,"child_lock":"UNLOCK","comfort_temperature":26,"current_heating_setpoint":28,"eco_temperature":25,"force":"normal","last_seen":"2023-11-24T15:47:43+05:00","linkquality":91,"local_temperature":28,"local_temperature_calibration":0,"max_temperature":40,"min_temperature":15,"position":10,"preset":"manual","running_state":"heat","system_mode":"auto","update_available":false,"week":"7","window_detection":"OFF","window_open":false}'`

Добрый день.
Как воспроизвести поведение?
Дайте поток данных из топика, вывод mosquitto_sub -v -t zigbee2mqtt/# на полчаса.

Хорошо, сделаю как поймаю проблему. Пока все впорядке. Что можно показать по работе wb-rules - в логах ничего необычного не появляется?

Итак, поймал проблему, с рестарта wb-rules прошло 3 суток. На 1-2 сутки несколько раз замечал лаги в 2-3 секунды в работе выключателей и герконов двери(включают свет) на WBIO-DI-WD-14. На 3 сутки, начались фризы 30-60сек примерно, не мерял.

  1. Лог mosquitto_sub -v -t zigbee2mqtt/# >> file во время длинных лагов
    log_28_11_2023_bugs (117,8 КБ)

В это же время скриншот htop

  1. Не перезагружая ни wbrules, ни zigbee2mqtt меняю в z2m вывод в mqtt с json на attributes
    log_28_11_2023_zigbee_write_as_attributes (93,3 КБ)

Лаги пропали, скриншот htop не сделал, но загрузка процесса wbrules приходит в норму - 25-27%

Лог wb-rules за период когда лагало, и когда отключил json - разницы не вижу
wb-rules_20231128T104947.log (10,6 КБ)

  1. Включил назад в z2m вывод в mqtt json и перезагрузил wb-rules. Все так же нормально работает, реакции мгновенные.
    Лог mqtt
    log_28_11_2023_after_restart_wbrules (79,8 КБ)

Лог wbrules
wb-rules_20231128T112950.log (20,8 КБ)

Скриншот htop

На всякий случай diag collect

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

Еще раз воспроизводилось?

То что постил последнее - да, это еще раз. Последние пару дней все ок.

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

В принципе такая же проблема, которая так и осталась без ответа
https://support.wirenboard.com/t/zaderzhka-obrabotki-sobytij-zigbee2mqtt

Так похоже и не воспроизведется - я показываю что одни и те же сообщения от z2m то приводят к зависанию, то нет (несколько дней после рестарта). Может быть написать вам и дать доступ на контроллер когда “начнется”? Просто я сам вижу что в логах особо ничего не отличается, кроме того что процесс вб-рулез начинает жрать очень много ресурсов.

Да я уже несколько топиков видел где эта проблема всплывала но не решилась

Да, для того чтобы решить - нужно воспроизвести (научиться гарантированно воспроизводить).
Реально полезным для этого была бы запись сообщений z2m в топики.
Например mosquitto_sub -v -t zigbee2mqtt/# >>/root/zigbee.log - и сам файл.
Я бы его воспроизводил, публикуя - и получал бы эффект.
Если запустите в screen, например и дадите файл (пусть хоть несколько гигабайт) - то естественно попробую.

Почему бесполезно иметь доступ к контроллеру в котором уже wb-ruls потек - прото он нужен собранный в отладочном варианте.
То есть шаг первый - воспризвести.

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

А рулез поставить у меня в отладочном варианте - не вариант?

Да, это, как мне кажется - оптимально.

Не особо поможет, отладку надо будет добавлять уже в процессе. То есть - хочется научиться воспроизводить сиснтетически все ж.

Поймал тормоза. Специально сделал “тяжелую” нагрузку - в нескольких устройствах (floor-termostat-2.x) публиковались значения типа структура, и создавался флуд - много дублирующихся сообщений. /В нормальной эксплуатации структуры отфильтрованы, со флудом борюсь debounce 1/

  1. Перезапущен wb-rules & zigbee2mqtt
  2. Через примерно 4-5 часов появились заметные лаги в работе по датчикам, но пропадающие
  3. Еще через час (~17:00) лаги стали постоянными.
  4. Включил фильтры и debounce для всех устройств
  5. Постоянные лаги ушли, стали редкими
  6. Выключил фильтры и debounce
  7. Постоянные лаги появились сразу
  8. Перезагрузил wb-rules, лаги при тяжелой нагрузке исчезли, в течении минут 20 не появлялись.

Весь период в выгрузке mosquito_sub
zigbee_mqtt_messages_09_12_2023.log.gz (673,8 КБ)

Так же есть в варианте лога сервиса
z2m_system_log_09_12_2023.gz (224,3 КБ)

1 лайк

И так… результаты есть? такая же проблема после добавления BHT-002-GCLZB Правила стали зависать или не выполняться совсем…

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

Добрый, кроме плавающего глюка в контроллере, эти термостаты имеют проблему и сами - они заваливают очередь сообщениями, на их странице на zigbee2mqtt указано решение - параметр debounce 1. Рекомендую даже не 1 а 5 (раз в 5 секунд присылать). Насколько я понимаю даже если контроллер починят то этот костыль останется актуальным для них

1 лайк