ZigBee payload *state* parsing

Приветствую.

Умная розетка Xiaomi с поддержкой OTA Update после обновления:

MQTT publish: topic ‘zigbee2mqtt/0x04cf8cdf3c765f1b’, payload ‘{“device_temperature”:30,“energy”:5.89,“last_seen”:1661909438178,“linkquality”:34,“power”:68.7,“state”:“ON”,“update”:{“state”:“idle”},“update_available”:false}’

Некорректно работает парсинг поля “state”.
Сначала полю присваивается значение “ON”, затем сразу меняется на “idle”.

Снимок экрана от 2022-08-31 08-39-46

Zigbee2MQTT version 1.27.0
0x04cf8cdf3c765f1b (0x04cf8cdf3c765f1b): SP-EUC01 - Xiaomi Aqara EU smart plug (Router)

Добрый день.
Верно ли я понимаю описание?
Прошивка устройства (розетки) оно начало отдавать дополнительный статус “state”:“idle”?
До обновления статуса этого не было?

И уточню, какое поведение вы ожидаете увидеть?

Парсинг сделан плохо.
Ожидаю увидеть “state”:“ON”
Дополнительные поля появились после обновления прошивки по OTA.
JSON см. в первом сообщении.
Снимок экрана от 2022-08-31 14-00-04

“Парсинг” транслирует все объекты в MQTT. Не более.
То есть нужно переделать парсинг для всех устройств для использования только “state” из “update”? Это сломает те, что уже работают (подавляющее большинство). Вы и сейчас можете использовать контрол update.

Что за бред?

Парсить нужно правильно.
Там где я обвел должно быть значение ON, а не idle из блока update!

Так, кажется понял.
В основной топик state пишется значение из update”:{“state”:“idle”}

Я предельно ясно постарался изложить проблему в первом сообщении.
Даже картинку сделал. Сырые данные показал.

Ваши ответы вызвали у меня неподдельное удивление.

Прошу прощения, сразу не понял.
Воспроизведу искусственно и сделаю багрепорт.

1 лайк

Воспроизвелось эмуляцией.
Да, в /usr/share/wb-rules-system/rules/wb-zigbee2mqtt.js нет проверки на уровень вложенности.
исправим.

По срокам можете сориентировать?
Могу выступить бета-тестером, если поделитесь патчем до релиза.

Когда будет исправление?

Пока только описание бага создал.
Еще не в работе.

Ну как дела по проблеме?
Поди даже и не брались.

Верно, не брались. Можно, конечно в конверторе, костылем рещшить, преверяя тип значения на “объект”.

Вот правленная “костыльная” версия - использовал ее несколько месяцев.
Можно разкоментарить строчки с логированием и смотреть как оно работает
wb-zigbee2mqtt.js (5.3 КБ)

ныне я у себя эту ересь выпилил - толку от простого просмотра устройств в WB нет, а для автоматизации zigbee “прямее” использовать непосредственно mqtt топик zigbee2mqtt

1 лайк

Ну, собственно все так и делают.

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

Да уж… Вполне положительное впечатление от продажников напрочь портится супер хреновой программной частью. Второй год ловлю сплошные “глюки” в простейшей конфигурации. wb-rules жрет 50% CPU вообще без пользовательских правил. wb-mqtt-serial сыпет таймаутами в логах - уж как только не менял настройки… Был светлый момент когда устаканилась система - но понадобилась свежая версия Z2M (соответственно переход на тестинг) и всё по новой… Задолбало - аж жуть.

1 лайк

Проблема до сих пор не решена, есть вообще планы по решению этого вопроса?

Если бы могли и хотели - давно бы сделали.