MQTT ist ein einfaches und weit verbreitetes Protokoll für IoT / Smart Home. Es besteht aus einem Server (oder "Broker"), und Clients.

Es gibt Kanäle ("Topics"), auf denen man abbonieren und Nachrichten empfangen kann, und Nachrichten senden kann.

Server

Als Server läuft auf dem smart-home-server die Open Source Software Mosquitto.

Installation

Bei Raspis ganz einfach mit:

sudo apt install mosquitto

Standarmäßig läuft der Server dann auf Port 1883.

User mit Passwort lassen sich mit mosquitto_passwd einrichten:

sudo mosquitto_passwd -c /etc/mosquitto/passwd <user>
und dann das Passwort zweimal eintippen. Ein User kann von mehreren Geräten verwendet werden.

Logging

Detaillierte Logs kann man in der Konfiguration in /etc/mosquitto/mosquitto.conf mit

log_type all
aktivieren (standardmäßig aus, damit die Logs nicht zu groß werden).

Den Log kann man dann in Echtzeit mitverfolgen mit:

sudo tail -f /var/log/mosquitto/mosquitto.log

Clients

CLI

Es gibt einen CLI client, den man auf Raspis installieren kann mit:

sudo apt install mosquitto-clients

Neue Nachrichten auf einem Topic empfangen mit:

mosquitto_sub -t "name/des/topic" -v
(Die Slash scheinen nur eine Schreibweise zu sein, aber haben scheinbar keine weitere Bedeutung)

Und Nachrichten senden mit:

mosquitto_pub -t "name/des/topic" -m "nachricht"