Home assistant mqtt autodiscovery

Добрый день, планирую использовать WirenBoard в связке с Home Assistant.
Настроил mqtt бридж до инстанса с home assistant. Все отлично работает, топики приходят, даже вручную можно сущности добавить и будет происходить взаимодействие, но учитывая как много сущностей писать придется это вариант не лучший.
При этом в ha есть механизм mqtt autodiscovery, который описан здесь
HA mqtt discovery

То есть по большому счету нужно добавить для каждого устройства добавить топик config с данными в виде json. Вот пример нагрузки для реле https://www.home-assistant.io/docs/mqtt/discovery/#switches

{
    "name": "wb_0_kotel",
    "unique_id": "wb_mr6c_26_0_kotel",
    "state_topic": "/client/wb_adq6cca2/devices/wb-mr6c_26/controls/K1",
    "command_topic": "/client/wb_adq6cca2/devices/wb-mr6c_26/controls/K1/on",
    "payload_off": 0,
    "payload_on": 1
}

Это пример моей настройки устройства
и это надо отправить в топик /homeassistant/switch/wb_adq6cca2/wb-mr6c_26_K1/config
Тогда ha сразу увидит эту сущность как переключатель и сможет им управлять через стандартный механизм mqtt.

мои настройки бриджа
image

Вообще есть скрипт на питоне который делает почти то что надо,

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

Добрый день!
Извиняюсь, что отвечаю с такой задержкой.
Обсудили с коллегами, решили так:
идея, безусловно, хорошая. Но если делать, то имеет смысл сразу реализовать нормальную поддержку Home Assistant. Пока не готовы выделить под это ресурсы, заняты другими задачами.
Но идею запомнили.

Доброго дня!

Подскажите, как-то изменилась ситуация по данному вопросу?

Спасибо.

Здравствуйте! К сожалению, пока данный вопрос без изменений: в ближайший планах нет реализации полноценной поддержки Home Assistant.

Накидал скрипт который это делает на wb-rules - https://github.com/MatkovIvan/wb-homeassistant
Пока только для serial девайсов, на днях допилю до ума, но может кому пригодится даже в таком состоянии :slight_smile:
cc @sag3ll0

@Ivan_Matkov
Здравствуйте, репозиторий по ссылке недоступен.

Упс, по дефолту приватный создал. Исправил

Добрый день!

Пробовала выполнить скрипт - получаю ошибку

Ошибка правила: TypeError: invalid base value
duk_hobject_props.c:2000
registerDevice /etc/wb-rules/mqtt_autodiscovery.js:127
anon /etc/wb-rules/mqtt_autodiscovery.js:144 preventsyield
forEach native strict preventsyield
anon /etc/wb-rules/mqtt_autodiscovery.js:145 preventsyield
forEach native strict preventsyield
registerSerialDevices /etc/wb-rules/mqtt_autodiscovery.js:146
anon /etc/wb-rules/mqtt_autodiscovery.js:150 preventsyield

С чем это может быть связано? В системе зарегистрированы только реле. Все виртуальные устройства удалены.

Заранее спасибо :pray:

Ещё вопрос - удалось ли вам нормально скрестить димер светодиодных лент WB с Home Assistant? Все варианты шаблонов работаю с «глюками», главным образом из-за того, что HA пытается при включении слать дополнительное сообщение на включения вместо записи RGB/on r;g;b одной командой. Приходится колхозить через виртуальные устройства. Может есть нормальный готовый вариант ? :slight_smile:
Подозреваю, что аналогичная проблема возникнет с мосфет-димером.

Привет.

Судя по всему по ид не может найти девайс из конфига, странно. Надо будет добавить проверки на это и логи по хорошему :slight_smile:
Виртуальные девайсы не должны мешать, у самого их много.
Диммера светодиодных лент у меня нет, проверить не могу.

Здравствуйте. Там беда в имени устройства: нельзя пробелы и точки, надо строчку

var deviceId = "{}_{}".format(device.device_type, device.slave_id).toLowerCase()

заменить на

var deviceId = "{}_{}".format(device.device_type, device.slave_id).toLowerCase().replace('.', '').replace(' ', '-');

Должно помочь.

У меня в таком формате устройства тоже не находятся (почему, собственно, необходим именно такой формат?). А вот так вполне себе начинает работать:

var deviceId = device.id;

добрый день, а не подскажете как этим пользоваться?

Копируете скрипт в /etc/wb-rules/ (я делаю это через Winscp на Windows’e или по адресу fish://root@<ip_контроллера>/ в файловом менеджере на линуксе с KDE) и всё - он сразу запустится. Он будет выполнен движком wb-rules.

Посмотреть, как всё прошло, можно в логе. В веб-интерфейсе Настройки -> Системный журнал. Чтобы быстрее найти логи движка wb-rules, в фильтре вместо “все сервисы” выберите “wb-rules.sevice”, а вместо “Все сеансы”, выберите самый первый из списка.

спасибо, это я уже сделал… вот судя по всему у меня не работает автодискавери… подскажите как поправить?

подскажите, как включить автодискавери???

В Home Assistant autodiscovery включено по умолчанию. Правильно ли у Вас настроена интеграция с mqtt?
См. здесь пункт " Установка MQTT-интеграции":

https://wirenboard.com/wiki/Home_Assistant

думаю правильно) те если руками в configuration.yaml я добавляю сущности - все работает.
но вот новых сущностей нет:

cat /etc/mosquitto/conf.d/bridge1.conf
connection bridge1
#address of server
address 10.10.30.152
notifications true
notification_topic /client/wb/bridge1_status
remote_username {логин}
remote_password {пасс}
restart_timeout 20

topic /devices/# both 0 “” /wb