Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | Vorhergehende Überarbeitung | ||
mqtt [04.06.2019] |
mqtt [27.12.2023] hochrath [RAM-Disk] |
||
---|---|---|---|
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:// | ||
+ | |||
+ | |||
+ | |||