MQTT

Aus Gude Systems GmbH
Zur Navigation springen Zur Suche springen

Dieses Gerät unterstützt MQTT 3.1.1 um konfigurierte Nachrichten zu verschicken, und auch Kommandos entgegenzunehmen. Dieses Kapitel ist für alle Gude Geräte allgemein gehalten, manche Gude Modelle haben keine schaltbaren Ports.

  • Default Port für eine unverschlüsselte Verbindung ist Port 1883.
  • Default Port für eine TLS gesicherte Verbindung ist Port 8883.
  • Wenn der Broker einen anonymen Login erlaubt, sind Benutzername und Passwort beliebig, aber ein Benutzername muss angegeben werden.
  • Wenn mehrere MQTT Clients mit einem Broker verbunden sind, müssen die Namen der Clients verschieden sein. Aus diesem Grund wird als Default Name "client_xxxx" generiert. Dabei sind "xxxx" die 4 letzten Stellen der MAC-Adresse.

Nachrichtenformat


Die MQTT Nachrichten des Gerätes werden immer im JSON Format verschickt. Z.B.

{"type": "portswitch", "idx": 2, "port": "2", "state": 1, "cause": {"id": 2, "txt": "http"}, "ts": 1632}

Dies ist ein Schalten des zweiten Ports in den Zustand ("state") on. Die Quelle des Schaltkommando ist CGI ("http"). Der Index ist immer numerisch, "port" kann bei Geräten mit mehreren Banks auch alphanumerisch sein, z.B. "A2". Am Ende folgt ein timestamp ("ts"), der die Anzalh der Sekunden anzeigt, die das Gerät eingeschaltet ist, oder unixtime wenn das Gerät sich mit einem NTP-Server synchronisiert hat.

MQTT Topic Prefix


Das Topic Prefix für die Nachrichten ist in der MQTT Konfiguration einstellbar. Ein Default wäre z.B. "de/gudesystems/epc/[mac]". Hier steht "[mac]" als Platzhalter für die MAC-Adresse des Gerätes, ein weiterer möglicher Platzhalter ist "[host]", der den Host-Namen beinhaltet. Ein Beispiel Topic für eine Schaltnachricht des zweites Ports wäre dann:

"de/gudesystems/epc/00:19:32:01:16:41/switch/2".

Ausführen von Konsolen Kommandos

Das Gerät kann über MQTT komplett mit Konsolen Kommandos ferngesteuert werden. Eine Liste aller Kommandos findet sich im Kapitel Konsole . Je nach Topic werden die Kommandos in verschiedenen Formaten angenommen.

Datei:Wichtig Zeichen.png Als Default ist das Ausführen vom Kommandos nicht erlaubt, sondern muss in der MQTT Konfiguration ("Permit CLI commands") freigeschaltet werden!

Format 1: Kommando in JSON Syntax

Publish Topic: "de/gudesystems/epc/00:19:32:01:16:41/cmd"
Publish Message: "{"type": "cli", "cmd": "port 2 state set 1", "id": 10}"

Antwort vom Gerät an "de/gudesystems/epc/00:19:32:01:16:41/cmdres"
"{"type": "cli", "cmdres": ["OK."], "result": {"num": 0, "hint": "ok"}, "id": 10}"
Datei:Wichtig Zeichen.png Das JSON Objekt "result" gibt zurück, ob das Kommando valide war. Das Objekt "id" im Kommando ist optional und wird in der Antwort vom Gerät durchgereicht. Die Übergebene Nummer kann helfen eine Synchronizität zwischen Kommando und Antwort über den Broker herzustellen.

Format 2: Raw Text

Publish Topic: "de/gudesystems/epc/00:19:32:01:16:41/cmd/cli"
Publish Message: "port 2 state set 1"

Antwort vom Gerät an "de/gudesystems/epc/00:19:32:01:16:41/cmdres/cli"
"OK."

Format 3: Vereinfachtes Port schalten

Publish Topic: "de/gudesystems/epc/00:19:32:01:16:41/cmd/port/2"
Publish Message: "0" oder "1"
Antwort vom Gerät an "de/gudesystems/epc/00:19:32:01:16:41/cmdres/port/2"
"0" oder "1"
Datei:Wichtig Zeichen.png Diese Spezialform existiert nur für die Port Schaltbefehle.

Device Data Summary


In der Device Data Summary werden in einem JSON Objekt die wichtigsten Daten des Gerätes zusammengefasst und in einem konfigurierbaren Zeitintervall periodisch verschickt. Diese Zusammenfassung hängt von den Eigenschaftes des Gerätes und der angeschlossenen Sensoren ab, und könnte z.B. so aussehen:

Topic: de/gudesystems/epc/00:19:32:01:16:41/device/telemetry

Nachricht:

{
"type": "telemetry",
"portstates": [{
"port": "1",
"name": "Power Port",
"state": 1
}, {
"port": "2",
"name": "Power Port",
"state": 0
}, {
"port": "3",
"name": "Power Port",
"state": 0
}, {
"port": "4",
"name": "Power Port",
"state": 0
}],
"line_in": [{
"voltage": 242.48,
"current": 0.000
}],
"sensors": [{
"idx": 1,
"name": "7105",
"data": [{
"field": "temperature",
"v": 21.1,
"unit": "deg C"
}, {
"field": "humidity",
"v": 71.9,
"unit": "%"
}, {
"field": "dew_point",
"v": 15.8,
"unit": "deg C"
}, {
"field": "dew_diff",
"v": 5.3,
"unit": "deg C"
}]
}],
"ts": 210520
}