Aller au contenu principal

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 :

TopicSensContenu
openautomation/<node_id>/statusnode → centralLWT online / offline (retenu)
openautomation/<node_id>/statenode → centralÉtat complet en JSON, publié toutes les ~2 s
openautomation/<node_id>/cmd/relay/<id>central → nodeCommande relais
openautomation/<node_id>/cmd/valve/<id>central → nodeCommande 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 via venus, 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

ServicePortProtocole
API locale du node8080HTTP/REST
Broker MQTT (Mosquitto)1883MQTT
Venus (gateway)8135HTTP/GraphQL
Saturn (API centrale)8130HTTP/REST
Mercure (API logs)8140HTTP/REST
PostgreSQL (central)5432TCP
Elasticsearch (central)9200HTTP