Инструменты пользователя

Инструменты сайта


MQTT IO - проброс GPIO ресурсов в HomeAssistant через mqtt-io

Для проброса ресурсов контроллеров в MQTT можно использовать проект mqtt-io.

основным преимуществом данного способа является использование Home Assistant MQTT discovery (сущности появятся в HA без необходимости прописывания их вручную в yaml)

Известные проблемы и ньюансы:

  • Загрузка одного из ядер CPU может достигать 40-60% (Issue на github)
  • Невозможность одновременного использования GPIO через sysfs.

Установка и ручной запуск

Получение 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

Запуск через systemd

Подразумеваем, что сам 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

Конфигурационные файлы и unexport для контроллеров JetHub

mqtt-io.txt · Последнее изменение: 2021/09/29 09:18 — Pavel Sokolov

Инструменты страницы