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 Like

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

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

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

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