Ich verwende zur Zeit eine Raspberry Pi als Heimautomasierungs-Server. Es läuft ein Rasbian Jessie.
Die Installation des MQTT Brokers Mosquitto geht folgendermaßen:
Installation ¶
# Pakete installieren
sudo apt-get install mosquitto mosquitto-clients
# Den Broker so einrichten, dass er beim Systemstart ausgeführt wird:
sudo systemctl enable mosquitto.service
Das war’s schon.
Testen ¶
Mosquitto läuft jetzt und kann mit den Clients getestet werden:
# Auf Meldungen an das Topic "test" warten
mosquitto_sub -h localhost -v -t test
In einem zweiten Terminal:
# Eine Nachricht an das Topic "test" senden
mosquitto_pub -h localhost -t test -m "Hello"
Im ersten Terminal erscheint:
test Hello
Sicherheit ¶
Um den Broker abzusichern und eine Passwort-Abfrage zu installieren sind drei Schritte notwendig.
- Mosquitto für Zugriffslisten konfigurieren
- Benutzer mit Passwörtern anlegen
- Zugriffsrechte vergeben
Mosquitto für Zugriffslisten konfigurieren
Die Datei /etc/mosquitto/conf.d/acl.conf
mit folgendem Inhalt anlegen:
acl_file /etc/mosquitto/conf.d/acl
password_file /etc/mosquitto/conf.d/passwd
allow_anonymous false # Kein Zugriff für Benutzer ohne Passwort
Benutzer mit Passwörtern anlegen ¶
Benutzer werden mit ihren Passwörtern in der Datei passwd gespeichert. Angelegt werden sie mit dem Befehl mosquitto_passwd. Er fragt für den angegebenen Benutzernamen ein Passwort ab und speichert es in der Passwort-Datei.
sudo mosquitto_passwd /etc/mosquitto/conf.d/passwd admin
Das wiederholt man mit allen Benutzern, die man gerne hätte.
Zugriffsrechte vergeben ¶
Die Zugriffsrechte werde dann in der acl-Datei festgelegt:
# admin darf alles
user admin
topic readwrite #
topic readwrite $SYS/#
# openhab2 darf alles lesen, aber nur bestimmte Topics schreiben
# um Steuer-Befehle abzusenden
user openhab2
topic read #
topic write garage/target
topic write sonoff_rf_1/cmnd/POWER
# Die Sonoffs bekommen alle den gleichen Benutzer, also
# volle Berechtigung auf die Sonoff-Topics
user sonoff_pow
topic readwrite sonoff_pow_1/#
topic readwrite sonoff_pow_2/#
topic readwrite sonoff_rf_1/#
# Homegear hat auch sein eigenes Topic mit kompletten Rechten
user homegear
topic readwrite homegear/#
# Und das gleiche für die Garage
user garage
topic readwrite garage/#
Jeder bekommt nur die Rechte, die er wirklich benötigt.
Jetzt noch den Broker neu starten, damit die Config übernommen wird:
sudo systemctl restart mosquitto.service
Fertig!