Appearance
Mosquitto â
Mosquitto ist der MQTT-Broker des Wohnmobils.
Der Dienst lĂ€uft als Docker-Container auf dem Raspberry Pi tsg-bobil und ĂŒbernimmt den Austausch von MQTT-Nachrichten zwischen verschiedenen Anwendungen und GerĂ€ten.
Zugriff â
Mosquitto verwendet den MQTT-Standardport:
1883
| Eigenschaft | Wert |
|---|---|
| Anwendung | Eclipse Mosquitto |
| Container | mosquitto |
| Port | 1883 |
| Broker im Womo-Netz | 192.168.8.10:1883 |
| Broker im Docker-Netz | mosquitto:1883 |
| Docker-Netzwerk | womo-net |
Mosquitto besitzt keine eigene WeboberflÀche.
Aufgabe â
MQTT arbeitet nach dem Publish/Subscribe-Prinzip.
Ein GerĂ€t oder eine Anwendung veröffentlicht eine Nachricht unter einem bestimmten Topic. Andere Teilnehmer können dieses Topic abonnieren und erhalten anschlieĂend die dort veröffentlichten Nachrichten.
Mosquitto ĂŒbernimmt dabei die Vermittlung zwischen Sendern und EmpfĂ€ngern.
text
MQTT
â
âŒ
Mosquitto
MQTT-Broker
â
âââââââââŽââââââââ
â â
Zigbee2MQTT Node-REDVerwendung im Wohnmobil â
Derzeit wird Mosquitto unter anderem fĂŒr die Ăbertragung der Zigbee-Sensordaten verwendet.
Zigbee2MQTT veröffentlicht die empfangenen Messwerte als MQTT-Nachrichten.
Node-RED abonniert die entsprechenden Topics und kann die Messwerte anschlieĂend weiterverarbeiten.
Der Datenweg lautet damit:
text
Zigbee-Sensor
â
â Zigbee
âŒ
Zigbee2MQTT
â
â MQTT
âŒ
Mosquitto
â
â MQTT
âŒ
Node-REDNode-RED kann die empfangenen Daten anschlieĂend beispielsweise:
- fĂŒr die Live-Anzeige im Womo-Handbuch bereitstellen
- fĂŒr die historische Speicherung an InfluxDB ĂŒbergeben
- fĂŒr weitere Automatisierungen und Auswertungen verwenden
MQTT-Brokerâ¶
Mosquitto speichert die historischen Messwerte nicht.
Der Broker ist in erster Linie fĂŒr den Transport und die Verteilung der MQTT-Nachrichten zustĂ€ndig.
Die dauerhafte Speicherung ausgewĂ€hlter Messwerte erfolgt ĂŒber Node-RED in InfluxDB.
Kommunikation im Docker-Netzwerk â
Mosquitto ist gemeinsam mit den anderen beteiligten Diensten in das interne Docker-Netzwerk
womo-net
eingebunden.
Docker-Container können den MQTT-Broker dadurch direkt ĂŒber seinen Containernamen erreichen:
mosquitto:1883
Dies wird beispielsweise von Zigbee2MQTT und Node-RED verwendet.
text
womo-net
Zigbee2MQTT âââș mosquitto:1883
âČ
â
Node-REDFĂŒr Anwendungen oder GerĂ€te auĂerhalb von Docker wird dagegen die IP-Adresse des Raspberry Pi verwendet.
Im Womo-Netz lautet die Adresse:
192.168.8.10:1883
Interne und externe Adresseâ¶
Innerhalb des Docker-Netzwerks wird Mosquitto ĂŒber mosquitto:1883 angesprochen.
GerÀte im normalen Womo-Netz verwenden dagegen 192.168.8.10:1883.
Dadurch bleibt die Kommunikation zwischen den Docker-Containern unabhÀngig von der jeweiligen IP-Adresse des Raspberry Pi.
Zugriffsschutz â
Der MQTT-Broker ist durch Benutzername und Passwort geschĂŒtzt.
FĂŒr die Kommunikation der Dienste wird der MQTT-Benutzer
womo-mqtt
verwendet.
Zigbee2MQTT und Node-RED verwenden diesen Benutzer fĂŒr die Anmeldung am Broker.
Das Passwort wird nicht im Handbuch dokumentiert.
MQTT-Zugangsdatenâ¶
MQTT-Passwörter sind Zugangsdaten und dĂŒrfen nicht im Handbuch oder im Git-Repository gespeichert werden.
Die Zugangsdaten werden separat in Bitwarden verwaltet.
MQTT-Topics â
MQTT-Nachrichten werden ĂŒber sogenannte Topics organisiert.
Zigbee2MQTT verwendet beispielsweise Topics nach folgendem Schema:
text
zigbee2mqtt/<GerĂ€tename>FĂŒr den derzeit verwendeten Raumklimasensor lautet das Topic beispielsweise:
text
zigbee2mqtt/RTF_Test_Pi8Eine Nachricht kann dabei unter anderem folgende Werte enthalten:
json
{
"battery": 90,
"humidity": 50.84,
"pressure": 991.5,
"temperature": 28.73
}Node-RED kann dieses Topic abonnieren und die enthaltenen Werte anschlieĂend weiterverarbeiten.
Weitere Verwendung â
Ăber Mosquitto können zukĂŒnftig auch weitere GerĂ€te und Anwendungen Daten austauschen.
Damit kann derselbe MQTT-Broker beispielsweise fĂŒr zusĂ€tzliche Sensoren oder die Ăbertragung von Messwerten der Victron-Komponenten verwendet werden.
Die bestehende MQTT-Struktur kann dadurch erweitert werden, ohne dass fĂŒr jede Datenquelle eine eigene Kommunikationsverbindung aufgebaut werden muss.