Ах, ну это возможно объясняет вашу проблему. В начале немного теории, просто чтобы мы одинаково понимали как все устроено.
По дефолту работа с zigbee выглядит так:
zigbee device -> zigbee coordinator -> ZHA -> HA
С девайсом все понятно, ваш пульт. Он отправляет данные zigbee координатору. Не знаю какое железо у вас, наверняка какойто usb "свисток" с антенной. Координатор принимает zigbee-пакеты от устройств. Дальше данные передаются ZHA (Zigbee Home Automation). ZHA это встроенная в HA интеграция для работы с zigbee, она создает и управляет zigbee-сетью, понимает zigbee clusters и endpoints и превращает данные устройств в сущности HA. Например датчик температуры отправил zigbee-пакет, ZHA понимает что это значение температуры 23.5C и создает или обновляет в HA -> sensor.living_room_temperature
Проблема в этой связке в том что ZHA плохо понимает zigbee устройства, особенно кастомные, редкие, китайские... короче те, конфигурация которых отличаются от стандартов zigbee. хорорший пример девайсы Tuya.
Но выход есть
zigbee device -> zigbee coordinator -> Zigbee2MQTT (Z2M) -> Mosquitto -> MQTT -> HA
Z2M получает от координатора "сырые" zigbee данные и понимает, что они означают.
например получает чтото вроде -
и превращает в
и публикует это в MQTT topic, например
Mosquitto сам ничего про zigbee не понимает, его задача просто принять сообщение -
и раздать его тем, кто подписан на этот topic. Подписантов может быть одновременно несколько, например Home Assistant, Node-RED, ваша программа, логгер
Home Assistant - получает MQTT-сообщения и создает
Код: Выделить всё
entities: sensor.kitchen_temperature, sensor.kitchen_battery
и после этого их уже можно использовать в dashboard, automation и т.д.
Такой подход дает очень много преимуществ по сравнению с ZHA:
- Шире поддержка устройств, особенно Tuya и менее стандартных девайсов
Больше настроек устройства - reporting, power-on state, sensitivity, calibration и т.д.
Лучше диагностика - видно endpoints, clusters, link quality, маршруты, raw Zigbee данные
Проще поддержать новое устройство через custom/external converter (про это чуть позже)
Независимость от Home Assistant: zigbee-сеть продолжает жить как отдельный сервис
MQTT дает гибкость - теми же Zigbee-данными могут пользоваться HA, Node-RED, свои скрипты и другие системы
Минус один - компонентов больше.
Как это связанно с вашей проблемой?
Если пульт очень "китайский" то он просто не поддерживается полностью на стороне ZHA, расспознается какойто знакомый ендпоинт ("как датчик климата...") и на этом все.
Что делать?
переехать на описанный выше сетап, поставить и сконфигурить Zigbee2MQTT, Mosquitto, MQTT
Бывает так что Z2M сам по себе не решает проблемму, если zigbee девайс совсем уж "особенный", тогда на помощь приходит гибкость описанной архетиктуры - можно добавить собственный кастомный внешний конвертор в Z2M (custom/external converters)
Это по сути маленький JavaScript-модуль, который объясняет Z2M, как работать с девайсом, которого он ещё не знает или поддерживает не полностью.
Например, новое Tuya-устройство подключается к сети, Z2M видит:
Код: Выделить всё
manufacturer: _TZ1234_abcd1234, model: TS12345
но не знает, что его zigbee-поля означают. Конвертор говорит примерно следующее:
Код: Выделить всё
поле 1 -> temperature,
поле 2 -> humidity,
поле 3 -> battery,
команда ON -> отправить такой zigbee command
Вот купили вы новый zigbee IR пульт. Z2M его видит, но определяет неправильно или вообще показывает
Можно написать converter и определить
После этого устройство начинает нормально появляться в Z2M/HA не дожидаясь, пока поддержку добавят официально.
Вот это одна из сильнейших сторон Z2M по сравнению с ZHA, кастомную поддержку устройства довольно удобно добавить самому.