MQTT: Unterschied zwischen den Versionen
Lh (Diskussion | Beiträge) |
Lh (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
− | + | 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'''= | |
− | <br / | + | <br />Die MQTT Nachrichten des Gerätes werden immer im JSON Format verschickt. Z.B. |
<br /> | <br /> | ||
− | <br /> | + | <br />{"type": "portswitch", "idx": 2, "port": "2", "state": 1, "cause": {"id": 2, "txt": "http"}, "ts": 1632} |
<br /> | <br /> | ||
− | <br /> | + | <br />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. |
− | <br />< | + | |
− | <br />< | + | ='''MQTT Topic Prefix'''= |
− | + | <br />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: | |
− | <br />< | + | <br /> |
− | <br />< | + | <br />"de/gudesystems/epc/00:19:32:01:16:41/switch/2". |
− | <br />[[ | + | <br /> |
− | <br />< | + | ='''Ausführen von Konsolen Kommandos'''= |
− | <br />< | + | 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. |
+ | <br /> | ||
+ | <br />[[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! | ||
+ | <br /> | ||
+ | <br />'''Format 1: Kommando in JSON Syntax''' | ||
+ | <br /> | ||
+ | <br />Publish Topic: "de/gudesystems/epc/00:19:32:01:16:41/cmd" | ||
+ | <br />Publish Message: "{"type": "cli", "cmd": "port 2 state set 1", "id": 10}" | ||
+ | <br /> | ||
+ | <br />Antwort vom Gerät an "de/gudesystems/epc/00:19:32:01:16:41/cmdres" | ||
+ | <br />"{"type": "cli", "cmdres": ["OK."], "result": {"num": 0, "hint": "ok"}, "id": 10}" | ||
+ | <br />[[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. | ||
+ | <br /> | ||
+ | <br />'''Format 2: Raw Text''' | ||
+ | <br /> | ||
+ | <br />Publish Topic: "de/gudesystems/epc/00:19:32:01:16:41/cmd/cli" | ||
+ | <br />Publish Message: "port 2 state set 1" | ||
+ | <br /> | ||
+ | <br />Antwort vom Gerät an "de/gudesystems/epc/00:19:32:01:16:41/cmdres/cli" | ||
+ | <br />"OK." | ||
+ | <br /> | ||
+ | <br />'''Format 3: Vereinfachtes Port schalten''' | ||
+ | <br /> | ||
+ | <br />Publish Topic: "de/gudesystems/epc/00:19:32:01:16:41/cmd/port/2" | ||
+ | <br />Publish Message: "0" oder "1" | ||
+ | <br />Antwort vom Gerät an "de/gudesystems/epc/00:19:32:01:16:41/cmdres/port/2" | ||
+ | <br />"0" oder "1" | ||
+ | <br />[[Datei:wichtig_Zeichen.png]] Diese Spezialform existiert nur für die Port Schaltbefehle. | ||
+ | |||
+ | ='''Device Data Summary'''= | ||
+ | <br />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: | ||
+ | <br /> | ||
+ | <br />Topic: de/gudesystems/epc/00:19:32:01:16:41/device/telemetry | ||
+ | <br /> | ||
+ | <br />Nachricht: | ||
+ | <br /> | ||
+ | <br />{ | ||
+ | <br />"type": "telemetry", | ||
+ | <br />"portstates": [{ | ||
+ | <br />"port": "1", | ||
+ | <br />"name": "Power Port", | ||
+ | <br />"state": 1 | ||
+ | <br />}, { | ||
+ | <br />"port": "2", | ||
+ | <br />"name": "Power Port", | ||
+ | <br />"state": 0 | ||
+ | <br />}, { | ||
+ | <br />"port": "3", | ||
+ | <br />"name": "Power Port", | ||
+ | <br />"state": 0 | ||
+ | <br />}, { | ||
+ | <br />"port": "4", | ||
+ | <br />"name": "Power Port", | ||
+ | <br />"state": 0 | ||
+ | <br />}], | ||
+ | <br />"line_in": [{ | ||
+ | <br />"voltage": 242.48, | ||
+ | <br />"current": 0.000 | ||
+ | <br />}], | ||
+ | <br />"sensors": [{ | ||
+ | <br />"idx": 1, | ||
+ | <br />"name": "7105", | ||
+ | <br />"data": [{ | ||
+ | <br />"field": "temperature", | ||
+ | <br />"v": 21.1, | ||
+ | <br />"unit": "deg C" | ||
+ | <br />}, { | ||
+ | <br />"field": "humidity", | ||
+ | <br />"v": 71.9, | ||
+ | <br />"unit": "%" | ||
+ | <br />}, { | ||
+ | <br />"field": "dew_point", | ||
+ | <br />"v": 15.8, | ||
+ | <br />"unit": "deg C" | ||
+ | <br />}, { | ||
+ | <br />"field": "dew_diff", | ||
+ | <br />"v": 5.3, | ||
+ | <br />"unit": "deg C" | ||
+ | <br />}] | ||
+ | <br />}], | ||
+ | <br />"ts": 210520 | ||
+ | <br />} |
Version vom 26. März 2024, 11:07 Uhr
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
}