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 Raspberry Pi + 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 Raspberry Pi + 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.