Je passe à "l'ennemi", Home Assistant

Après le réseau Zigbee, c'est le Z-Wave qui est sur sa panse, j'ai fait avec pendant un temps… Puis récemment, le RFXcom ne fonctionnait plus que par alternance. Et là, ça a été la goutte d'eau !

Passant plus de temps à me battre avec OpenHab pour tenter de tout avoir fonctionnel qu'à bosser sur de la vraie automatisation, j'ai décidé d'aller voir si l'herbe est plus verte chez le voisin.

Comme j'avais déjà envisagé Home Assistant lors du premier brainstorming au sujet d'un serveur domotique et que juste après OpenHab, c'était celui qui me plaisait le plus, c'est donc lui que je testerai en premier (et peut-être en dernier).

En plus, un raspi a été récemment libéré, celui qui s'occupait de mon NextCloud, il est disponible pour servir de “banc test”.

Mise en route

Après avoir etcherisé l'image pour raspi sur un HDD dans un boitier USB3, branché le HDD sur le raspi et zou !

Faut le temps que je me fasse aux grosses différences de philosophie, mais les sticks Z-Wave et Zigbee sont connectés dessus et les différents capteurs et actionneurs sont fonctionnels.
Beaucoup d'outils sous forme d'add-on sont disponibles sur le repo de Home Assistant, par exemple une intégration de VScode version web qui permet d'éditer facilement les fichiers de config du serveur. Ou une DB (ouais, c'est du mariaDB et pas du postgres, mais on fera avec) qui ne nécessite que très peu d'intervention pour être 100% fonctionnelle (ajouter un mot de passe dans la config de l'add-on et une ligne dans le configuration.yaml).

Avec un peu de délais, le RFXcom est lui aussi branché sur Home Assistant, les volets peuvent bien être commandés, tout va bien!

Automatisation

Le système est globalement similaire à OH. Là où on avait des "rules" dans OH, on a des "automatisations" dans HA (alors oui, j'ai mis HA en français, voilà) et dans les deux, on a des "scripts". En plus des "automatisations" et des "scripts" dans la section dédiée à l'automatisation, HA ajoute les "scènes" et les "blueprints".
Les scènes permettent de définir une liste d'appareils et l'état dans lequel chacun doit se retrouver lorsqu'on active la scène.
Les blueprints permettent d'écrire des "squelettes" de scripts ou d'automatisations, pratique lorsque on a plusieurs comportements similaires à appliquer à plusieurs appareils ou groupes d'appareils différents.

Première tentative

Sous OpenHab, j'avais fini par automatiser (par fainéantise) les volets du salon et de l'atelier bricolol pour qu'ils s'ouvrent à 7:30 du lundi au vendredi et qu'ils se ferment au coucher du soleil. Évidemment, il y avait un bool qui activait ou désactivait cette automatisation.

Sous Home Assistant, ma tentative ira plus loin. A 7:30, en plein hiver, c'est la nuit noire, donc pas grand intérêt d'ouvrir les volets. Par contre en été, à 7:30, le soleil est levé depuis longtemps, mais nous on va à peine faire le café. Ce que je veux, c'est que le volet se lève au plus tôt à 7:30 et au plus tard au levé du soleil.

Les déclencheurs

Comme pour OH, c'est un script qui gérera le plus gros du truc et qui sera appelé par une automatisation.

Donc, dans HA, je crée une automatisation dont les triggers vont être :

  • le levé du soleil
  • le coucher du soleil
  • l'heure à laquelle on fait le café pour le petit dej durant la semaine 7:30

On y ajoute une "time condition" qui permet de définir une plage horaire, ici entre 7:29 et 23:00.

Et finalement, on appelle le script de gestion des volets.

Le gras de l'automatisation : le script

Les conditions temporelles sont partiellement gérées par l'automatisation, mais vous étonnez pas si je fais de la redondance.

J'ai aussi créé deux booléens, un pour autoriser le fonctionnement automatique, l'autre pour grosso-merdo "vérifier l'exécution du script".

alias: Script gestion volets
sequence:
  - if:
      - condition: state
        entity_id: input_boolean.automatisation_volets
        state: "on"
    then:
      - if:
          - condition: and
            conditions:
              - condition: state
                entity_id: input_boolean.volets_ouverts
                state: "off"
              - condition: sun
                before: sunset
                after: sunrise
              - condition: time
                weekday:
                  - mon
                  - tue
                  - wed
                  - thu
                  - fri
                after: "07:30:00"
                before: "11:00:00"
        then:
          - device_id: **********
            domain: rfxtrx
            type: send_command
            subtype: Up
          - delay:
              hours: 0
              minutes: 0
              seconds: 0
              milliseconds: 50
          - device_id: **********
            domain: rfxtrx
            type: send_command
            subtype: Up
          - delay:
              hours: 0
              minutes: 0
              seconds: 0
              milliseconds: 50
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.volets_ouverts
          - stop: Volets ouverts automatiquement
        else:
          - if:
              - condition: and
                conditions:
                  - condition: state
                    entity_id: input_boolean.volets_ouverts
                    state: "on"
                  - condition: sun
                    before: sunrise
                    after: sunset
            then:
              - device_id: **********
                domain: rfxtrx
                type: send_command
                subtype: Down
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 50
              - device_id: **********
                domain: rfxtrx
                type: send_command
                subtype: Down
              - service: input_boolean.turn_off
                data: {}
                target:
                  entity_id: input_boolean.volets_ouverts
              - stop: Volets fermés automatiquement
mode: single
  • Au début, on a le bit "automatisation_volets" qui autorise l'exécution du reste.
    • Ensuite, la vérification des conditions pour ouvrir les volets.
      SI
      • le bit "volet_ouverts" est "off" (on check si on n'a pas déjà ouvert les volets)
      • ET qu'on est entre le lever et le coucher de soleil
      • ET qu'on est entre lundi et vendredi (inclus)
      • ET qu'on est entre 7:30 et 11:00
    • ALORS
      • on ouvre les volets (avec un délais très court entre l'envoi des commandes, par précaution)
      • on passe le bit "volet_ouvert" à "on"
      • on stoppe l'exécution du script
    • SINON
      • Vérification des conditions de fermeture des volets
        ETC.

Compte rendu réseaux domotiques

Zigbee, ça fonctionne mieux que jamais.
J'ai 2 ampoules Innr (une rgb, l'autre blanche), 2 contrôleurs de rubans de leds RGB+WW+CW et un capteur aqara t° - humidité - baromètre qui fonctionnent tous parfaitement. Enfin, l'aqara, il ne s'appaire que quand on lui met une pile qui a encore de la charge :P
Y a juste un capteur t° - humidité sonoff qui semble HS, il s'appaire, remonte des valeurs puis semble ne plus jamais communiquer.
Les capteurs moes t° - humidité - luminosité avec écran e-ink ont le même comportement que sous openhab. Une fois appairés, ils remontent les valeurs puis tout retombe à 0 jusqu'au prochain changement de valeurs. C'est dommage, mais du coup, je les utilise comme capteurs non connectés.

Z-wave, bah ça fonctionne encore et toujours.
Encore heureux vu le prix du stick et du capteur. (oui, j'ai toujours rien acheté de plus que le capteur t° - luminosité - mouvements)

RFXCom, fonctionne.
Il a fallu que je ré-appaire l'émetteur avec les récepteurs de mes volets, les codes RFY que j'avais utilisé sous openhab refusaient de fonctionner avec le logiciel RFXmngr. Après appairage réussit, j'ai juste entré les codes dans home assistant et roulez !
Les trois capteurs moches t° - humidité fonctionnent bien.

Je n'exploite aucun autre réseau pour les périphériques spécifiques à la domotique. Rien en wifi ni en bluetooth.

Conclusions

Après approx 3 mois de domotique sous Home Assistant, j'en suis content. Jusqu'ici, on rencontre bien moins de problèmes qu'avec OpenHab.

Pour être honnête, j'envisage de prendre l'abonnement "cloud de 75€/an de Nabu Casa. Ce qui participe au financement du développement de home assistant.

Et même d'investir dans de nouveaux périphériques pour augmenter l'automatisation de la maison :

  • Lixee tic - module zigbee pour compteur linky
  • des capteurs aqara t° - humidité
  • des relais zigbee pour piloter l'éclairage. Alors ça c'est potentiellement un ENORME taf. Parce que l'installation électrique de la maison est vieille et extrêmement mal foutue. Genre sur le même porte fusibles (oui j'ai encore des portes fusibles) j'ai des prises électriques ET des points lumineux. Pas toujours dans la même pièce... ni au même étage...
  • des capteurs de porte/fenêtres fermées. Histoire de pouvoir, par exemple, empêcher la fermeture automatique des volets si une porte est encore ouverte (j'ai des amis qui s'étaient retrouvé coincés dehors comme ça).

En bref, Home Assistant m'a réconcilié avec mon projet domotique. Ca fait plaisir !

OUIN !

Le HDD (un vieux disque mécanique de 320Go de 2009 - je soupçonne que ça soit celui de ma PS3, à l'origine) sur lequel est installé HA a décédé.
La partition principale est passé en read only, fsck et smartctl (le HDD branché sur une autre machine) s'interrompent sur une erreur de lecture.

Donc je suis bon pour recommencer l'installation et la configuration, vu que j'ai oublié de sauver les backup sur une autre machine.

Le ssd replaçant est en place, le serveur est à nouveau fonctionnel. Le capteur sonoff semble aussi à nouveau fonctionnel, par contre, j'ai perdu l'ampoule Innr RGB.

J'ai aussi investi dans un stick usb Home Assistant Skyconnect. Il devrait améliorer le fonctionnement du zigbee et me donne la possibilité de basculer sur des périphériques thread qui semblent être le futur standard pour la domotique. Il n'est pas encore installé parce que flemme, ça fonctionne plus ou moins actuellement.

Oh, autre truc fun, mon capteur triple Z-Wave (t°, luminosité, mouvements) a enfin été appairé en mode sécurisé sans problème !
Du coup, ça relance un peu mon "débat interne" quand à l'utilisation du Z-Wave pour le système de sécurité 🤔