Aller au contenu principal

Architecture — Vue globale

leukOS est une architecture distribuée à deux niveaux :

  • un plan local node (projet domotic) pour piloter les équipements connectés à un nano-ordinateur + cartes d'E/S ;
  • un plan central de supervision de parc (central) pour voir les nodes connectés, orchestrer les actions et historiser.

Le scénario cible est un déploiement territorial : un boîtier par maison, piloté localement (écran) et à distance (mobile), avec un central opérateur pour les sociétés de services.

La supervision distante passe aujourd'hui principalement par HTTP/GraphQL.

Schéma d'ensemble​

Les couches​

1. Node (edge)​

Chaque node exécute un daemon C++17 qui constitue l'automate proprement dit :

  • Pilotage matériel via libgpiod (/dev/gpiochip0).
  • Gestionnaires : relais, vannes, compteurs, scheduler, watchdog.
  • Persistance locale en SQLite (/var/lib/leukos/node.db).
  • API REST locale (port 8080) consommée par l'IHM Qt.
  • Client MQTT vers le broker local Mosquitto.

Une IHM Qt6/QML tourne en local sur l'écran tactile du node et n'est qu'un client de l'API REST.

2. Bus de messages (MQTT)​

Le broker Mosquitto local de chaque node gère la télémétrie et les commandes MQTT au niveau node. Dans l'implémentation actuelle, le central n'envoie pas les actions via un bridge MQTT : il appelle l'API locale node en HTTP.

3. Domotic local (node)​

Le projet domotic (Go + web Vue) est local au node et sert à piloter les devices connectés au nano-ordinateur + SM.

4. Central supervision​

Le projet central supervise le parc de nodes et sépare les stockages :

  • PostgreSQL pour l'authentification, l'inventaire des nodes, les noms et IP.
  • Elasticsearch pour l'indexation des logs via mercure.
  • CoreDNS pour la résolution DNS locale.
  • venus (NestJS/GraphQL) sert le web et agrège les APIs.
  • saturn (Go/REST) gère inventaire, actions, DNS.
  • mercure (Python/FastAPI) gère l'accès aux logs Elasticsearch.

Le central est conçu pour une exploitation opérateur :

  • pilotage à distance des accès de services (eau/électricité) via relais et vannes ;
  • supervision multi-sites et audit des actions ;
  • gestion d'une connectivité internet/intranet locale selon la politique de déploiement.

5. Interface web​

Une application Vue 3 + Vite consomme l'API centrale et présente la topologie du parc, l'état de connexion des nodes et les opérations à distance.

Principes structurants​

  • Séparation stricte des responsabilités : les interfaces (Qt, web) ne contiennent aucune logique métier ; tout passe par des API.
  • Autonomie locale : la logique de contrôle vit sur le node.
  • Standards ouverts : MQTT, REST, WebSocket, JSON, YAML.
  • Déterminisme : boucle de contrôle à intervalle fixe, OS minimal Buildroot.