MQTT mit Mosquitto
Mosquitto1 ist ein MQTT-Broker. MQTT2 ist ein Protokoll über das sehr viele smarte Geräte Statusinformationen senden und Steuerbefehle erhalten können. Der MQTT-Broker ist quasi eine Zustandsdatenbank für die angeschlossenen MQTT-Clients.
Die Installation und Einrichtung ist sehr einfach:
apt install mosquitto mosquitto-clients
Anschließend erzeugt man eine Datei mit Benutzer und Kennwort und passt die Konfiguration an:
mosquitto_passwd -c /etc/mosquitto/passwd gpkvt
mcedit /etc/mosquitto/mosquitto.conf
mcedit /etc/mosquitto/conf.d/listener.conf
/etc/init.d/mosquitto restart
Die mosquitto.conf
3 sollte wie folgt aussehen:
pid_file /run/mosquitto/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
Die listener.conf
so:
listener 1883 0.0.0.0
password_file /etc/mosquitto/passwd
allow_anonymous false
Die korrekte Funktion von Mosquitto kann mit den Befehlen mosquitto_sub
4 und mosquitto_pub
5 getestet werden, in einem Terminal wird der folgende Befehl ausgeführt:
mosquitto_sub -h localhost -t test -u gpkvt -P <PASSWORD>
In einem weiteren Terminal dieser:
mosquitto_pub -h localhost -t test -m "hello world" -u gpkvt -P <PASSWORD>
Im Terminal mit mosquitto_sub
sollte daraufhin hello world
erscheinen.
Ein verbreitetes Anwendungsszenario für MQTT sind z.B. mit Tasmota6 geflashte Steckdosen. Aber auch Eigenkreationen auf Basis von ESP327/ESP82668 Mikrokontroller lassen sich leicht an MQTT Server anbinden und steuern. Es gibt auch viele iOS und Android Apps, mit denen sich MQTT Geräte auslesen und ansteuern lassen. Ich nutze MQTT auch gern um Statusinformationen meiner SmartHome Geräte in einem standardisierten Format und Protokoll zu übertragen und lese diese dann z.B. mit Prometheus9 ein und werte die Daten mit Grafana10 aus (z.B. Temperatur und Luftfeuchtigkeit).