====== 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:~# service mosquitto status ● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker Loaded: loaded (/etc/init.d/mosquitto; generated) Active: active (running) since Tue 2019-06-02 11:26:09 UTC; 27min ago Docs: man:systemd-sysv-generator(8) Tasks: 1 (limit: 1109) CGroup: /system.slice/mosquitto.service └─789 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf Jun 04 11:26:08 mqttserver systemd[1]: Starting LSB: mosquitto MQTT v3.1 message broker... Jun 04 11:26:09 mqttserver mosquitto[747]: * Starting network daemon: mosquitto Jun 04 11:26:09 mqttserver mosquitto[747]: ...done. 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:~# mosquitto_sub -h localhost -v -t datenempfang \\ In der Kommandozeile des Servers sende ich eine Info ab und betrachte die Datenausgabe im Putty-Empfangsfenster.\\ \\ === Daten senden === root@mqttserver:~# mosquitto_pub -h localhost -t datenempfang -m "erste Daten" root@mqttserver:~# === Daten empfangen === root@mqttserver:~# mosquitto_sub -h localhost -v -t datenempfang 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:~# apt-get install mosquitto-clients Die Information wird dann mit dem Namen des Empängers bzw. dessen IP-Adresse versendet: root@mqttclient:~# mosquitto_pub -h localhost -t 192.168.100.58 -m "Gruß vom Client" root@mqttclient:~# \\ Der Server gibt diese aus: root@mqttserver:~# mosquitto_sub -h localhost -v -t datenempfang 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 /root/scripte/mqtt_cputemp_eingang2.sh chmod +x /root/scripte/mqtt_cputemp_eingang2.sh #!/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 /var/www/html/ramdisk \\ RAM-Disk einrichten tmpfs /var/www/html/ramdisk tmpfs defaults,size=10m 0 0 \\ \\ 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 > /var/www/html/ramdisk/cputemp.txt done; \\ \\ Quellen:\\ https://neuendorf-online.de/posts/heimautomatisierung/mqtt-broker-mosquitto-installieren/\\ https://smarthome-blogger.de/tutorial/mqtt-raspberry-pi-einfuehrung/\\ https://smarthome-blogger.de/tutorial/esp8266-mqtt-tutorial/\\ https://forum.creationx.de/lexicon/index.php?entry/38-jq-ein-leistungsstarkes-programm-zur-auswertung-von-mqtt-json-meldungen/\\