Flux de données
Cette page suit deux parcours de bout en bout : la consultation/état (web ↔ central) et la descente d'un ordre (web → central → node → matériel).
Consultation / état
- Le frontend interroge
venusen GraphQL. venusroute verssaturn(inventaire/actions/dns) etmercure(logs).saturnlit PostgreSQL ;mercurelit/écrit Elasticsearch.venusassemble la réponse et la renvoie au web.
Descente d'un ordre
- L'utilisateur déclenche une mutation GraphQL côté web.
venusappellesaturn, qui enfile l'action puis la dispatch en HTTP vers l'API locale node (:8080).- Le daemon applique l'ordre sur le GPIO (relais actif à l'état bas) et persiste.
- L'action est marquée
sentoufailedcôté central.
Ingestion des logs techniques node
Chaque événement critique peut être corrélé au matériel grâce aux champs
node_id, meta.machine_id et meta.mac.
Chemin alternatif : commande locale
L'IHM Qt du node court-circuite le hub : elle envoie directement un POST à l'API locale
(:8080), garantissant le contrôle même sans réseau.
Écran tactile → POST /relay/<id>/on → Daemon → GPIO
Persistance et redémarrage
- Chaque changement d'état de relais/compteur est écrit en SQLite (
node.db). - Au démarrage, le daemon restaure l'état persisté : les relais retrouvent leur position, les compteurs leur valeur cumulée.
- Le central persiste l'authentification et l'inventaire des nodes en PostgreSQL, et les logs techniques en Elasticsearch.