À propos du projet

hestia offre un contrôle local et sans cloud pour les appareils domotiques Keemple — contrôleurs de volets roulants/stores, interrupteurs, variateurs, thermostats, prises intelligentes et capteurs construits sur des modules Hi-Flying Wi-Fi et WCH Ethernet de pont série. Ces appareils communiquent normalement avec un cloud fournisseur via un protocole binaire propriétaire en clair, encadré par 0x7e. hestia réimplémente ce protocole localement afin que les appareils communiquent avec lui au lieu du cloud fournisseur, éliminant la dépendance au cloud, à un CDN tiers ou à une IP publique. Il peut fonctionner dans deux modes : comme proxy transparent qui relaie le trafic vers le cloud tout en décodant tout, ou comme serveur autonome qui remplace entièrement le cloud fournisseur. En mode autonome, il fonctionne complètement hors réseau. Les appareils sont redirigés vers hestia via des substitutions DNS locales ou des redirections iptables PREROUTING sur le port 8925. Le codec du protocole a été construit selon une méthodologie clean-room : un groupe a dérivé une spécification de protocole à partir de l'observation passive du trafic LAN en clair de la passerelle, et un second groupe a implémenté le codec, les serveurs et l'outillage uniquement à partir de ce document de spécification. Aucun firmware, décompilation ou analyse binaire n'a été impliqué. Les capacités incluent : - Décodage et forgeage complets du protocole : codec de tramage et TLV, toutes les commandes d'actionneurs (stores, variateurs, interrupteurs, thermostats, boutons de scène/fonction), tous les rapports de capteurs et d'état (portes, mouvement, fumée/inondation, mesure de puissance des prises intelligentes), connexion/poignée de main, et liste des appareils. - Un tableau de bord web en direct (SPA TypeScript + Vite sur Server-Sent Events) avec vue domestique groupée par pièce, contrôle thermostat/climatisation/store/scène, état par nœud, mesure de puissance des prises intelligentes, niveaux de batterie, nommage en ligne et éditeur de règles locales guidé. - Authentification multi-utilisateur avec accès basé sur les rôles (admin, opérateur, lecteur), un journal complet d'audit/activité, et 45 locales d'interface incluant la prise en charge RTL. - Un moteur d'automatisation prenant en charge les déclencheurs événement, heure, cron, soleil, présence et champ global avec actions conditionnées et anti-rebond. - Entrées de capteurs locales via RTL-SDR : un flux rtl_433 diffuse localement des capteurs de température et d'humidité 433 MHz sans passerelle ni internet. - Intégrations optionnelles sur opt-in : un client LAN Tuya v3.3 pour un appareil de température, un poller de température extérieure Open-Meteo, et contrôle IR via un émetteur connecté en série (Flipper Zero). Le backend est en Python avec une couche web aiohttp et une persistance SQLite optionnelle (SQLAlchemy + Alembic) pour l'état des appareils, les paramètres par utilisateur et les comptes. Le codec du protocole Keemple reste du code first-party en stdlib pure ; les bibliothèques externes (cryptography pour AES-128, pyserial pour le transport USB-CDC) ne fournissent que des primitives génériques. Le projet rapporte une couverture de lignes et de branches de 100 % avec unittest de la stdlib. Sous licence GNU AGPL v3.0.