MQTT

Aufbau von MQTT

Der Datenaustausch mit MQTT erfolgt über einen zentralen MQTT-Broker, an den ein Gerät Daten sendet und der diese an Empfänger weiterleitet. Das DatenBerg Gateway "subscribed" sich auf ein definiertes Topic und leitet alle empfangenen Daten an die smartPLAZA weiter. Wie MQTT im Detail funktioniert, erklärt unser Beitrag zur Funktionsweise von MQTT.

Parameter für MQTT

Für den Empfang von Daten via MQTT müssen folgende Parameter definiert werden:

  • host: Adresse des MQTT-Servers
  • port: Port des MQTT-Servers
  • topic: Zu überwachendes Topic oder Topics
  • type: Payload-Format. Mögliche Werte:
    • text: Zeichnet den gesamten Text der Payload in ein Feld auf.
    • json: Interpretiert die Payload als JSON mit Name-Wert-Paaren und erzeugt ein Feld für jeden Eintrag.

Optional können diese Parameter definiert werden:

  • transformation: Plugin (Python-Datei), das die Payload transformiert. Die Datei muss im Ordner Plugins liegen.
  • user: Benutzername zur Anmeldung
  • password: Entsprechendes Passwort

Wann benötige ich eine Transformation?

Das Gateway erwartet die Daten zur Weitersendung in einem JSON-Format mit Namen-Wert Paaren. Jede Spalte muss dabei als Paar auftreten, das gilt sowohl für Metadaten als auch für Messmerkmale. Im folgenden Beispiel ist eine passende JSON-Datei gegeben. Liegen die Daten im Payload der MQTT-Message nicht in einem solchen Format vor, muss ein Python Skript zur Transformation eingesetzt werden.

{
            "Uhrzeit": "2024-03-12 12:34:53",
            "Fertigungsauftrag": 1883,
            "Temperatur_IST": 34.1
 }

Beispielkonfiguration MQTT

Das folgende Beispiel zeigt eine Verbindung zu einem MQTT Broker mit der IP-Adresse 10.123.45.20 auf Port 1883. Alle Daten auf den Sub-Topics des Topics "Data" sind zu empfangen. Die Daten werden bereits als JSON gesendet und können direkt weitergeleitet werden.

[
    {
        "bucket": "mqtt_daten",
        "writeKey": "123456789",
        "source": "mqtt",
        "params": {
            "host": "10.123.45.20",
            "port": 1883,
            "topic": "Data/#",
            "type": "json"

        }

    }
]