Comme pour tout le monde, les dernières factures de mon fournisseur d'énergie n'ont pas été une bonne nouvelle, bien au contraire. L'augmentation du coût de l'électricité a un impact notable sur nos finances et souvent, de manière générale, dès lors qu'il est question de technologie, faire des économies nécessite un certain investissement. L'idée est simple et consiste à engager un certain budget qui, dans un temps déterminé, sera remboursé par l'économie réalisée, puis deviendra un bénéfice net à long terme. Mais pour décider de ce qu'il faut changer, encore faut-il savoir où l'on peut effectivement faire des économies.
« Ce n'est pas Versailles, ici ! » : vous vous souvenez sans doute de cette publicité mettant en avant des « services » pour réduire sa consommation et donc faire des économies. Bien que relativement amusante, cette campagne est cependant trompeuse dans le sens où l'expression semble être une référence aux somptueux luminaires du château de Versailles et aux dépenses exorbitantes investies par Louis XIV et son entourage dans le nombre de bougies consommées, qui se chiffrait en plusieurs dizaines de milliers d'exemplaires par bal organisé. Seulement voilà, aujourd'hui l'éclairage n'est pas le poste de consommation le plus important d'une habitation, loin de là, en particulier depuis l'abandon des ampoules incandescentes.
Lorsqu'on parle d'économie d'électricité dans une habitation, il faut généralement regarder du côté du chauffage, du ballon d'eau chaude, du four, du réfrigérateur, des plaques de cuisson, etc. Mais, là encore, ce sont des considérations théoriques qui demandent à être vérifiées, quantifiées et éventuellement révisées. Votre équipement informatique, par exemple, est-il plus ou moins consommateur que votre congélateur ? Quid de votre four ? Lever sérieusement le pied sur les pizzas et les poissons panés aura-t-il un effet visible sur votre facture (comme sur votre ligne) ? Ou plus massivement, est-ce que le cumul de tout un tas de petits changements d'habitudes, avec les difficultés que cela suppose (se reprogrammer n'est jamais facile), aura-t-il vraiment des conséquences positives notables ?
Le zélote écologiste, roulant dans une vieille guimbarde brûlant autant d'huile que d'essence, mais affublé de l'indispensable autocollant « Nucléaire ? Non merci ! » vous répondra sans hésitation : « Oui ! Bien sûr ! Sauvons la planète ! ». Et il aura très vaguement raison (sans qu'il sache lui-même techniquement pourquoi) dans l'absolu, car chaque kilowatt-heure compte, en principe. Mais une réponse de principe, manichéenne au possible, n'est pas suffisante. Il faut quantifier pour décider et changer, et ce, aussi bien pour des raisons financières qu'idéologiques. Car voyez-vous, une vieille ampoule à filament allumée 3 fois l'an dans le fond d'un grenier aura clairement moins d'impact « sur la planète » si elle est laissée tranquille les 10 prochaines années, plutôt que recyclée et remplacée par un modèle à LED, acheté en ligne ou dans un magasin de bricolage à 15 min en voiture de chez soi.
Linky or not Linky... la question ne se pose pas.
La question ne se pose pas, non parce qu'il y aurait un quelconque problème avec ce matériel ou qu'il serait nécessaire de l'entourer de cristaux (programmés une nuit sans lune avec de l'eau provenant d'un haut lieu vibratoire cosmotellurique) pour se protéger contre les ondes OGM de la 5G du vaccin qui vous manipulent pour vous faire croire que la terre est ronde (alors qu'à l'évidence, c'est un disque creux triangulaire à cinq faces), mais tout simplement parce que je ne dispose que d'un bon vieux compteur électromécanique (vous savez, le modèle « vintage », noir, avec un disque qui tourne).
Nous n'avons pas pour habitude, dans ce magazine, de parler de choses qui n'ont pas été mises en pratique réellement, mais, bien qu'il soit possible d'utiliser la prise téléinformatique de ce type d'équipement pour suivre sa consommation, l'intérêt est assez limité. Je m'explique : ceci peut sembler être une affirmation étonnante, mais lorsqu'il s'agit de vouloir faire des économies, une valeur globale, pour toute la maison ou l'appartement, apporte peu de données et est assez peu pratique.
Comment allez-vous déterminer que votre four doit être utilisé avec parcimonie ? Arrêter de l'utiliser pendant une semaine et observer les effets ? Mais avez-vous vraiment utilisé les autres équipements (lave-linge, aspirateur, bouilloire, PC, etc.) exactement de la même manière que la semaine de référence ? Quid du congélateur ou du réfrigérateur ? Allez-vous également l'arrêter pour une semaine, histoire de voir s'il faut le remplacer par un modèle plus économe ?
Une unique mesure comme la consommation globale d'un habitat apporte une information générale, mais ne vous permet pas réellement d'identifier les problèmes ou les postes sur lesquels travailler. De plus, vous n'avez pas réellement besoin de téléinformation numérique, ou TIC (Télé-Information Client), pour cela. Il suffit de relever le compteur de façon hebdomadaire, faire un joli petit tableau dans LibreOffice et le tour est joué, vous avez votre information.
Donc non, je ne parlerai pas de Linky ou de TIC et ceci n'est absolument pas grave, car nous allons utiliser des équipements et des solutions qui nous permettent d'avoir une vraie granularité dans nos mesures. De vraies informations pour juger de la situation.
1. La méthode du constructeur : Sonoff, eWeLink, IFTTT
Je passerai rapidement sur cette partie, car comme vous le savez peut-être, je suis atteint d'une sévère allergie à la dissémination irresponsable de données à caractère privé (les miennes, en particulier) et, en dehors de quelques éléments (santé, préférences sexuelles, croyances, etc.), il n'y a pas plus privé que ce qui se passe dans son lieu de vie. Mouvement, température, activation de tel ou tel éclairage, état du chauffage ou encore consommation électrique détaillée n'ont strictement rien à faire sur l'ordinateur de quelqu'un d'autre, actuellement appelé « le cloud ».
Quoi qu'il en soit, chaque fabricant met généralement à disposition, ou rend son produit compatible avec un ou plusieurs services en ligne permettant de simplifier la gestion de sa domotique. Si nous prenons le cas de Sonoff, ceci se passe avec eWeLink, un service et une application pour smartphone édités par CoolKit Technologies basé à Shenzhen (vous vous souvenez que j'ai parlé de « dissémination irresponsable » ?). Cette application, disponible via Google Play [1] pourra être installée sur votre smartphone très rapidement et, après avoir activé le Bluetooth, pourra être lancée pour configurer n'importe quel appareil Sonoff compatible, comme le POWR316 que nous étudierons en détail plus loin dans l'article.
Le principe de fonctionnement est simple : non configuré, le POWR316 ne se connecte pas au Wi-Fi, mais attend un appairage Bluetooth pour valider cette étape. Ensuite, tout se passera via le réseau local. Dès le démarrage, l'application vous demandera, bien entendu, de créer un compte puis de confirmer votre adresse mail par la saisie d'un code reçu par ce biais. Ce n'est qu'ensuite qu'il sera possible d'appairer le capteur en choisissant d'ajouter un appareil :
Plusieurs façons de configurer un appareil sont disponibles, du Bluetooth au QRcode en passant par la configuration manuelle. L'association Bluetooth est assez classique, mais mérite d'être détaillée pour vous faire une idée de ce qui vous attend d'un point de vue qualitatif. Le scan des appareils Bluetooth fera normalement apparaître le POWR316 en attente de configuration :
Notez, non seulement, le nom de l'appareil, « ck_100186d04c » qui est absolument identifiable (sic), mais également l'interface qui semble avoir quelques difficultés avec la résolution d'écran (Samsung Galaxy A40) et/ou les traductions des messages et textes. Passons. Une petite tape sur Connecter entamera la configuration en vous demandant de choisir un réseau Wi-Fi et de préciser la phrase de passe associée pour se connecter au point d'accès :
Remarquez qu'il ne s'agit pas d'une connexion du smartphone, mais bien d'un passage de configuration à l'appareil Sonoff et surtout que le mot de passe saisi apparaît en clair. Là encore, la qualité de l'interface est plus que douteuse, en particulier par le fait qu'on passera bien 5 minutes à se demander quelle est l'étape suivante, avant de se rendre compte qu'il y a un bouton Enregist... en haut à droite de l'écran. Cette découverte faite et le bouton utilisé, l'appareil sera configuré, reconnecté en Wi-Fi et ajouté :
Là, vous pourrez choisir la pièce associée et finalement terminer la configuration. Vous vous retrouverez ensuite dans l'interface principale listant votre flottille de capteurs :
Une sélection de l'un d'entre eux vous permettra d'afficher les données en temps réel ainsi que l'historique des mesures :
Il faut avouer que, si l'on est que peu attentif aux questions de confidentialité, il s'agit d'une méthode qui peut paraître intéressante pour très rapidement connaître la consommation d'un équipement ou d'un ensemble d'équipements. On notera cependant que, si on se limite à ce genre de choses, des produits moins bavards (car non connectés) existent et se présentent sous la forme d'adaptateurs avec un afficheur LCD se plaçant, tout simplement, sur la prise. Si vous ajoutez à cela un petit carnet et un crayon, vous avez votre « monitoring » maison pour trois francs six sous, parfaitement étanche aux pirates et gouvernements étrangers bien trop curieux.
Mais si vous voulez votre vie totalement ouverte et souhaitez exprimer votre exhibitionnisme numérique, il est possible d'ajouter une couche avec un autre service en ligne, américain cette fois (pour l'équité CPC/PLA/NSA/CIA). En effet, eWeLink permet de centraliser les informations des capteurs, mais est très limité en ce qui concerne les automatisations. Fort heureusement (ou pas), il y a IFTTT, littéralement « IF This Then That » (« Si ceci alors cela ») qui, comme l'acronyme l'indique, permet de déclencher des actions en fonction de conditions.
IFTTT est un service en ligne (et une application iOS/Android [2]) capable de prendre en compte quantité de services, allant d'Amazon Alexa à l'ensemble des produits Google, en passant par Blogger, Twitch, Twitter ou encore eWeLink. IFTTT fonctionne avec la notion d'Applets (limités à 2 avec la version gratuite) qui sont de simples scénarios composés de déclencheurs, de filtres et d'actions.
Une page du constructeur Sonoff [3] détaille la manière de lier les comptes des deux services/applications et ainsi pouvoir associer déclencheurs et actions propres aux périphériques Sonoff. Un essai rapide montre qu'ici, pour la mesure de consommation, les fonctionnalités sont très limitées, voir inexistantes puisque vous ne pouvez utiliser que ce qui est supporté par IFTTT (ce n'est pas vous qui êtes aux commandes). Pour un Sonoff POWR316, ceci se limite à la fonction d'interrupteur Wi-Fi et rien de plus.
On voit ici les problèmes soulevés par ces solutions :
- vos données fuitent chez des prestataires que vous ne connaissez pas et en qui vous ne pouvez pas avoir confiance ;
- vous être limité par les fonctionnalités mises à disposition ;
- vous êtes tributaire de l'existence du service et d'éventuels changements, à la fois dans les API et dans la politique commerciale ;
- vous n'avez strictement aucune maîtrise de la solution et aucun contrôle ;
- si vous n'avez plus d'Internet, vous n'avez plus de domotique.
Donc, en ce qui me concerne, ce dernier mail d'IFTTT « Sorry to hear that you are deleting your account » ne suscite pas une once de regret, pas plus que la suppression du compte (et de l'application) eWeLink :
Je voulais savoir, je voulais vous montrer. C'est fait. Passons à autre chose.
2. On arrête de rigoler et on fait ça proprement
C'est bien gentil tout ça, mais le moment est venu de faire les choses de manière sérieuse et responsable, sans fuiter tout ce qui se passe dans notre demeure en direction de l'administration de monsieur Xi Jinping ou des sous-fifres du général Nakasone. Le mot d'ordre est clair : ce qui se passe dans la maison reste dans la maison. Ce qui veut dire pas de cloud, pas de service à inscription obligatoire et pas de connexion permanente à Internet.
Nous avons abordé dans le numéro 46 toute la procédure de mise en marche d'une installation domotique en utilisant deux composants principaux : Home Assistant pour la centralisation des données, les scripts et les automatisations, et ESPHome, un SDK complet, très simple d'utilisation pour remplacer le firmware de très nombreux capteurs et périphériques, voire de montages « faits maison » à base d'ESP8266, ESP32 et Raspberry Pi Pico W. Dans les numéros 47 et 48, nous avons approfondi le sujet et complété l'installation de différentes manières.
Je ne me relancerai pas ici dans des explications exhaustives sur le sujet, mais pour ceux d'entre vous qui prennent le train en marche, nous allons commencer par un rappel rapide.
2.1 Home Assistant, HAOS et ESPHome : cours de rattrapage accéléré
Home Assistant [4] est un projet open source visant à créer un serveur domotique centralisant les informations des capteurs rattachés (température, mouvement, caméra, etc.), actionnant des périphériques pilotés (interrupteurs, relais, etc.), présentant les informations structurées via une interface web et/ou mobile et permettant de mettre en place des automatisations, des scènes et des scénarios.
L'installation de Home Assistant, ou HA pour les intimes, peut se faire de différentes façons (installation totale, conteneur, service local, etc.), sur différentes plateformes (PC, Mac, SBC ARM, etc.) et différents systèmes (Windows, GNU/Linux, FreeBSD, macOS, etc.). La solution la plus simple pour très rapidement disposer d'un serveur HA est de lui dédier une machine, que ce soit un PC ou un SBC ARM comme une Raspberry Pi (personnellement, j'utilise une Pi 3). Pour cela, vous pouvez utiliser HAOS pour Home Assistant Operating System, un GNU/Linux déjà configuré, faisant fonctionner HA dans un conteneur Docker.
Si votre cible est une Pi, les choses sont encore plus simples, puisque HAOS est listé dans les systèmes alternatifs de Raspberry Pi Imager [5], l'outil officiel de création de cartes SD pour les Pi, disponible pour GNU/Linux, Windows et macOS. Téléchargez l'outil, choisissez le système, enregistrez le support, placez la SD dans la Pi, alimentez le SBC et l'affaire est dans le sac.
Il en va presque de même pour une installation sur PC (comme un mini PC type Intel NUC ou un vieux portable). Pointez un navigateur sur la page GitHub de HAOS [6], allez dans « Releases » et piochez la dernière image (haos_generic-x86-64-10.2.img.xz à ce jour). Décompressez, inscrivez l'image sur le support de démarrage (disque dur de la cible branché temporairement en USB via un adaptateur ou clé pour un démarrage sur USB) avec dd en ligne de commandes ou Etcher [7] et démarrer la machine (cf. le site HAOS [8] pour plus de détails).
Que ce soit sur Pi ou PC, une fois HAOS démarré et grâce à la magie de mDNS, vous n'aurez qu'à pointer votre navigateur sur http://homeassistant.local:8123 pour découvrir l'interface de Home Assistant et vous laisser guider pour la configuration de base. Tout est parfaitement ergonomique et non technique lorsqu'on s'en tient aux fonctionnalités basiques, ce n'est qu'une question de se familiariser avec l'interface. Pour le reste, j'ai couvert cela plus largement dans le Hackable 46 (puis le 47 et 48 pour des éléments spécifiques).
L'autre pièce maîtresse est le firmware qui prendra place dans les périphériques en remplaçant ce que le constructeur y aura programmé pour son architecture. La quasi-totalité des équipements utilisables et hackables, comme les Sonoff et les Shelly, utilisent un microcontrôleur ESP8266 ou ESP32 d'un modèle ou d'un autre. Pour avoir un nouveau firmware, open source et maîtrisable, le code qui le compose doit être en mesure de supporter les composants intégrés (afficheurs, LED, GPIO, entrées, capteurs divers, etc.).
Fort heureusement, deux projets sont là pour nous éviter de devoir tout coder nous-mêmes : Tasmota [9] et ESPHome [10]. Les deux ont leurs avantages et leurs inconvénients, les deux fonctionnent parfaitement avec Home Assistant et les deux font parfaitement le travail. Tasmota se présente sous la forme d'une interface graphique (Tasmota Web Installer dans Chrome, Tasmotizer et ESP-Flasher pour Windows, GNU/Linux ou macOS) et ESPHome s'utilise en ligne de commandes en reposant sur un conteneur Docker et des fichiers de description au format YAML. À noter que les projets Home Assistant et ESPHome sont très proches et collaborent intensivement, et qu'il est également possible d'intégrer ESPHome dans HA et de mettre à jour vos périphériques via l'interface web (pour ceux qui aiment, moi j'aime pas).
ESPHome est pour moi un choix évident, car c'est simple d'utilisation (la simplicité n'est pas une GUI bling-bling) et les descriptions en YAML sont faciles à gérer, composer, modifier et versionner (avec Git). Les images de conteneurs sont disponibles pour AMD64, ARM et AARCH64 et s'installeront sans problème sur n'importe quelle machine GNU/Linux supportant Docker (Pi incluse), via :
Vous vous retrouverez avec une image de conteneur esphome que vous pouvez instancier au besoin (lancer un conteneur, puis le détruire). J'ai ma petite architecture par défaut pour tous mes fichiers YAML et en voici un exemple le plus simple (et court) possible :
Ceci sera stocké dans un fichier, sonoffbasic_simple.yaml par exemple, dans un répertoire dédié à ESPHome. Ce fichier contient tout ce que ESPHome doit savoir sur le matériel que vous utilisez (ici, un interrupteur Sonoff Basic) : le type de microcontrôleur, le nom du périphérique que vous créez, où est branché le bouton, quelle broche pilote la LED et quelle fonction celle-ci doit avoir, ce qui se passe si on appuie sur le bouton...
Un répertoire inc/ est également utilisé pour y placer des éléments qui seront communs à tous vos périphériques ESPHome, ce qui vous évitera de les copier/coller dans chaque fichier YAML de chaque périphérique. Nous avons ainsi les informations concernant l'installation HA (auth.yaml) :
et celles pour votre point d'accès Wi-Fi (wifi.yaml) :
Les éléments « sensibles » ne sont pas dans ces fichiers, mais stockés dans secrets.yaml se trouvant également dans inc/ :
Nous avons, dans l'ordre, le nom du point d'accès, son mot de passe, le mot de passe de l'AP de secours (pour se connecter directement au périphérique en cas de problème), le mot de passe de mise à jour OTA et une clé secrète prépartagée, constituée de 32 octets encodés en base64. Lorsqu'un nouveau périphérique flashé avec cette configuration sera détecté par votre serveur HA, celui-ci vous demandera s'il faut l'intégrer et il vous faudra alors spécifier cette clé pour que les deux intervenants (périphérique et serveur) s'authentifient. Vous pouvez obtenir une clé aléatoire en allant sur https://esphome.io/components/api.html. Celle qui apparaît là change à chaque rechargement de la page, ou alors vous pouvez en générer une vous-même avec la commande echo -n `echo -n "mon_secret" | md5sum | awk '{print $1}'` | base64.
Une fois un joli script YAML dûment créé, générer un firmware correspondant, le compiler et le programmer dans un périphérique compatible se fait en une ligne de commande invoquant Docker et le conteneur esphome :
-s devicename sonoff666 est une option nous permettant de changer le nom du périphérique directement à la construction, ce qui est fort pratique si vous avez une série d'appareils identiques à reprogrammer et ne voulez pas éditer le YAML à chaque fois. --device=/dev/ttyUSB1 désigne le port série sur lequel est connecté le périphérique en mode programmation (GPIO0 à la masse sur ESP8266/32) et sonoffbasic_simple.yaml est notre script YAML.
Notez qu'un périphérique ESPHome en fonction et connecté au réseau Wi-Fi local pourra être reprogrammé directement sans connexion série, via OTA. Vous n'aurez plus besoin de spécifier le port à utiliser et le nom (devicename) sera le nom d'hôte pour contacter le périphérique (sonoffbasic_simple.local ici).
Arrêtons-là le cours de rattrapage et acceptez mes excuses si vous avez déjà lu tout cela dans un numéro précédent. J'ai condensé au maximum le B.A.BA de HA et d'ESPHome, tout en essayant de rendre cela intelligible pour que le plus grand nombre profite du contenu de cet article.
2.2 Sonoff POWR316 alias Sonoff POW Origin 16A
ATTENTION DANGER !
Nous parlons ici d'équipements connectés au courant domestique qui, je le rappelle, est potentiellement mortel. Prenez toutes les dispositions nécessaires pour assurer votre sécurité et celle de votre entourage (chats inclus).
Ne travaillez JAMAIS sur le circuit d'un équipement connecté au courant domestique. Je pense en particulier à la programmation du firmware. Respecter les usages. Quand le boîtier est ouvert, il n'est pas branché au ~230 V. Point ! Ne connectez jamais l'adaptateur USB/série, ou tout autre équipement de mesure, lorsque le boîtier est connecté au courant domestique. Point ! Laissez cela à des personnes immortelles ou qui savent parfaitement ce qu'elles font.
Et enfin, la connexion à la terre est importante. Ces boîtiers, Sonoff, Shelly ou autre n'utilisent généralement que des connexions pour la phase (« L » pour « live », brun) et le neutre (« N », bleu), et n'ont pas de liaison à la terre. Mais contrairement aux Sonoff Basic, par exemple, prévus pour des luminaires, nous parlons ici de contrôler des équipements différents (réfrigérateur, PC, four, lave-linge, etc.) qui DOIVENT être reliés à la terre. Il est donc crucial pour votre sécurité de relier la terre de la fiche mâle (vert/jaune) à la terre de la fiche femelle, en passant donc à côté du Sonoff/Shelly. Je le répète : un équipement DOIT être relié à la terre, même piloté par un IoT domotique. Et ceci ne souffre d'aucune discussion. Point !
Le Sonoff POWR316 se trouve facilement sur des sites comme AliExpress ou Amazon pour quelques euros. Construit autour d'un ESP32 et d'un capteur de courant ChipSea CSE7766 connecté en interne via une liaison série de 4800 bps, celui-ci dispose d'un bornier permettant de connecter phase et neutre en entrée et en sortie. Couplé à des prises mâles et femelles, ou placé dans un tableau électrique, il agit comme une prise télécommandée pouvant se placer entre une source AC 230 V et un ou plusieurs appareils. Ce modèle, comme son nom l'indique, est limité à 16 ampères, qui est le courant généralement associé aux circuits de prises électriques (par opposition aux luminaires généralement à 10 A et aux circuits spécifiques à 20 A ou 32 A). Il n'est bien entendu pas question de dépasser cette limite.
Reprogrammer un POWR316, comme les autres modèles de la même famille, est relativement facile. Il suffit d'ouvrir le boîtier (4 simples vis) et on découvre un sympathique emplacement, avec les noms des signaux sérigraphiés sur le circuit, afin de souder des broches pour y connecter un adaptateur USB/série 3,3 V. Il suffira ensuite de presser l'unique bouton présent tout en branchant l'adaptateur. Cette mise sous tension spécifique démarrera l'ESP32 avec GPIO0 à la masse et donc en mode « bootloader » (programmation).
Dès lors, on pourra utiliser le conteneur ESPHome pour construire et flasher un nouveau firmware. Ce dernier sera produit par le script YAML suivant, qui débute par les mentions classiques (nom, plateforme, carte, informations de connexion) :
Nous avons ensuite besoin de déclarer le port série pour le capteur d'énergie, ainsi que spécifier l'utilisation du composant time de HA pour que le capteur synchronise son horloge et puisse nous fournir une quantité d'énergie quotidienne et non simplement en temps réel ou cumulé :
Puis viennent les déclarations des capteurs, à commencer par le CSE7766 :
Ces informations, courant, tension, puissance, énergie sont directement celles fournies par le composant ChipSea, mais nous ajoutons également le volume d'énergie « pour la journée », qui se base sur w_sensor. Il s'agit, dans les grandes lignes, d'une intégration avec le cumul de puissance pour les 24 dernières heures, ramené à zéro à minuit.
Nous configurons ensuite l'usage du bouton :
Nous pouvons faire ce qui nous chante, mais je pense que basculer le relais et piloter la LED rouge intégrée est une bonne idée. Notez que la relation entre le bouton (GPIO0) et le relais ne passe pas par HA, ce qui est fort pratique si le Sonoff en question est celui qui mesure et contrôle la multiprise sur laquelle est branchée la Pi avec le serveur HA et que vous avez la bonne idée de couper l'alimentation « pour voir si ça marche » (vécu, et pas drôle).
À propos des GPIO justement, nous avons ensuite les LED :
Et nous terminons par le relais sur GPIO13 :
Notez le RESTORE_DEFAULT_ON permettant, en cas de coupure ou de redémarrage, de spécifier un état précis. Ici, il s'agit de revenir au précédent état connu ou, s'il est indéfini, d'activer le composant (relais). Ceci nous permet donc d'avoir une solution en cas de coupure de délestage ou autre, et ne pas avoir à faire le tour des Sonoff pour tout rallumer. Une autre option valide aurait été ALWAYS_ON pour ignorer l'état précédent et toujours être actif.
Une fois tout ceci enregistré dans un fichier sonoff_powr316.yaml, il ne restera plus qu'à construire le firwmare et reflasher le ou les périphériques avec une simple ligne de commande, comme détaillé dans le petit cours de rattrapage express. Notez que, contrairement aux Sonoff Basic par exemple, il ne semble pas possible d'alimenter ces modèles depuis les broches de programmation. Le firmware démarre, mais ne cesse de faire rebooter l'ESP32. Pour mettre le périphérique en fonction et l'intégrer dans Home Assistant, il faudra donc l'installer réellement en production, et donc l'alimenter avec du courant domestique (boîtier fermé, donc).
2.3 Un mot sur les Sonoff POWR320D
Le POWR320D est une déclinaison 20 A (parfait pour mon four) du POWR316. Le circuit imprimé est identique, tout comme la plupart des composants qui s'y trouvent. Seul deux sont différents, le relais qui est bistable (deux GPIO de contrôle plutôt qu’un qui bascule) et un contrôleur d'affichage Titan Micro TM1621 assorti d'un écran LCD qui n'existe pas dans la version PWR3xx (sans le « D » pour display).
Honnêtement, pour quelques euros de plus, je pensais que l'écran LCD serait du plus bel effet et très utile, mais ce n'est pas du tout le cas. C'est amusant de voir le nombre de watts, la tension, le courant ou l'énergie consommée en temps réel, mais on s'en lasse rapidement, d'autant que tout est affiché, en mieux, dans HA.
Quoi qu'il en soit, ces petites différences doivent être prises en compte dans le YAML correspondant. Pour l'affichage, nous avons :
Nous spécifions la connexion aux GPIO et nous utilisons un template permettant de directement modifier les informations à l'écran en fonction des valeurs d'énergie consommée et de la puissance en temps réel. Notez que l'afficheur et le contrôleur sont utilisés sur plusieurs périphériques Sonoff et que l'unité affichée est une sorte de paire d'icônes, que nous activons ici avec display_kwh(). Il en existe trois autres : display_voltage() (tension et courant), display_celsius() (température), display_fahrenheit() (température) et display_humidity() (hygrométrie). Eh oui, il n'y a que « kWh » et pas de « Wh ». Il est possible de faire plus étoffé, comme détaillé sur la page dédiée du site ESPHome [11], mais à quoi bon, on se lasse après quelques coups d’œil post-installation et personne ne va jamais appuyer sur le bouton pour basculer l'affichage.
Le relais, pour sa part, est géré différemment puisque nous avons GPIO02 pour l'activer et GPIO04 pour le désactiver. Il est donc nécessaire de déclarer une entité (template) pouvant basculer et agissant sur les deux GPIO alternativement :
C'est tout. Compilez et flashez, et voici votre POWR320D prêt à servir.
2.4 L'énergie dans Home Assistant
Une fois le ou les Sonoff POWR alimentés et connectés au Wi-Fi de la maison, ceux-ci seront détectés par le serveur HA qui vous invitera à les intégrer en spécifiant la pièce dans laquelle ils se trouvent et la clé d'authentification. Avec les configurations spécifiées ici, chaque Sonoff fournit alors 9 entités. Il vous sera possible de faire apparaître chacune d'elles dans l'interface (tableau de bord ou dashboard) pour surveiller tension, courant, puissance, etc.
Mais HA va plus loin dans ce domaine, en proposant un tableau de bord spécialisé nommé « Énergie ». Un simple clic dans la barre latérale vous permettra d'accéder à ce dernier et de débuter la configuration. Là, vous pourrez alors spécifier chaque entité remontant des valeurs en joules (GJ ou MJ) ou en watt-heure (kWh, MWh ou Wh). Remarquez que HA est conçu pour des installations bien plus avancées que ma modeste demeure, en permettant, en plus de l'énergie provenant du réseau électrique, de prendre en charge la production de panneaux solaires pouvant être réinjectée dans le réseau ou stockée localement (batteries). La consommation de gaz et d'eau peut également être ajoutée, mais ceci demandera des installations spécifiques.
Une fois toutes les entités ajoutées, le tableau de bord « Énergie » pourra faire son travail. Comme le précisent les différents messages de l'interface, laissez un peu de temps à HA pour synthétiser tout cela et remonter l'ensemble des informations. Mon expérience montre que ce n'est certes pas immédiat, après une modification de la configuration, mais nous sommes tout de même loin des 2 heures annoncées. Mais une fois que cela fonctionne, c'est un véritable bonheur.
On voit l'ensemble de la consommation surveillée apparaître sous la forme d'un magnifique graphique décliné en heures, jours, semaines, mois et années, donnant une vision globale de ce qui se passe et, par définition, des gains, si vous comptez faire des efforts pour ajuster votre consommation (une fonction de comparaison sur différentes plages de temps est disponible).
Tout n'est cependant pas parfait et deux problèmes notables sont omniprésents dans les forums du projet. Le premier concerne les coûts. En effet, il est possible d'associer un prix au watt-heure consommé et donc d'obtenir une vision financière de la consommation. Malheureusement, le tarif en question est spécifié, au moment de l'ajout d'une entité, en ne pouvant préciser que deux chiffres après la virgule, ce qui pose un gros problème, car avec le kilowatt-heure à 0,1708 € hors taxe (tarif de mon fournisseur local), ceci n'est pas possible. L'astuce consiste à ne pas choisir Utiliser un prix statique mais Utiliser une entité avec le prix actuel.
Ceci ne peut être fait qu'après avoir effectivement créé l'entité en question. Pour cela, rendez-vous dans Paramètres, Appareils et services, onglet Entrées, puis choisissez Créer une entrée (en bas à droite). Dans la liste, choisissez Nombre et dans l'écran suivant, spécifiez un nom (« tarifelec », par exemple), précisez Champ de saisie pour le Mode d'affichage et « EUR/MWh » (ou « EUR/kWh ») comme unité de mesure. Validez et vous devrez alors voir votre « entrée » dans la liste. Cliquez dessus et spécifiez le tarif dans l'unité choisie (TTC de préférence). Attention, le coût est utilisé et enregistré en temps réel et n'est pas rétroactif. Donc si vous le faites après avoir commencé à collecter les mesures, celles du jour même seront partiellement fausses et celles des jours précédents à zéro. Cependant, dès cette manipulation faite, les prix commencent à apparaître en compagnie des consommations en kWh.
Le second problème est davantage cosmétique, mais est assez énervant à long terme. Il tient dans le fait que la représentation graphique de la consommation sur le dashboard utilise les identifiants des capteurs (ID) et non le nom de l'entité (friendly name). Il est donc difficile de voir rapidement quel capteur « consomme » quoi et ce à quoi il est connecté (four, PC, box, bouilloire, etc.). Deux solutions existent, mais sont assez pénibles à mettre en œuvre : soit on renomme les entités dans HA, soit on créé un template afin de disposer de nouvelles entités, avec des noms différents, ne faisant que reprendre les valeurs des capteurs. Cette solution, temporaire, est celle proposée par elvo dans les forums HA [12], mais elle suppose de tirer un trait sur les données déjà collectées, pour partir sur cette nouvelle base. Vous savez comment ça marche, quand on commence à avoir des mesures, on n'a pas envie de les perdre et personnellement, comme il ne s'agit en principe que d'une question d'interface, je vais laisser tout cela en l'état et miser sur une éventuelle future évolution et mise à jour du dashboard « Énergie ».
Conclusion
Au moment de la clôture de la rédaction du présent article, cela ne fait que quelques jours que j'ai totalement intégré la gestion de la consommation électrique à mon installation Home Assistant. Je vous ferai peut-être un retour au prochain numéro, mais les constatations intéressantes sont déjà là. Le four est un gouffre à énergie et je me pose la question d'éventuellement acquérir un mini four de table dédié (~90 €), moins gourmand (1200 W), car plus compact, pour les pizzas de mon fils (moi, je ne mange pas ça).
Mais le plus choquant est sans doute les quelque 5 kWh de mon PC de plus de 10 ans d'âge. Il va falloir sérieusement réfléchir à une solution. Idem pour la bouilloire, utilisée pour les cafés (solubles) du matin, qui mérite de l'attention. Mais le réfrigérateur, lui, un Samsung RT34MASW1 de presque 15 ans n'est étonnamment pas très gourmand. Les plaques vitrocéramiques De Dietrich sont un problème, mais d'un tout autre acabit puisque le courant nécessaire (32 A) dépasse les capacités des Sonoff/Shelly (16 A ou 20 A). Il va falloir que je trouve une solution, car c'est certainement un gros poste de consommation...
Au final, j'ai acquis 5 Sonoff POWR316 [13] (dont un que j'ai suicidé en l'alimentant en 5 V) et 2 POWR320D [14]. Cet investissement de quelque 125 € devra, en premier lieu, se rentabiliser durant les 12 prochains mois. Ceci revient à économiser quelques ~10 €/mois (soit ~50 kWh) et me semble tout à fait faisable en changeant quelques habitudes. Nous verrons, mais une chose est claire : maintenant, au moins, je sais !
Références
[1] https://play.google.com/store/apps/details?id=com.coolkit
[2] https://play.google.com/store/apps/details?id=com.ifttt.ifttt
[3] https://sonoff.tech/product-review/tutorial/works-with-ifttt-instruction-guide/
[4] https://www.home-assistant.io/
[5] https://www.raspberrypi.com/software/
[6] https://github.com/home-assistant/operating-system
[8] https://www.home-assistant.io/installation/generic-x86-64
[9] https://tasmota.github.io/docs/
[10] https://esphome.io/
[11] https://devices.esphome.io/devices/Sonoff-POW-Elite-20a
[12] https://community.home-assistant.io/t/energy-custom-names-for-individual-devices/372943/14