Daten vom RevPi über MQTT senden

Nun werden wir unsere Software RevPiPyLoad auf dem RevolutionPi installieren und das MQTT System aktivieren.

RevPiPyLoad installieren

RevPiPyLoad kann einfach über die Kunbus Paketquellen bezogen werden. Für die Installation melden wir uns per SSH am RevolutionPi an, bzw. nutzen einen angeschlossenen Monitor.

pi@RevPi ~/ $ sudo apt-get update

# Installieren
pi@RevPi ~/ $ sudo apt-get install revpipyload

Sollte es schon installiert sein, muss es mindestens auf die Version 0.7.2 aktualisiert werden!

pi@RevPi ~/ $ sudo apt-get update

# Updaten (alles)
pi@RevPi ~/ $ sudo apt-get dist-upgrade
RevPiPyload für MQTT konfigurieren

Die einfachste Variante der Konfiguration ist die Verwendung unseres grafischen Konfigurationstools RevPiPyControl. Bevor wir damit auf den Revolution Pi zugreifen können, muss die XML-RPC Schnittstelle in RevPiPyLoad aktiviert werden. Dies könnt ihr detailliert unter „RevPiPyLoad Installation auf den RevPi“ in unserem Schnellstart nachlesen.

Konfiguration mit RevPiPyControl

Wenn eine Verbindung per RevPiPyControl mit dem Revolution Pi hergestellt ist, öffnet man die Optionen über „PLC->PLC Optionen…“. Im unteren Teil findet man „MQTT Übertragung des Prozessabbilds“. Diese Option wird aktiviert! Über den Button „Einstellungen“ werden die MQTT Parameter konfiguriert.

Wir setzen den „Base topic“ auf „datensammlung/revpi01„, das Sendeintervall auf 15 Sekunden und die Brokeradresse auf die IP-Adresse des Raspberry Pis! Benutzername und Kennwort setzen wir gemäß den vergebenen Daten aus dem vorherigen Blogeintrag.

Alle Einstellungen mit den „Speichern“ Schaltflächen übernehmen. Das System wird nun gestartet und sendet alle 15 Sekunden die Werte der IOs, bei denen in piCtory der „Export“ Haken aktiv ist, an den Broker.

Konfiguration direkt am Revolution Pi

Wir können die Konfigurationsdatei von RevPiPyLoad auch direkt an unserem Revolution Pi bearbeiten und MQTT aktivieren. Dafür öffnen wir Diese in einem Texteditor:

pi@RevPi0000:~ $ sudo nano /etc/revpipyload/revpipyload.conf

In dem Editor finden wir alle MQTT Einstellungen in der [MQTT] Sektion.

Wir setzen mqtt = 1, den basetopic = datensammlung/revpi01 und das sendinterval = 15. Für die broker_address setzen wir die IP Adresse des Raspberry Pis und auch username und password auf die vergebenen Werte aus dem vorherigen Blogeintrag.

Nun mit Strg+X die Änderung speichern und das Speichern mit y bestätigen.

Der RevPiPyLoad Dienst muss nun neu gestartet werden um die Änderungen zu übernehmen.

pi@RevPi0000:~ $ sudo service revpipyload restart

Ab jetzt sendet RevPiPyLoad alle 15 Sekunden die Werte der IOs, bei denen in piCtory der „Export“ Haken aktiv ist, an den Broker.

Übertragung testen

Auf dem MQTT Broker können wir wieder mit mosquitto_sub die Nachrichten überwachen:

pi@raspberrypi:~ $ mosquitto_sub -u systemreader -P test -t "#" -v
datensammlung/revpi01/io/door_corridor 0
datensammlung/revpi01/io/door_workshop 1
datensammlung/revpi01/io/temp_heater 225
datensammlung/revpi01/io/temp_outside 287
So geht es weiter

Nun empfangen wir die Daten per MQTT auf unserem Cloud-Server. Dieser soll die Daten nun speichern. Dies zeigen wir in dem nächsten Blogeintrag.

Weiter >>

3 Antworten auf „Daten vom RevPi über MQTT senden“

  1. Hallo, danke für Eure tolle Arbeit.

    Daten vom revpi empfangen funktioniert einwandfrei. Event basiert via Taster und zyklisch.
    Leider funktioniert bei mir das setzen eines Outputs via MQTT nicht.
    Publish auf:
    datensammlung/revpi01/io/O_1
    mit wert 1 oder 0

    Ausserdem sehe ich nach dem starten von revpipyload mit:
    service revpipyload start
    und anschliessendem dmesg folgenden LOG Eintrag:
    piControl: Invalid Ioctl from revpipyload.py

    Was mache ich falsch?

    1. Hallo Stephan, vielen Dank für das Lob.

      Wenn du einen Eingang setzen möchtest, verwende bitte den Topic „datensammlung/revpi01/set/O_1″ (set, statt io). Dies ist wichtig da wir sonst im MQTT „Rückkopplungen“ bekommen würden. Prüfe bitte auch in der revpipyload.conf Datei, ob der Parameter write_outputs = 1 gesetzt ist.

      Die piControl Meldung tritt auf, wenn Python das Device das erste Mal öffnet. Ist aber nur eine Art „Schönheitsfehler“, den wir mal beseitigen werden. Ist für den eigentlichen Betrieb aber nicht von Bedeutung (wenn nur beim Starten).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.