MQTT eng

Aus Gude Systems GmbH
Zur Navigation springen Zur Suche springen

This device supports MQTT 3.1.1 to send configured messages and also to receive commands. This chapter is general for all Gude devices, some Gude models do not have switchable ports.
* Default port for an unencrypted connection is port 1883.
* Default port for a TLS secured connection is port 8883.
* If the broker allows anonymous login, username and password are arbitrary, but a username must be specified.
* If multiple MQTT clients are connected to a broker, the names of the clients must be different. For this reason, "client_xxxx" is generated as the default name. Here "xxxx" are the last 4 digits of the MAC address.

Message format


The MQTT messages of the device are always sent in JSON format. E.G..

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

This is a switching of the second port to the state on. The source of the switching command is CGI ("http"). The index is always numeric, "port" can also be alphanumeric for devices with multiple banks, e.g. "A2". At the end follows a timestamp ("ts"), which indicates the number of seconds the device is on, or unixtime if the device has synchronized with an NTP server.

MQTT Topic Prefix


The topic prefix for the messages can be set in the MQTT configuration. A default would be e.g. "de/gudesystems/epc/[mac]". Here "[mac]" is a placeholder for the MAC address of the device, another possible placeholder is "[host]", which contains the host name. An example topic for a switching message of the second port would then be:

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

Executing console commands


The device can be controlled remotely via MQTT using console commands. A list of all commands can be found in the Console chapter. Depending on the topic, the commands are accepted in different formats.
Wichtig zeichen.png As default the execution of commands is not allowed, but must be enabled in the MQTT configuration! ("Permit CLI commands")

Format 1: Command 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}"

Response from device to "de/gudesystems/epc/00:19:32:01:16:41/cmdres"

"{"type": "cli", "cmdres": ["OK."], "result": {"num": 0, "hint": "ok"}, "id": 10}"
Wichtig zeichen.png The JSON object "result" returns whether the command was valid. The object "id" in the command is optional and is passed through in the response from the device. The passed number can help to establish a synchronicity between command and response via the broker.

Format 2: Raw Text

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

Response from device to "de/gudesystems/epc/00:19:32:01:16:41/cmdres/cli"
"OK."

Format 3: Simplified port switching

Publish Topic: "de/gudesystems/epc/00:19:32:01:16:41/cmd/port/2"
Publish Message: "0" or "1".

Response from device to "de/gudesystems/epc/00:19:32:01:16:41/cmdres/port/2"
"0" or "1"

Wichtig zeichen.png This special form exists only for the port switching commands.

Device Data Summary


In the Device Data Summary the most important data of the device are summarized in a JSON object and sent periodically in a configurable time interval. This summary depends on the properties of the device and the connected sensors, and could look like this:

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

Message:
MQTT1.png