Version 2.0 de Calaos, la solution de domotique libre

Posté par (page perso) . Édité par palm123, Nÿco, BAud, naguirre, Benoît Sibaud et cedric. Modéré par Nÿco. Licence CC by-sa
Tags :
50
18
fév.
2015
Technologie

Après de longs mois de développement, la version 2.0 de Calaos est enfin là. C'est la première version stable rendue disponible uniquement grâce au travail fourni par la communauté. Outre le passage en GPLv3, le travail s'est porté sur le nettoyage du code, la modularité de chaque couche, une meilleure prise en charge du matériel, le passage à gettext et à l'anglais, et beaucoup de corrections de bogues.

Calaos Home

Sommaire

Historique de Calaos

Calaos est une solution complète de domotique. Initialement Calaos était un système de domotique développé par la société éponyme, et partiellement Open Source. Lorsque la société a fermé ses portes courant 2013, l'intégralité du code source a été ouvert, mis sous licence GPLv3 et une petite communauté s'est formée pour continuer le développement. Aujourd'hui, nous avons une communauté active sur le forum, ainsi que quelques développeurs qui maintiennent, améliorent le code et ajoutent de nouvelles fonctionnalités.

Ouverture du code complète en GPLv3

Après la fermeture de la société, un gros nettoyage du code a été fait, ainsi que le passage à la GPLv3 de toutes les briques logicielles. Tout le code est disponible sur github, et chaque brique est dans son propre dépôt.

Ce changement de licence étant voulu pour garantir la liberté des utilisateurs dans le futur et éviter qu'une installation Calaos puisse être verrouillée par une société. Il est assez évident que l'un des problèmes de la domotique, c'est la pérennité dans le temps de l'installation, d'un point de vue technologique (support de nouveau protocole, périphérique et remplacement des équipements en panne), mais aussi d'un point de vue sécurité. Et ce qui est sûr aujourd'hui ne l'est plus forcément demain, pouvoir mettre à jour son système est donc une absolue nécessité dans une maison domotisée.

Présentation des couches logicielles

Calaos Server

Application serveur tournant en tâche de fond et qui s'occupe de la gestion de toute la maison, suivant la configuration qui a été faite au préalable. Elle permet aussi d'exporter l’état de la maison, grâce à un protocole JSON qui est utilisé par les différentes interfaces.

  • Technologies utilisées :
    L'application est écrite en C++ et est basée sur les EFL. La configuration se fait grâce à un système de règles qui détermine ce qui se passe dans la maison (Appui sur un interrupteur --> Allumage d'une lumière). Il est possible d'utiliser des scripts LUA pour plus de contrôle sur les règles et les scénarios.

  • Prise en charge du matériel/protocole :
    actuellement, Calaos gère le pilotage matériel suivant :

    • Automates Wago, avec des entrées-sorties TOR ou analogiques, des bus d'éclairages DALI ou DMX
    • IPX800
    • Eco Device
    • API Web
    • 1Wire
    • X10
    • Entrées-sorties Zibase
    • GPIO (avec accès direct sur les cartes tels que la Raspberry Pi ou cubieboard)
    • Squeezebox
    • Nabaztag (Karotz)
    • Caméras IP (Axis, MJPEG…).

Calaos Home

Application permettant de piloter depuis un écran tactile l’intégralité de la solution domotique. Elle est développée avec les EFL, pour la partie graphique et la connexion avec le serveur.

Calaos WebApp

Interface permettant de piloter Calaos depuis un navigateur web. Application Web HTML5, développé avec AngularJS et Bootstrap.

Calaos WebApp en action

Calaos OS

Calaos OS est une distribution GNU/Linux à part entière. Cette distribution est basée sur OpenEmbedded et permet de fournir des images pré-configurées pour un ensemble de machines. Calaos Server, Calaos Home et Calaos WebApp sont déjà intégrés dans cette distribution, ainsi que tous les outils nécessaires au bon fonctionnement du serveur domotique. Nous préconisons l'utilisation de Calaos OS.

Les cartes électroniques supportées sont les suivantes :

  • PC Intel x86 et x86_64
  • Raspberry-PI
  • Mele a1000, a2000 et a1000G
  • CubieBoard 1 et 2

Il est également possible d'utiliser les images Intel x86 et x86_64 dans une machine virtuelle par exemple.

Calaos Mobile

Calaos Mobile est une application pour les tablettes et les téléphones mobiles. Ses fonctionnalités sont limitées par rapport à Calaos Home, mais cette version est prévue pour être utilisée plus en tant que télécommande, que ça soit à l'intérieur ou à l'extérieur de la maison. Pour une utilisation depuis le réseau de données mobile, il est nécessaire d'avoir accès depuis l'extérieur à Calaos Server.

Calaos Mobile existe pour iOS et Android. Cette application est développée avec Qt5 et QML.

Calaos Mobile sur iOS

Calaos Installer

Application permettant la configuration à distance de Calaos Server. Cette application permet l'ajout, la modification ou la suppression d'entrées-sorties et de s'affranchir de l’édition complexe et rébarbative de la configuration de Calaos à la main.

Cette application permet également de créer graphiquement des scénarios en fonction des valeurs des différentes entrées/sorties, mais également de créer et d’éditer des scripts LUA permettant de répondre et de s'adapter a vos besoins. Application développée avec Qt5.

Calaos Installer

État de la communauté

À ce jour la communauté est composée d'utilisateurs installés par l'ancienne société, mais également par de nouveaux utilisateurs. L'équipe de développement est très petite (2 commiteurs réguliers, plus quelques contributeurs occasionnels).

Nous sommes d'ailleurs ouverts aux nouveaux développeurs pour venir nous aider, par exemple pour la partie web où on a plus de mal, mais aussi pour la traduction en anglais de la documentation sur le wiki. Il reste encore pas mal de travail à ce niveau.

À terme nous avons aussi prévu de mettre en place une association loi 1901 afin de fédérer le projet et récolter plus facilement les fonds pour le maintien des infrastructures de développement. Une bonne partie de la communauté sur le forum a répondu positivement.

Futur

Maintenant que les bases pour le développement du projet sont correctement posées, nous allons pouvoir continuer à améliorer et ajouter des nouvelles fonctionnalités. En vrac, nous souhaitons travailler sur :

  • Ajout de plus de support matériel (MySensors.org, ZWave…)
  • Ajouter plus de cartes grâce à OpenEmbedded
  • Un système de mise à jour dans Calaos-OS
  • Avoir un système d'historisation des données avec des graphes
  • Et plein d'autres choses !

En tout cas, je vous invite à tester et venir nous parler sur IRC (#calaos sur freenode)

  • # domoticz ?

    Posté par (page perso) . Évalué à 6.

    Comment est-ce que ça se positionne par rapport à domoticz ? (que j'utilise, et dont je suis très content) voir http://www.domoticz.com/wiki/Main_Page

    • [^] # Re: domoticz ?

      Posté par (page perso) . Évalué à 7.

      Je connais pas trop Domoticz, mais voila les differences:
      - Domoticz a l'air de supporter plus de HW, le support d'autre materiel est ce sur quoi on travaille.
      - Calaos a plus d'outils et d'UI (une interface tactile dédié), Domoticz ca a l'air d'etre que du web
      - Calaos est depuis le debut axé pas mal sur les automates Wago, c'est ce qu'il y a de plus interessant au niveau tarif quand tu fais une maison complete et ca respecte les normes électriques et le consuel valide sans problemes. En plus c'est filaire (pas de probleme de signal, d'ondes, etc…)
      - On a des images toute faite pour plusieurs machines (calaos-os)
      - Calaos est plus vieux que Domoticz, 2005 pour le 1er, 2012 pour le second.

      Apres au niveau du fonctionnement de Domoticz je peux pas trop dire, j'ai pas testé.

  • # Éditeur de scénario

    Posté par . Évalué à 2.

    L'éditeur de scénario de l'interface tactile fonctionne toujours ? :)

  • # Magnifique

    Posté par (page perso) . Évalué à 8.

    Je résume : pour le web, angular et bootstrap. Pour les applis : C++/Qt. Pour le serveur, C++.

    J'adore les technos utilisées. Vais jeter un coup d'oeil :)

  • # Le monde fourmillant de la domotique !

    Posté par . Évalué à 6.

    Pour ma part je suis en pleine installation/tests domotique.
    Pour les capteurs, j'utilise du mysensors.org, qui permet de se faire des modules à base d'Arduino/nRF24L01+ pour 10€.
    Je n'ai pas encore fais de choix définitif du logiciel, même si jeedom a ma préférence pour le moment. J'ai testé:
    -Domoticz: pas mal, pas trop compliqué à prendre en main, mais pas de support de mysensors.org
    -openhab: ça a l'air super compliqué a configurer, j'ai installé, mais pas pris le temps de tester avec mysensors.
    -Jeedom: fait par des frenchies, interface plutôt propre ( flat design), moins poussé que domoticz sur certains aspects (historiques, consommations…) système de market pour plugins et support de mysensors.
    -j'en ai testé d'autres rapidement, mais c'était soit trop compliqué à configurer, soit pas adapté a mes besoins.

    En tout cas je compte tester Calaos ! Et espérons que la compatibilité mysensors arrive bientôt !

    • [^] # Re: Le monde fourmillant de la domotique !

      Posté par (page perso) . Évalué à 5.

      Le support de MySensors est déjà plus ou moins terminé (il fonctionne en test chez moi depuis un moment). Le dev est dans des branches séparés pour le moment, on a pas pu le pousser avant la release de la v2 car on etait en feature freeze. Donc oui ca arrive plus que bientot :)

    • [^] # Re: Le monde fourmillant de la domotique !

      Posté par . Évalué à 1.

      Domoticz supporte mysensors depuis qq semaines. c'est encore en phase d'intégration mais il semblerait que les gateway ethernet et serial soient implémentées (je n'ai testé que la serial USB sur le RPi) et ça fonctionne pas mal (testé avec un capteur BMP180 rapidement)

      je crois que c'est déjà intégré dans la dernière stable.

  • # Support de KNX.

    Posté par . Évalué à 1.

    Est il prévu une intégration de KNX ?

    • [^] # Re: Support de KNX.

      Posté par (page perso) . Évalué à 3.

      Pour le KNX, ca marche avec Calaos en utilisant une passerelle KNX/TP1 via un automate Wago. Pour le support directement dans calaos_server via eibd par exemple, il faudrait le faire. Mais on a pas de matos KNX sous la main, donc un contributeur sur cette partie serait le bienvenu :)

  • # Quel materiel/protocole pour se lancer en domotique?

    Posté par . Évalué à 3.

    Désolé c'est peut être pas l'endroit, mais j'aimerais me lancer dans une installation très simple (suivi de température interne/externe, suivi consommation électrique), et je me perds dans la jungle des protocoles.

    Quel protocole choisir pour une petite installation (à pas cher)?

    Sinon, pas de problèmes pour faire tourner Caleos sur un netbook (qui sera le serveur) ?

  • # Caramba, encore raté !

    Posté par . Évalué à 7. Dernière modification le 19/02/15 à 13:22.

    Bonjour,

    Sous ce titre un peu humoristique, je cache ma déception de ne toujours pas trouver un logiciel de domotique qui réponde à mon idée d'un tel logiciel. Je vais développer ma pensée.

    Tout d'abord, pour le contexte, j'ai domotisé en partie mon appartement. J'utilise diverses technologies avec une grosse partie en 1-wire (Maxim) pour récupérer des températures mais aussi pour contrôler divers appareils : contrôle de prise électrique, contrôle de télécommandes, …
    Jusqu'à maintenant (mais je ne demande qu'à être détrompé), tous les logiciels de domotique que j'ai regardé sont partis du support d'une gamme de matériel et l'ont exposé à travers une ou plusieurs interfaces aux utilisateurs. En général, quand le projet avance bien, on observe au cours des versions successives un élargissement du matériel supporté, une plus grande variété de thèmes et/ou d'interfaces (web et/ou tablet, …) Dans les "plus", on trouve pour les projets les plus avancés des éditeurs de configuration, des enregistreurs d'état plus ou moins automatiques (courbes de températures, …) et un langage de scénario plus ou moins souple/intuitif/puissant.
    Bien, mais, à ma grosse déception, le cœur du logiciel reste une liaison pratiquement directe entre les éléments de l'interface et le matériel de domotique supporté.

    Ça, c'est pas mal quand on utilise une solution "constructeur" où on manipule des objets complets. Sauf que ce n'est pas du tout le cas chez moi. Je prends un exemple : mes volets roulants. Ils existaient déjà dans mon appartement, je n'ai pas choisi le matériel. Ils étaient commandés par des télécommandes et je n'ai pas accès aux mécanismes sans gros travaux. J'ai donc ouvert les télécommandes, dérivé deux fils autour des deux boutons "up" et "down" reliés à des optocoupleurs eux-même commandé par des puces 1-wire (DS2406 de mémoire). Cela signifie que, pour fermer un volet, je dois envoyer un ordre 1-wire pour "appuyer sur le bouton de la télécommande" et un second quelques dixièmes de seconde après pour le "relâcher".
    Et bien, je ne veux pas voir apparaître cela dans mon interface utilisateur. Dans l'interface, je veux voir un volet dont je règle la position. Le détail (quel bouton de télécommande appuyer/relâcher, avec quel timing si je veux arrêter le volet à mi-course, …), c'est de la configuration. Autrement dit, ce qui doit apparaître dans l'interface graphique ne doit pas être (nécessairement) directement ce qui est exposé par le matériel.
    Et j'ai plein d'autres exemples : mon vidéo-projecteur se configure par ligne série mais il est aussi branché sur une prise commandée par 1-wire. Je ne veux pas voir apparaître les deux dans mon interface. etc.

    Bref, je n'ai pas trouvé de logiciel de domotique qui permettent de "construire" des objets à partir d'autres objets (et de règles) de manière simple. J'utilise OpenHab depuis quelques années, mais je n'en suis pas satisfait pour ces raisons. Cf mon commentaire sur LWN https://lwn.net/Articles/633373/ suite à l'article sur OpenHab https://lwn.net/Articles/631827/.

    Dans l'idéal, pour moi, un logiciel de domotique aurait ces propriétés :

    • fournir une abstraction au matériel (système simple de plugin pour ajouter du support matériel et interfaces souples mais assez expressives pour avoir une seule interface pour tous les matériels)
    • fournir un moyen de configurer des objets construits à partir d'autres objet (image directe du matériel et/ou objets déjà construits)
    • fournir des interfaces (web/REST/tablet/…) pour contrôler les objets qu'on souhaite
    • distinguer, pour chaque objet, l'état courant et l'état ciblé (si je demande à mon écran de vidéo-projecteur de descendre, il faudra une trentaine de seconde pour qu'il descende…), éventuellement avec une notion d'incertitude (tous les objets domotiques n'ont pas nécessairement de retour d'information malheureusement, donc parfois on "devine" l'état par calcul à partir d'un état précédent et des ordres passés mais il n'est pas certain : mes ordres aux télécommandes des volets roulants sont parfois perdus)
    • fournir une abstraction pour gérer les bus et/ou les actions minutées. Je reprends mon exemple de volets roulants : ils sont commandés par des ordres 1-wire (qui doivent donc être sérialisés). Ces ordres ont des contraintes temporelles (relâchement du bouton de télécommande X ms après l'appuie, appuie sur un autre bouton Y secondes après l'appuie du premier (arrêt à mi-course), …). Je veux pouvoir entrelacer les ordres (ie commencer à descendre tous les volets) tout en respectant ces contraintes temporelles à court terme (Y secondes avant l'appuie sur l'autre bouton pour stopper la descente). Il faudrait donc que le système de domotique fournisse ce service.

    Au niveau programmation, j'imagine un système basé sur des ensembles d'états et des priorités :
    on définit un ensemble d'états finaux pour un groupe d'objet (certains pouvant être facultatifs) et on demande au système domotique de se débrouiller pour passer dans l'état en question. Une notion de priorité permet de choisir l'état global que l'on veut (commande manuelle plus prioritaire qu'un programme automatique par exemple).
    Ici, l'idée importante, c'est que, dans mon esprit, on dit ce qu'on veut au système domotique et c'est lui qui actionne ce qu'il faut pour y arriver. On ne lui dit pas comment y arriver (c'est son boulot). Certes, dans les systèmes simples, ça se recoupe : on peut vouloir une lampe allumée, ce qui revient à donner l'ordre ZWave correspondant à cette lampe. Mais, à mon avis, c'est plus simple pour l'utilisateur de dire qu'il veut regarder un film et le système décide ce qu'il faut actionner (avec des parties obligatoires : le video-projecteur en marche, l'écran descendu, et des parties facultatives : lampes/volets pour être dans la pénombre, …)

    Bref, j'attends toujours de trouver un logiciel de domotique qui a vraiment pensé le modèle qu'il veut mettre en œuvre. À mon avis, si le modèle et le cœur sont bons, il y aura des gens pour faire l'interfaçage vers les matériels et/ou les interfaces graphiques. Dans un premier temps, on peut même reprendre les logiciels actuels de domotique (un pour l'interfaçage avec le matériel dont on se sert de l'API REST (ou équivalent) pour récupérer l'info et un, éventuellement différent, pour l'interface web/tablet/… qui prendra en entrée notre matériel virtuel exposé). Si vous avez des pistes sur des choses existantes, je suis preneur.

    • [^] # Re: Caramba, encore raté !

      Posté par (page perso) . Évalué à 6.

      Et la je me rends compte que tu n'as pas vraiment pris le temps de tester Calaos ou de voir comment ca marche, donc pour te répondre: non c'est loin d'être raté…

      On n'exporte pas le materiel directement. Alors certes ce n'est pas encore aussi souple que ce que tu demandes, mais on est pas loin. Pour reprendre l'exemple du volet, Calaos gere un type d'objet volet, configurable avec des paramètres (Volet simple, volet "intelligent" avec notion de temps, pilotage par impulsion ou maintient d'une sortie, etc…). Ca c'est completement virtuel par rapport au hw derriere. Ensuite on a nos classe en C++ qui expose les interfaces demandées par l'objet, en l'occurence pour le volet c'est comment activer/desactiver la montée ainsi que la descente du volet.

      Et ce principe de fonctionnement est valable pour tous les objets, lumiere, variateur, volets, interrupteur, … On a des objets qui sont des WebIO, et ou un WebVolet prends des URL pour piloter la monter ou la descente par exemple, idem pour des GPIO sur une carte. Pour le moment si tu veux ton propre volet avec un truc qu'on fait de base il faudra le dev en C++ et juste hériter de la classe volet. Mais a terme on a prevu de pouvoir se créer se propres objets a base de script LUA ou bien de process externe. De cette maniere tu n'auras plus aucune limite, Calaos gere un volet, et toi tu définit juste comment le piloter derriere.

      Je pense qu'on a bien pensé notre coeur, et en prime on a des UI, si ca te convient pas, je suis ouvert aux changements…

      • [^] # Re: Caramba, encore raté !

        Posté par . Évalué à 1.

        De calaos, je ne connais que cet article. Ta réponse me donne envie d'y regarder de plus près. Merci.

        • [^] # ¡ Aïe Caramba !

          Posté par . Évalué à 1.

          Bonjour,

          Sous ce titre un peu humoristique, je cache la douleur de mon doigt coincé sous le volet

          Pour reprendre son exemple, je me dis qu'arrêter le volet à mi-course avec seulement deux boutons "up" et "down" et une gestion du temps est hasardeux. J'ai remarqué que quand il gèle le mien est beaucoup plus lent qu'après quelques heures d'exposition au soleil estival.

          et pour en revenir à mon sujet, "M'en fous j'suis gaucher" ;)

          • [^] # Re: ¡ Aïe Caramba !

            Posté par . Évalué à 1.

            C'est pire que cela : il y en a un qui refuse de bouger quand il fait trop chaud. L'été, il m'est arrivé de lancer, avant d'aller me coucher :
            while : ; do ./fenetre SAL1 down ; sleep 300 ; done
            et d'espérer qu'il sera fermé avant que le soleil de réveille les enfants (et donc les parents) à 6h du mat…

  • # HomeEasy, Zibase

    Posté par . Évalué à -3. Dernière modification le 20/02/15 à 01:10.

    Bonjour,

    Mon installation électrique toute neuve, je me suis lancé dans la domotique en utilisant le protocole HomeEasy pour contrôler mon éclairage et mes quelques prises. Ce protocole sera t-il géré par votre solution domotique ?

    D'autre part si j'ai bien compris votre solution domotique est en quelques points similaire aux stations Zibase ? http://www.zodianet.com/toolbox-zibase/zibase-classic.html.

    Enfin, je souhaite aller un peu plus loin aujourd'hui en domotique et pouvoir recevoir des informations provenant de mes périphériques. Auriez-vous des sites web / livres a me conseiller afin de faire un choix judicieux sur le protocole a utiliser mais aussi comment intégrer tout cela dans mon réseau électrique actuel.

    Merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.