Корректная обработка ошибок Zigbee

В текущей реализации работы с zigbee вообще не учитываются ошибки связи.
Например датчик температуры отвалился, а везде в инфраструктуре wb этого не видно.

image

Есть какие-то описанные BestPractice для полноценной обработки ошибок Zigbee?

Пытался сделать обработку через wb-rules, но столкнулся с тем, что для zigbee устройств невозможно получить controlList(), хотя isVirtual() === true и все нужные топики есть.

log.info("0xa4c138dc1a4d80ac");

var device = getDevice(deviceId);

log.info(JSON.stringify(device)); // {"__deviceId":"0xa4c138dc1a4d80ac"}

log.info(device.isVirtual()); // true

var controlList = device.controlsList();

log.info(controlList.length); // ТУТ ПЕЧАТАЕТСЯ 0

Добрый день!

Рекомендую данную статью, где собраны примеры правил и решения от сообщества.

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

Рекомендую данную статью, где собраны примеры правил и решения от сообщества.

В той статье нет информации по вопросу.

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

Я к этому же пришёл, но столкнулся с проблемой, которая описана во втором сообщении.

Насчёт второго сообщения…

Ещё поэксперементировал и выяснил, что такое поведение возникает только если wb-rules запускаются, когда устройство было уже offline.

Если устройство было online,а потом стало offline, то список контролов возвращается нормально.

Добрый день,

Это вполне ожидаемое поведение.

Ну а workaround есть какой-нибудь? Сейчас получается, что любая перезагрузка контроллера/перезапуск wb-rules (при обновлении например) приведёт к тому, что невозможно будет корректно выставить статусы ошибки.

Добрый день!

Посовещался с коллегами — рабочего варианта для отслеживания отключенных Zigbee-устройств нет.

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

В Z2M есть опция “отслеживать состояние устройств” (Настройки - Доступность - Availability).
У устройств появляются топик “availability” с содержимым {“state”: “offline”} или {“state”: “online”}. Может на этом построить отслеживание?

Да, я именно на него и смотрю в своих правилах.

НО! Проблема в том, что если устройство offline и перезапускается wb-rules (обновление, перезагрузка контроллера), то нормально передать статус оффлайн не получается уже.

На что поддержка пока ответила вот так вот ))

Проблема не в том, как определить offline/online, а в том что

Добрый день,

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

Я постараюсь воспроизвести ситуацию у себя и помочь с проблемой.