Периферия JetHub в MQTT через mqtt-io в Linux

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

Установка

sudo apt install python3-pip
sudo pip3 install mqtt-io

Ручной запуск

  • Перед запуском нужно сделать unexport всех GPIO из sysfs:

    Предупреждение

    Пример для D1/D1+ basic. См. Конфигурационные файлы для других контроллеров.

    echo 436 452 453 454 455 456 462 467 469 470 471 472 | xargs -n 1 echo >/sys/class/gpio/unexport
    
  • Запуск:

    python3 -m mqtt_io /etc/mqtt-io.yaml
    

Автоматический запуск через systemd

Примечание

Подразумеваем, что сам mqtt-io и /etc/mqtt-io.yaml уже установлены.

  • Запускам редактор:

    sudo nano /etc/systemd/system/mqtt-io.service
    
  • Вставляем в него следующее:

    Предупреждение

    • Пример для D1/D1+ basic. Для других контроллеров 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.yaml
    StandardOutput=inherit
    StandardError=inherit
    Restart=always
    User=root
    
    [Install]
    WantedBy=multi-user.target
    
  • Запускаем сервис:

    sudo systemctl enable mqtt-io
    sudo systemctl start mqtt-io
    
  • Смотрим логи:

    sudo journalctl -u mqtt-io -f
    

Конфигурационные файлы

Примечание

Не забудьте изменить host, user, password в соответствии с настройками вашего MQTT сервера.

JetHub D1/D1+ basic

  • mqtt-io.yaml

  • Unexport

    echo 436 452 453 454 455 456 462 467 469 470 471 472 | xargs -n 1 echo >/sys/class/gpio/unexport
    

Ограничения

  • Загрузка одного из ядер CPU может достигать 40-60% (github issue).

  • Невозможность одновременного использования GPIO через sysfs.