Réseau & communication
leukOS combine trois canaux de communication complémentaires : HTTP/GraphQL (frontend ↔ central), REST (services internes et API locale node) et MQTT (bus local node).
Vue des canaux
MQTT — bus local node
Le broker Mosquitto écoute sur 127.0.0.1:1883 (par défaut : allow_anonymous true).
Topics
Le topic de base du daemon node est openautomation. La structure utilisée
par le daemon est la suivante :
| Topic | Sens | Contenu |
|---|---|---|
openautomation/<node_id>/status | node → central | LWT online / offline (retenu) |
openautomation/<node_id>/state | node → central | État complet en JSON, publié toutes les ~2 s |
openautomation/<node_id>/cmd/relay/<id> | central → node | Commande relais |
openautomation/<node_id>/cmd/valve/<id> | central → node | Commande vanne |
Le Last Will and Testament (LWT) garantit la détection de perte de connexion sur le
bus MQTT local : si la connexion tombe, le broker publie offline de façon retenue.
Dans l'implémentation centrale actuelle (saturn), les commandes distantes vers node
passent par l'API locale HTTP (:8080) et non par un bridge MQTT.
REST — commandes et interfaces
Deux serveurs REST coexistent :
- API locale du node (
0.0.0.0:8080) : consommée par l'IHM Qt, permet le pilotage direct des relais et vannes. - API du central (
:8130) : consommée viavenus, expose inventaire nodes, actions distantes, DNS et ingestion des logs.
Le frontend web appelle venus en GraphQL (:8135) ; venus relaie ensuite en REST
vers saturn (:8130) et mercure (:8140).
Pour les logs, le payload REST embarque au minimum node_id, level, message, avec
des métadonnées machine recommandées : meta.machine_id et meta.mac.
WebSocket — temps réel
Le WebSocket est optionnel côté central. La version actuelle du scaffold central est basée sur REST et peut être étendue en WebSocket pour push temps réel des événements du parc.
Résumé des ports
| Service | Port | Protocole |
|---|---|---|
| API locale du node | 8080 | HTTP/REST |
| Broker MQTT (Mosquitto) | 1883 | MQTT |
| Venus (gateway) | 8135 | HTTP/GraphQL |
| Saturn (API centrale) | 8130 | HTTP/REST |
| Mercure (API logs) | 8140 | HTTP/REST |
| PostgreSQL (central) | 5432 | TCP |
| Elasticsearch (central) | 9200 | HTTP |