Title: M1.2.2: MQTT Dienste bereitstellen und nutzen
Course: LF07 - Cyber-physische Systeme ergänzen - FI/ITSE - Raspberry Pi > Section: LS7.1: Messdatenerfassungssysteme funktional zusammenführen

MQTT Broker und Clients auf einem Linuxsystem (Raspberry Pi) installieren

Die offizielle Dokumentation: https://mosquitto.org/documentation/

Eine sehr anschauliche Erklärung zur Installation und Nutzung eines MQTT Brokers und Clients auf einem Linuxsystem ist hier zu finden: https://plantprogrammer.de/mqtt-auf-dem-raspberry-pi-mosquitto/

Hier eine kurze Zusammenfassung des Artikels:

Installation des Brokers mosquitto (Linux)
```sudo apt install mosquitto```

Installation der Clientkomponente
```sudo apt install mosquitto-clients```

Prüfen, ob der Server korrekt läuft
```sudo systemctl status mosquitto```
Als Ergebnis sollte „active (running)“ zurückgeliefert werden.

Subscriber und Publisher
Mit Parameter -h wird die IP-Adresse des Brokers angegeben. In unserem Fall arbeiten wir direkt auf derselben Maschine, daher verwenden wir localhost oder 127.0.0.1 als Hostadresse. Wenn der Broker auf einem entfernten System arbeitet, wird hier die IP-Adresse bzw. URL angegeben.
Mit -t wird das Topic ausgewählt. Hier verwenden wir sensor1/motd (motto of the day,  wird häufig in der IT als Begrüßungsformel bei Systemen benutzt)

Subscriber ausführen in Terminalfenster 1
```mosquitto_sub -h localhost -t "sensor1/motd"```

Publisher ausführen in Terminalfenster 2
```mosquitto_pub -h localhost -t "sensor1/motd" -m "Good morning!"```
Mit dem Schalter -m wird der eigentliche Inhalt der Nachricht angehängt.

In Terminalfenster 1 sollte nun Good morning! angezeigt werden

Mosquitto läuft als Dienst unter Linux. Ein Dienst ist ein im Hintergrund des Betriebssystems laufendes Programm. systemd ist die engine unter Linux zur Verwaltung von Diensten. Mit folgenden Befehlen kann man das Verhalten von Diensten beeinflussen:
```sudo systemctl start mosquitto # Starten```
```sudo systemctl stop mosquitto # Stoppen```
```sudo systemctl restart mosquitto # Neustarten```
```sudo systemctl disable mosquitto # Autostart deaktivieren```
```sudo systemctl enable mosquitto # Autostart aktivieren```

Hinweis: In der Powershell gibt es ähnliche Befehle wie z.B. get-service, start-service, stop-service, suspend-service, restart-service

MQTT Client auf dem Smartphone installieren

Ganz einfach kann man auf einen Broker mit einer Smartphone App zugreifen. Es sind für alle Smartphonesysteme MQTT Client Apps verfügbar, z.B.:

- MQTT Dash aus dem Playstore https://play.google.com/store/apps/details?id=net.routix.mqttdash&hl=de
- IoTMQTT-Panel aus dem Playstore
- IoT-onoff aus dem Applestore https://apps.apple.com/us/app/iot-onoff/id1267226555
- u.v.m.