Sentinel uses MQTT 5 with QoS 1 for every message it sends. All subtopics live under sentinel/<mac>/ (local, on the gateway broker) and are mapped by the gateway to m/<workspace>/c/<channel>/<mac>/ (Celestian). <mac> is the node’s Ethernet MAC, lowercase without separators (e.g. 001a2b3c4d5e), the same as the device Serial in Celestian. In direct mode the node uses the Celestian topics directly.
| Subtopic |
Format |
Contents |
telemetry |
SenFlat / SenML |
regular (default every 10 seconds) and earlier when temperature, power, or the alarm level changes |
event |
SenFlat / SenML |
door/input changes, outputs, alarms (alarm_…), rules (rule_…), maintenance mode; the identify button |
status |
SenFlat / SenML, retained |
state online/offline, fw, ip, gateway. Offline is sent by the broker through the LWT, 30 seconds after the node disappears |
config/reported |
JSON, retained |
the effective configuration, cfg_ver, rejected, firmware status |
cmd/result |
JSON |
command result |
rules/reported, rules/current |
JSON |
rules report (retained); set content verbatim (reply to get_rules, not retained) |
sources/reported, sources/current |
JSON |
Modbus sources report; set content |
profiles/reported, profiles/current |
JSON |
Modbus profiles report; set content |
tgroups/reported, tgroups/current |
JSON |
telemetry groups report; set content |
| Subtopic |
Format |
Contents |
config |
JSON, retained |
configuration + cfg_ver (config) |
cmd |
JSON |
commands (commands) |
rules |
JSON, retained |
rules set + rules_ver (rules) |
sources |
JSON, retained |
Modbus sources + sources_ver (sources) |
profiles |
JSON, retained |
Modbus profiles + profiles_ver (profiles) |
tgroups |
JSON, retained |
telemetry groups + tgroups_ver (groups) |
| Local |
Celestian |
sentinel/<mac>/… |
m/<workspace>/c/<channel>/<mac>/… |
sentinel/<mac>/telemetry, event (SenFlat v2) |
m/<workspace>/c/<channel>/<gateway-ID>/telemetry, event: many nodes merged in one message, by the history component |
Details in Bridge to Celestian.
- QoS 1 for all outgoing node messages. Incoming messages are retained for settings, so a node that has just powered up receives the latest one.
- An empty payload on a settings topic is ignored (the way to delete a retained message on the broker).
- Content type in MQTT 5 follows the format:
application/senml+json for SenML, otherwise application/json.
- LWT: an
offline status is sent by the broker if the node does not return within 30 seconds, so brief disconnects do not make the status flicker. The LWT message is always SenFlat v1 (or SenML if payload_format = senml).
- Size: a telemetry message is at most 12,086 B; settings messages are limited per type (Limits).
- In direct mode the node creates its
client_id automatically, prefixed with the device ID per Celestian’s broker policy.