• # Caramba, encore raté !

    Posté par . En réponse à la dépêche Version 2.0 de Calaos, la solution de domotique libre. Évalué à 7. Dernière modification le 19 février 2015 à 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.