Zum Ende der Metadaten springen
Zum Anfang der Metadaten

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/plugins/mqttgateway/mqtt.php?topic=<topic>&value=<value>&retain=<1/0>

Anmerkung: Bei Verwendung von http://localhost:80/admin/... können die Credentials entfallen (LoxBerry erfordert bei lokalem Zugriff keine Authentifizierung)

<lbuser>Benutzername und Passwort von LoxBerry (Web-Credentials)
<lbpass>
loxberry:80Hostname und Port von LoxBerry
<topic>Das Topic, das published wird
<value>Der zu publishende Wert
<retain>1 oder 0/nicht angegeben → Wert am Broker speichern


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

UDP Interface

Das UDP-Interface entspricht genau jenem, mit dem der Miniserver Daten an MQTT senden kann (MQTT Gateway - Schritt für Schritt Loxone -> MQTT)

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.

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


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>");



  • Keine Stichwörter