Domotique — MQTT
MQTT est le bus de messages local de la domotique leukOS. Il relie les controllers, les devices exposes par ces controllers, le broker Mosquitto local et le hub domotique.
Positionnement dans l'architecture
Dans la domotique, MQTT sert a transporter les etats, evenements et commandes entre les elements terrain et le hub.
Le pilotage central de flotte (Saturn -> node) reste principalement en gRPC/HTTP avec persistance SQLite cote daemon C++ ; MQTT n'est pas le canal principal de commande distante inter-sites.
Comment les devices communiquent via MQTT
Le device ne parle pas directement a la Web IHM. Le flux typique est:
- Le controller (ESP32/MCU) lit un capteur ou recoit une commande locale.
- Il publie l'etat sur un topic MQTT de la box.
- Le hub consomme l'evenement, met a jour l'entite et applique les automatisations.
- En cas d'action, le hub publie une commande MQTT vers le controller cible.
- Le controller execute et republie l'etat confirme.
Topics utilises
Le prefixe historique est openautomation (configurable).
| Topic | Sens | Role |
|---|---|---|
openautomation/<node_id>/status | controller/node -> hub | Presence (online/offline, LWT). |
openautomation/<node_id>/state | controller/node -> hub | Etat JSON periodique des entites. |
openautomation/<node_id>/cmd/relay/<id> | hub -> controller/node | Commande relais. |
openautomation/<node_id>/cmd/valve/<id> | hub -> controller/node | Commande vanne. |
LWT et robustesse
Chaque client declare un Last Will and Testament. Si la connexion tombe, le
broker publie offline sur le topic de statut, ce qui permet au hub de marquer
immediatement l'entite comme indisponible.
Exemple d'echanges
Publication d'etat par un controller:
{
"node_id": "node-01",
"relay": {"1": "on"},
"valve": {"3": "closed"},
"updated_at": "2026-09-06T12:00:00Z"
}
Commande publiee par le hub:
topic: openautomation/node-01/cmd/relay/1
payload: on
Frontieres avec le daemon C++
- MQTT: transport des messages domotiques dans le LAN.
- Daemon C++: execution locale, API HTTP/gRPC, persistance SQLite.
- Les deux coexistent: MQTT pour l'evenementiel domotique, SQLite/API pour la source de verite et la commande systeme.