Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Projet] KaZa – une alternative légère à Home Assistant, basé sur Qt/QML
#1
Bonjour à tous,

Je vous présente KaZa, un projet de supervision et d'automatisation domotique que j'ai créé pour l'utiliser avec KNX. Il est open source et il est là : https://kaza.kazoe.org

Pourquoi KaZa ?
Je cherchais une solution domotique légère, qui tourne sur une petite machine, sans empilement de couches logicielles. Les solutions existantes sont puissantes mais lourdes : conteneurs, interpréteurs, dizaines de dépendances, aucun package simple sous Debian. J'ai voulu faire l'inverse.

Comment ça fonctionne ?
KaZa est une application native écrite en C++ avec Qt6. Elle se connecte à votre installation (KNX, MQTT et autres sources) et expose les équipements sous forme d'objets utilisables directement dans des fichiers QML.

Toute la configuration se fait en écrivant du QML simple (non graphique). Il n'y a ni interface de configuration à cliquer, ni YAML à jongler, ni base à maintenir. Vous décrivez vos équipements, vos règles et votre interface dans des fichiers texte lisibles, que vous pouvez versionner avec Git, copier ou partager. Le QML étant un langage déclaratif, une règle comme « quand cette valeur change, fais ça » s'écrit en quelques lignes. L'interface utilisateur se décrit dans le même langage.

La différence avec Home Assistant
Home Assistant est un excellent projet, avec un écosystème énorme. Il répond à un autre besoin que KaZa :

 ┌────────────────┬────────────────────────────────────┬────────────────────────┐
 │                │           Home Assistant           │          KaZa          │
 ├────────────────┼────────────────────────────────────┼────────────────────────┤
 │ Déploiement    │ Docker / OS dédié / Supervisor     │ Un binaire, c'est tout (package debian) │
 ├────────────────┼────────────────────────────────────┼────────────────────────┤
 │ Dépendances    │ Python et des centaines de paquets │ Qt6 uniquement         │
 ├────────────────┼────────────────────────────────────┼────────────────────────┤
 │ Configuration  │ UI + YAML + intégrations           │ Fichiers QML           │
 └────────────────┴────────────────────────────────────┴────────────────────────┘

 Les points qui comptent pour moi :
 - Pas de Docker, aucune couche de virtualisation.
 - Aucune grosse dépendance en dehors de Qt6.
 - Empreinte mémoire et CPU très réduite : KaZa tourne sans problème sur une machine modeste (Raspberry Pi, mini-PC, carte embarquée).
 - Simplicité : on comprend ce que fait le système, car tout est du texte et il n'y a pas de magie.

KaZa dispose d'un client disponible sous Android, en plus du client desktop. Vous retrouvez votre interface sur votre téléphone ou votre tablette murale.

La grande différence avec Home Assistant tient à l'interface. Home Assistant impose une structure : tableaux de bord, vues, cartes, zones, entités. On personnalise à l'intérieur de ce cadre. Avec KaZa, aucune structure n'est imposée. On part d'une feuille blanche. Vous décrivez
 l'interface exactement comme vous la voulez, en QML : disposition, navigation, widgets, animations, thème, plan 2D de la maison, ou un simple bouton géant pour les lumières du salon. Si vous pouvez l'imaginer, vous pouvez l'écrire, et il n'y a ni carte à détourner ni limite du
 framework à contourner.

Cette liberté a un prix. KaZa n'est pas un produit clé en main où l'on clique pour obtenir un joli tableau de bord. Il faut au minimum quelques connaissances en QML pour l'utiliser, c'est-à-dire savoir écrire un Rectangle, un Text, un MouseArea et lier des propriétés. Rien
 d'insurmontable, le QML est un langage déclaratif assez accessible, et la documentation Qt est très complète. Mais si vous cherchez une interface prête à l'emploi sans écrire une ligne de code, KaZa n'est pas (encore) fait pour vous.

Côté serveur aussi, tout passe par du QML

La configuration du serveur repose elle aussi sur du QML, pas seulement l'interface. Vous déclarez vos équipements, vos groupes et vos règles dans le même langage que l'interface, avec les mêmes outils.

Cela permet de profiter de la puissance des Bindings de QML. Pour lier deux éléments, il suffit d'écrire une expression : la valeur d'un objet dépend de celle d'un autre, et elle est réévaluée automatiquement dès qu'une des sources change. Par exemple, l'état d'un volet peut
 suivre une consigne, ou un indicateur peut être calculé à partir de plusieurs capteurs. Il n'y a ni moteur d'automatisation séparé, ni triggers à déclarer dans une interface. La réactivité est native.

Pour les cas plus complexes, vous pouvez écrire directement du JavaScript dans le QML : gestionnaires de signaux (onXxxChanged), fonctions, conditions, boucles, timers, calculs. Un scénario élaboré, comme une logique de chauffage multi-zones, une gestion d'absence ou un
 enchaînement d'actions conditionnelles, s'écrit dans quelques lignes de code, au même endroit que la déclaration des équipements. Il n'y a pas de DSL à apprendre en plus, pas de templates à contourner et pas de plugin à développer. Vous disposez d'un vrai langage de programmation,
 et tout est lisible, versionnable et testable comme du code.

Le résultat est une configuration serveur et un client qui parlent le même langage. On apprend QML une fois et on s'en sert partout.


Pour qui ?
Pour ceux qui aiment garder la main, qui veulent une installation KNX réactive et légère, et qui sont à l'aise avec l'idée de décrire leur maison en code plutôt que dans une interface graphique.

Le projet est jeune et je suis très intéressé par vos retours, vos idées et vos remarques. N'hésitez pas à y jeter un œil et à me dire ce que vous en pensez !


Les intégrations déjà disponibles

KaZa est modulaire, et plus de trois intégrations sont déjà réalisées, voici les principales :

 - KNX : c'est l'intégration principale, celle pour laquelle le projet est né. KaZa se connecte à knxd, utilise votre fichier knxproj, qui fait le lien avec votre bus (interface USB, IP, etc.). Les adresses de groupe deviennent des objets QML que vous manipulez, liez et automatisez comme n'importe quelle autre propriété. Vous gardez votre installation KNX et votre projet ETS tels quels, et KaZa vient se brancher dessus.
 - MQTT : pour tout ce qui ne parle pas KNX, comme les capteurs et passerelles Zigbee2MQTT, les modules ESP, Tasmota, ou tout autre appareil qui publie sur un broker. Les topics sont accessibles comme des propriétés et peuvent être liés aux éléments KNX, ce qui permet de faire
   dialoguer les deux mondes simplement.
 - Vidéo : la plus récente. Elle permet de construire un système de supervision de caméras avancé : enregistrement des flux dans des fichiers et visualisation en direct depuis le client (desktop et Android). Les caméras se déclarent en QML comme le reste. On peut donc déclencher un enregistrement sur un événement, par exemple un détecteur de mouvement KNX ou un message MQTT, et afficher un flux où l'on veut dans son interface.

Le point fort de l'ensemble est que ces trois intégrations partagent le même modèle. Un événement KNX peut déclencher un enregistrement vidéo, et une valeur MQTT peut piloter une lumière KNX, avec de simples Bindings ou quelques lignes de JavaScript.


>>> https://kaza.kazoe.org
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)