Pour les développeurs

Pile logicielle Calaos

Ce chapitre décrit le fonctionnement interne de Calaos, composant par composant. Il s’adresse aux développeurs, aux contributeurs et aux utilisateurs avancés qui veulent comprendre comment les morceaux s’assemblent, écrire un client, ou porter Calaos sur un nouveau matériel.

Rien de ce chapitre n’est nécessaire pour utiliser Calaos. Pour installer et configurer votre installation, voyez Démarrage et Calaos OS.

Vue d’ensemble

Toute l’installation gravite autour d’un seul processus, calaos_server. C’est lui qui parle au matériel, applique les règles et expose une API. Tous les autres composants — interfaces graphiques, écrans muraux, applications mobiles — sont des clients de cette API, et n’ont aucun accès direct au matériel.

graph TD subgraph clients[Clients] HOME[Calaos Home
écran tactile local] MOBILE[Calaos Mobile
iOS / Android] WEB[Calaos WebApp
navigateur] RUI[Remote UI
écrans muraux ESP32] INST[Calaos Installer
configuration] end subgraph server[Serveur] SRV[calaos_server] RULES[Moteur de règles
et scénarios] IO[Pilotes d'entrées / sorties] end subgraph hw[Matériel et services] WAGO[Wago / KNX / GPIO] MQTT[MQTT / Zigbee] ONEWIRE[1-Wire / DMX / Hue] DB[(InfluxDB
historique)] end HOME -->|JSON / WebSocket| SRV MOBILE -->|JSON / WebSocket| SRV WEB -->|JSON / WebSocket| SRV RUI -->|JSON / WebSocket| SRV INST -->|JSON / HTTP| SRV SRV --- RULES SRV --- IO IO --> WAGO IO --> MQTT IO --> ONEWIRE SRV --> DB

Cette architecture a une conséquence pratique : écrire un nouveau client ne demande de toucher à rien d’autre. L’API est la même pour tous, documentée par le code de calaos_server, et les clients existants en sont autant d’exemples.

Les composants

ComposantRôleTechnologieDépôt
Calaos ServerCœur du système : matériel, règles, APIC++ / libuvcalaos_base
Calaos HomeInterface locale sur écran tactileQt / QMLcalaos_mobile
Calaos MobileApplications iOS et AndroidQt / QMLcalaos_mobile
Remote UIÉcrans muraux autonomesESP32-P4calaos_remote_ui
Calaos WebAppInterface dans le navigateurJavaScriptcalaos-web-app
Calaos DDNSAccès distant et certificatsGocalaos_ddns
Fichiers de configurationFormat et emplacement de la configurationXMLcalaos_base

À cela s’ajoutent les composants qui font tourner le système lui-même : calaos-container, le daemon qui gère les services en containers, et calaos-os, l’outil d’administration. Ils sont décrits dans Sous le capot et L’outil calaos-os.

Ports réseau

PortProtocoleUsage
5454TCPAPI JSON, en HTTP et en WebSocket
4545UDPDécouverte du serveur sur le réseau local
4646UDPÉcoute des automates Wago
8000TCPAPI d’administration de calaos-container, sur la boucle locale uniquement

Le port de l’API est modifiable par le réglage port_api.

L’API du port 8000 est celle qu’utilise Calaos Home pour installer le système, configurer le réseau et confirmer un retour en arrière — voir Calaos Home.

Licence

Calaos est un logiciel libre, publié sous GPL v3 pour l’essentiel de ses composants. Les contributions sont les bienvenues : chaque dépôt accepte les pull requests, et les discussions se tiennent sur le forum et les issues GitHub.

  • Calaos Server
  • Le cœur du système : pilotes matériels, moteur de règles et API JSON.

  • Calaos Home
  • L’interface locale sur écran tactile, et son pilotage du système.

  • Calaos Mobile
  • Les applications iOS et Android, et leur socle commun avec Calaos Home.

  • Calaos Remote UI
  • Le firmware des écrans muraux, et son portage sur de nouvelles cartes.

  • Calaos WebApp
  • L’interface accessible depuis un navigateur.

  • Calaos DDNS
  • Le client de DNS dynamique, les certificats et l’aiguillage HAProxy.

  • Calaos Config
  • Les fichiers de configuration : format, emplacement et cycle de vie.