Metainformationen zur Seite
MQTT Gateway - HTTP- und UDP-Interface
Mit dem MQTT Gateway Plugin ist es nicht nur möglich, Daten zwischen Loxone Miniserver und MQTT auszutauschen, sondern auch andere, nicht MQTT-fähige Geräte können via UDP oder HTTP Daten einliefern. Ist im MQTT Gateway das Topic, an das diese Geräte senden, abonniert, geht der Status auch an den Miniserver.
HTTP Interface
http://<lbuser>:<lbpass>@loxberry:80/admin/system/tools/mqtt.php?topic=<topic>&value=<value>&retain=<1/0>&transform=<transformername>
Anmerkung: Bei Verwendung von http://localhost:80/admin/… können die Credentials entfallen (LoxBerry erfordert bei lokalem Zugriff keine Authentifizierung) - das geht natürlich nur in z. B. Skripten direkt auf dem LoxBerry.
<lbuser> | (optional bei Verwendung von localhost) | Benutzername und Passwort von LoxBerry (Web-Credentials) |
<lbpass> | ||
loxberry:80 | oder localhost für den lokalen LoxBerry | Hostname und Port von LoxBerry |
<topic> | Pflicht | Das Topic, das published wird |
<value> | Optional | Der zu publishende Wert |
<retain> | Optional | 1 oder 0/nicht angegeben → Wert am Broker speichern |
<transformername> | Optional | Der UDP-Transformer, der angewandt werden soll |
Beispiele:
Published beim Topic livingroom den Wert 21.3:
mqtt.php?topic=homematic/temperature/livingroom&value=21.3
Published beim Topic livingroom den Wert 21.3 mit retain-Flag (wird am Broker gespeichert):
mqtt.php?retain=1&topic=homematic/temperature/livingroom&value=21.3
Löscht am Broker ein mit retain gesetztes Topic livingroom (weil kein value angegeben):
mqtt.php?retain=1&topic=homematic/temperature/livingroom
Published beim Topic livingroom den Wert 21.3 an den Transformer mytransformer mit retain-Flag (wird am Broker gespeichert):
mqtt.php?retain=1&topic=homematic/temperature/livingroom&value=21.3&transform=mytransformer
UDP Interface (einfach)
Das UDP-Interface entspricht genau jenem, mit dem der Miniserver Daten an MQTT senden kann (MQTT Gateway - Schritt für Schritt Loxone -> MQTT). Die eckigen Klammern sind nicht anzugeben.
publish <topic> <value>
oder
retain <topic> <value>
publish retain | publish sendet den Wert als Kommando retain sendet den Wert und speichert ihn am Broker |
<topic> | Das Topic, das published wird |
<value> | Der zu sendende Wert Ist der Wert nicht gesetzt, wird bei retain das Topic am Broker gelöscht |
Die Daten müssen an den UDP-In-Port des MQTT Gateways (nicht der Miniserver-Port!) gesendet werden.
UDP Interface mit Transformer (einfach)
Das UDP-Interface entspricht genau jenem, mit dem der Miniserver Daten an MQTT senden kann (MQTT Gateway - Schritt für Schritt Loxone -> MQTT). Die eckigen Klammern sind nicht anzugeben.
publish <transformername> <topic> <value>
oder
retain <transformername> <topic> <value>
publish retain | publish sendet den Wert als Kommando retain sendet den Wert und speichert ihn am Broker |
<transformername> | Der Name des Transformers, aus der Transformerliste |
<topic> | Das Topic, das published wird |
<value> | Der zu sendende Wert Ist der Wert nicht gesetzt, wird bei retain das Topic am Broker gelöscht |
Die Daten müssen an den UDP-In-Port des MQTT Gateways (nicht der Miniserver-Port!) gesendet werden.
Beispiele
Bash
# Check if the MQTT Gateway config file exists if [ ! -e "$LBPCONFIG/mqttgateway/mqtt.json" ]; then echo "MQTT Gateway Configfile not found" exit 1 fi # Read UDP-In-Port of the MQTT Gateway into $UDPINPORT variable UDPINPORT=$(jq -r '.Main.udpinport' $LBPCONFIG/mqttgateway/mqtt.json) # Publish or retain messages to the gateway's port echo -n "publish <topic> <value>" > /dev/udp/127.0.0.1/$UDPINPORT echo -n "retain <topic> <value>" > /dev/udp/127.0.0.1/$UDPINPORT echo -n "retain <topic>" > /dev/udp/127.0.0.1/$UDPINPORT # Example with transformer echo -n "publish shelly_rgb&w <topic> <value>" > /dev/udp/127.0.0.1/$UDPINPORT echo -n "retain shelly_rgb&w <topic> <value>" > /dev/udp/127.0.0.1/$UDPINPORT
PHP
// Check the existance of the MQTT Gateway config if (!file_exists(LBHOMEDIR . "/config/mqttgateway/mqtt.json")) { echo ("MQTT Gateway config not found"); exit(1); } // Read gateway config file to get udpinport $jsonstr = file_get_contents(LBHOMEDIR . "/config/mqttgateway/mqtt.json"); $json = json_decode($jsonstr, true); $udpinport = $json['Main']['udpinport']; // Open an udp socket and publish/retain data $socket = fsockopen("udp://127.0.0.1:$udpinport"); fwrite($socket, "publish <topic> <value>"); fwrite($socket, "retain <topic> <value>");
UDP Interface (JSON data transfer)
Per UDP können die Daten auch als JSON-Datensatz übertragen werden. Es werden dabei Leerzeichen im Topic unterstützt (nicht bei einfachem UDP!), außerdem sind Encoding-Probleme eher ausgeschlossen.
Nachrichtenformat:
{ "topic" : "this/is/my/topic", "value" : "The payload of the message", "retain": true/false, "transform": "transformername" }
Wird der value
weggelassen, wird eine leere Nachricht an das Topic übermittelt (entspricht dem Löschen des Topics am Broker).
Das retain
-Flag ist optional. Wird es weggelassen, wird die Nachricht ohne Retain-Flag gepublished.
Das transform
-Flag ist optional. Es wird nur benötigt, wenn ein UDP-Transformer ausgeführt werden soll.