mqtt
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Vorhergehende Überarbeitung | |||
| — | mqtt [27.12.2023] (aktuell) – [RAM-Disk] hochrath | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== MQTT - Einrichtung eines Mosquitto-Serverdienstes ====== | ||
| + | |||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | Für die Datenübertragung von einem Gerät per Netzwerk auf ein anderes Gerät kann MQTT genutzt werden.\\ | ||
| + | Ich habe im Netz dazu viele kleine Anleitungen gefunden und will hier kurz meine Vorgehensweise darstellen.\\ | ||
| + | \\ | ||
| + | ==== Installation ==== | ||
| + | |||
| + | Auf einem Ubuntu-Server 18.04 wird zunächst die Software installiert: | ||
| + | < | ||
| + | sudo su | ||
| + | apt-get update | ||
| + | apt-get upgrade | ||
| + | |||
| + | apt-get install mosquitto mosquitto-clients | ||
| + | |||
| + | apt-get update | ||
| + | apt-get upgrade | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | ==== Dienst ==== | ||
| + | |||
| + | Prüfen ob der Dienst läuft: | ||
| + | < | ||
| + | root@mqttserver: | ||
| + | ● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker | ||
| + | | ||
| + | | ||
| + | Docs: man: | ||
| + | Tasks: 1 (limit: 1109) | ||
| + | | ||
| + | | ||
| + | |||
| + | Jun 04 11:26:08 mqttserver systemd[1]: Starting LSB: mosquitto MQTT v3.1 message broker... | ||
| + | Jun 04 11:26:09 mqttserver mosquitto[747]: | ||
| + | Jun 04 11:26:09 mqttserver mosquitto[747]: | ||
| + | Jun 04 11:26:09 mqttserver systemd[1]: Started LSB: mosquitto MQTT v3.1 message broker. | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | Wunderbar. Nun starte ich putty und erstelle eine neue Verbindung.\\ | ||
| + | Im Putty-Fenster starte ich den Datenempfang: | ||
| + | |||
| + | < | ||
| + | root@mqttserver: | ||
| + | |||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | In der Kommandozeile des Servers sende ich eine Info ab und betrachte die Datenausgabe im Putty-Empfangsfenster.\\ | ||
| + | \\ | ||
| + | === Daten senden === | ||
| + | < | ||
| + | root@mqttserver: | ||
| + | root@mqttserver: | ||
| + | </ | ||
| + | |||
| + | === Daten empfangen === | ||
| + | < | ||
| + | root@mqttserver: | ||
| + | datenempfang erste Daten | ||
| + | |||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | Möchte man Daten von einem Client versenden wird nur mosquitto-clients installiert: | ||
| + | < | ||
| + | sudo su | ||
| + | apt-get update | ||
| + | apt-get upgrade | ||
| + | |||
| + | root@mqttserver: | ||
| + | </ | ||
| + | |||
| + | Die Information wird dann mit dem Namen des Empängers bzw. dessen IP-Adresse versendet: | ||
| + | < | ||
| + | root@mqttclient: | ||
| + | root@mqttclient: | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | Der Server gibt diese aus: | ||
| + | < | ||
| + | root@mqttserver: | ||
| + | datenempfang Gruß vom Client | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | ==== Auswertung ==== | ||
| + | |||
| + | \\ | ||
| + | Um die eintreffenden Daten verarbeiten zu können, installiert man JSON-Aufbereiter jq.\\ | ||
| + | < | ||
| + | sudo apt-get install jq | ||
| + | </ | ||
| + | |||
| + | Danach wird eine Script-Datei erstellt:\\ | ||
| + | < | ||
| + | nano / | ||
| + | chmod +x / | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | #!/bin/bash | ||
| + | |||
| + | MQHOST=192.168.178.30 | ||
| + | mosquitto_sub -h $MQHOST -t raspi4cputemp | while read RAW_DATA | ||
| + | do | ||
| + | a=$(echo $RAW_DATA | jq -R .); | ||
| + | echo $a; | ||
| + | done; | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | ==== RAM-Disk ==== | ||
| + | |||
| + | |||
| + | Verzeichnis erstellen | ||
| + | < | ||
| + | mkdir / | ||
| + | </ | ||
| + | \\ | ||
| + | RAM-Disk einrichten | ||
| + | < | ||
| + | tmpfs / | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | und die Daten in eine Datei schreiben: | ||
| + | < | ||
| + | #!/bin/bash | ||
| + | |||
| + | MQHOST=192.168.178.30 | ||
| + | mosquitto_sub -h $MQHOST -t raspi4cputemp | while read RAW_DATA | ||
| + | do | ||
| + | a=$(echo $RAW_DATA | jq -R .); | ||
| + | echo $a; | ||
| + | echo $a > / | ||
| + | done; | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | Quellen:\\ | ||
| + | https:// | ||
| + | https:// | ||
| + | https:// | ||
| + | https:// | ||
| + | |||
| + | |||
| + | |||
