Для проброса ресурсов контроллеров в MQTT можно использовать проект mqtt-io.
основным преимуществом данного способа является использование Home Assistant MQTT discovery (сущности появятся в HA без необходимости прописывания их вручную в yaml)
Известные проблемы и ньюансы:
Получение root
$ sudo -i
Установка mqtt-io:
# pip3 install mqtt-io
Конфигурационный файл для вашей модели контроллера нужно скопировать в /etc/mqtt-io-config.yaml (не забудьте изменить host/user/password в соответствии с настройками вашего MQTT сервера)
Перед запуском mqtt-io нужно удалить export всех GPIO в sysfs (команда для конкретной модели JetHub указана в соответствующем разделе ниже)
Пример для JetHub D1:
# echo 436 452 453 454 455 456 462 467 469 470 471 472 | xargs -n 1 echo >/sys/class/gpio/unexport
Запустить mqtt-io:
# python3 -m mqtt_io /etc/mqtt-io-config.yaml
Подразумеваем, что сам mqtt-io и /etc/mqtt-io-config.yaml уже установлены.
Запускаем редактор:
sudo nano /etc/systemd/system/mqtt-io.service
Копируем туда (Если у вас не JetHub D1, то ExecStartPre нужно заменить):
[Unit] Description=mqtt-io After=network.target [Service] ExecStartPre=sh -c "echo 436 452 453 454 455 456 462 467 469 470 471 472 | xargs -n 1 echo >/sys/class/gpio/unexport; exit 0" ExecStart=python3 -m mqtt_io /etc/mqtt-io-config.yaml StandardOutput=inherit StandardError=inherit Restart=always User=root [Install] WantedBy=multi-user.target
Запускаем сервис:
sudo systemctl start mqtt-io
Проверяем статус/логи:
sudo systemctl status mqtt-io
Добавляем в автозагрузку:
sudo systemctl enable mqtt-io.service
Смотрим лог:
sudo journalctl -u mqtt-io.service -f