Február 21, 2017

Ako odoslať príkaz z Pythonu cez MQTT na RGB LED, ktorá je pripojená k ESP8266

V minulom článku som popisoval postup, ako odoslať hodnuto so záťažou servera cez MQTT. Hodnotu je potom možné prostredníctvom Node-RED previesť na príkaz pre LampESP s farebnou ledkou. Výsledok je prostý, ledka indikuje farbou záťaž na serveri.

Ďalšia možnosť, ako odoslať príkaz s farbou priamo zo servera, je použiť Python.

Jednoduch nainštalujte paho-mqtt:

pip install paho-mqtt

Tu je krátky Python skrit (publish_server_load.py):

#!/usr/bin/env python3

import paho.mqtt.publish as publish
import os

color = 'red'
load = os.getloadavg()[0]
if load < 0.7:
    color = 'black'
elif load < 1.5:
    color = 'blue'
elif load < 3:
    color = 'green'
elif load < 7:
    color = 'orange'

publish.single('/server/monitoring/command', color, hostname='iot.sinusgear.com')

ESP modul, by mal byť nastavený na príjem témy /server/monitoring. Kód LampESP 0.3 je dostupný na GitHube.

Do crontabu stačí potom vložiť nasledujúci riadok:

* * * * * /usr/local/bin/publish_server_load.py

V prípade, že používate virtualenv, tak by príkaz mal vyzerať nasledovne:

* * * * * /opt/my-python-env3/bin/python /usr/local/bin/publish_server_load.py