Chapter 10c
MQTT Events
MQTT is a third Event channel into the same control pipeline as USB and LAN HTTP. The broker carries the same EventSet JSON your sign already accepts on POST /api/event — not a parallel command language.
Topics
Configure a topic prefix on the sign (default b0rd/v1). The device SoftAP id (for example B0rd-A1B2) is the unicast address:
| Kind | Topic |
|---|---|
| Broadcast | {prefix}/event — e.g. b0rd/v1/event |
| Unicast | {prefix}/{device_id}/event — e.g. b0rd/v1/B0rd-A1B2/event |
Publishes use QoS 1 and retain off. The payload is bare Event JSON — no MQTT envelope.
Payload
Identical to the HTTP Event Action. Examples:
{"name":"effect.ring.pulse"}
{"name":"notify.show","title":"Hello","message":"World","duration_ms":5000}
{"name":"notify.clear"}Invalid names and fields are rejected the same way as on USB or HTTP (unknown_event, and the notify field rules). SeeNotifications for overlay behavior.
Sign settings
MQTT is off by default. Turn it on from SoftAP Settings (or the generic settings API) when the sign is on home Wi‑Fi and you have a broker the sign can reach:
| Setting | Default | Notes |
|---|---|---|
mqtt.enabled | false | Master enable |
mqtt.host | (empty) | Broker hostname or IP |
mqtt.port | 1883 | TCP port |
mqtt.tls | false | When true, device opens a verified TLS MQTT session (pinned public roots; brokers usually need port8883). When false, cleartext TCP. MQTT TLS may briefly disconnect during Launch Library / OTA HTTPS. |
mqtt.username / mqtt.password | (empty) | Password is a secret (redacted on read) |
mqtt.client_id | (empty) | Empty → SoftAP id at connect |
mqtt.topic_prefix | b0rd/v1 | Prefix for broadcast and unicast topics |
Live status (not SoftAP form fields): proc.mqtt.connected andproc.mqtt.last_error.
Host CLI
Publish with the workstation tool. Discovery (list) stays on the HTTP channel:
b0rd --channel mqtt --mqtt-host 192.168.1.10 -d B0rd-FEF8 event effect.ring.pulse
b0rd --channel mqtt --mqtt-host broker.local --mqtt-broadcast notify "Hello" "World"
b0rd --channel mqtt --mqtt-host broker.local list
# → MQTT list unsupported; use --channel httpFull flags and selection rules:Host CLI (b0rd).
Related: Host CLI ·Networking modes ·Notifications ·USB control plane ·Glossary