dans ,

LoveLove

Intégrer son compteur électrique ( téléinfo ) dans Home Assistant

faire remonter les infos électriques pas cher dans homeassistant

Pour mon premier article sur le blog, je vous propose de voir ensemble comment intégrer les informations de votre compteur électrique ( téléinfo ) dans Home Assistant pour environ 14€. Ce tuto est valable pour les anciens compteurs électroniques ainsi que pour les nouveaux compteurs communicants « Linky ». Pour récupérer les informations nous allons passer par une fonctionnalité utilisée par les fournisseurs d’énergie : la Télé-information.

Prérequis :

  • Home assistant installé avec ESPHome à jour
  • Un module ESP8266 du type Wemos D1 mini et son alimentation
  • Un module PiTInfo

Programmation ESPHome

Un article est dédié à la programmation d’un ESP8266 ou 32 n’hésitez pas à le consulter en cliquant sur le lien

Le compteur électrique étant généralement distant de votre installation domotique je vous conseille de programmer et flasher d’abord votre ESP8266.

Récapitulatif des étapes d’intégrations à ESPhome:

  • Pour commencer, rendez-vous dans ESPHome vous devez créer une nouvelle configuration en cliquant sur le bouton « + » vert situé en bas à droite de l’écran.
  • Ensuite remplissez les différents champs avec le nom du device, le nom de votre réseau wifi (2.4 Ghz impérativement) ainsi que le mot de passe associé.
  • la plateforme est bien-entendu ESP8266, pour un wemos d1 mini la board est d1_mini
  • Cliquez sur le bouton « Next » et branchez votre Wemos D1 mini en USB sur votre PC, puis cliquez sur « Connect » et choisissez le port COM correspondant à votre Wemos.

Le flash peut durer quelques minutes, laissez la page ouverte en attendant la fin de l’opération.

Après cette opération votre nouvelle configuration apparaîtra sur le Dashboard d’ESPHome, cliquez sur « EDIT », nous allons compléter le fichier de configuration avec les éléments nécessaire à la remontée des informations du compteur.

En dessous de « logger » ajoutez les lignes suivantes :

Enfin, en dessous de la ligne « captive_portal » ajoutez le reste du code :

  • Pour les abonnements Heures Pleines / Heures Creuses :

  • Pour les abonnements au tarif de Base :

Vous pouvez maintenant téléverser le fichier en cliquant sur « INSTALL ».

Voilà pour la partie programmation, passons maintenant au branchement du montage.

Branchement au compteur

logo risque électrique

Vous allez devoir travailler au voisinage d’une tension de 220V qui est dangereuse si vous entrez en contact avec un conducteur électrique. Prenez garde à vos manipulations, en cas de doute coupez l’alimentation électrique.

Nous allons dans cette partie voir comment brancher notre montage, voici le schéma de câblage :

Schéma de branchement
  • Rx du Wemos sur TXD du PiTInfo
  • G du Wemos sur GND du PiTInfo
  • 3v3 du Wemos sur VCC du PiTInfo
  • Les deux bornes d’entrées du PiTInfo doivent être raccordées sur I1 et I2 sous le compteur (Ces bornes sont protégées par un cache), il n’y a pas de polarité de ce coté du montage

Compteur Linky : Pour que les infos remontent à Home Assistant le compteur doit être en mode « Historique ». Vous pouvez vérifier cette information en appuyant sur les touches « + » ou « -« .

Maintenant que le montage est réalisé, il ne reste plus qu’à mettre sous tension le Wemos et retourner sur HA pour configurer la carte Lovelace.

Lovelace

De retour dans Home Assistant rendez-vous dans « Intégrations ». Normalement votre nouveau Wemos devrait être reconnu par HA et vous être proposé à la configuration. Si ce n’est pas le cas, il vous faudra l’ajouter manuellement en cliquant sur « Ajouter l’intégration » en bas à droite. Puis chercher ESPHome dans la liste et enfin rentrer l’adresse IP du module.

Carte des entités du compteur électrique

Ainsi vous obtenez cette carte que vous pouvez ajouter directement à Lovelace ou créer une carte personnalisée.

Voilà c’est maintenant terminé, vous avez toutes les informations de votre compteur qui arrivent sur votre HA. Libre à vous maintenant de gérer ces données, de créer des graphiques, des automatisations… !

EDIT : Suite à un conflit dans Home Assistant au niveau de la configuration pour le tarif « Base », il est nécessaire de modifier la ligne id: index par id: « index_base » dans le code ESPHome :

  - platform: teleinfo
    tag_name: "BASE"
    name: "Index"
    unit_of_measurement: "Wh"
    icon: mdi:gauge
    id: "index_base" # <- Ligne à modifier

Rapport

Participant

Écrit par Math67

Years Of Membership

Commentaires

Laisser un commentaire

Clé d'application GIPHY non définie. Veuillez vérifier réglages

12 Commentaires

  1. super boulot 😉
    je rencontre un soucis, le flas de weemos d1 mini se passe bien (avec la derniere version d’esphome et n’etant pas en ssl) je download le .bin pour ensuite l’uploader sur le weemos avec esphomeflasher : aucune erreur, le weemos remonte bien dans mes integrations et dans esphome.

    Quand je rajoute la partie après ‘logger’ le ‘validate’ est OK et la compilation aussi.

    En revanche lorsque je rajoute la partie pour l’abonnement tarif de base, le ‘Validate’ est OK mais j’ai des erreurs à gogo lors de la compilation :
    Compiling /data/linky/.pioenvs/linky/src/main.cpp.o
    src/main.cpp:30:27: error: ‘esphome::teleinfo::TeleInfoSensor* index’ redeclared as different kind of symbol
    teleinfo::TeleInfoSensor *index;
    ^
    In file included from /data/cache/platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include/wchar.h:4:0,
    from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/cwchar:44,
    from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/bits/postypes.h:40,
    from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/bits/char_traits.h:40,
    from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/string:40,
    from src/esphome/core/component.h:3,
    from src/esphome/components/api/api_connection.h:3,
    from src/esphome.h:2,
    from src/main.cpp:3:
    /data/cache/platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include/string.h:54:8: error: previous declaration of ‘char* index(const char*, int)’
    char *_EXFUN(index,(const char *, int));
    ^
    src/main.cpp: In function ‘void setup()’:
    src/main.cpp:364:9: error: assignment of function ‘char* index(const char*, int)’
    index = new teleinfo::TeleInfoSensor(« BASE »);
    ^
    src/main.cpp:364:9: error: cannot convert ‘esphome::teleinfo::TeleInfoSensor*’ to ‘char*(const char*, int)’ in assignment
    src/main.cpp:365:10: error: request for member ‘set_component_source’ in ‘index’, which is of non-class type ‘char*(const char*, int)’
    index->set_component_source(« teleinfo.sensor »);
    ^
    src/main.cpp:367:28: error: no matching function for call to ‘esphome::Application::register_sensor(char* (&)(const char*, int))’
    App.register_sensor(index);
    ^
    src/main.cpp:367:28: note: candidate is:
    In file included from src/esphome/components/api/api_connection.h:4:0,
    from src/esphome.h:2,
    from src/main.cpp:3:
    src/esphome/core/application.h:68:8: note: void esphome::Application::register_sensor(esphome::sensor::Sensor*)
    void register_sensor(sensor::Sensor *sensor) { this->sensors_.push_back(sensor); }
    ^
    src/esphome/core/application.h:68:8: note: no known conversion for argument 1 from ‘char*(const char*, int)’ to ‘esphome::sensor::Sensor*’
    src/main.cpp:368:10: error: request for member ‘set_name’ in ‘index’, which is of non-class type ‘char*(const char*, int)’
    index->set_name(« Index »);
    ^
    src/main.cpp:369:10: error: request for member ‘set_disabled_by_default’ in ‘index’, which is of non-class type ‘char*(const char*, int)’
    index->set_disabled_by_default(false);
    ^
    src/main.cpp:370:10: error: request for member ‘set_icon’ in ‘index’, which is of non-class type ‘char*(const char*, int)’
    index->set_icon(« mdi:gauge »);
    ^
    src/main.cpp:371:10: error: request for member ‘set_unit_of_measurement’ in ‘index’, which is of non-class type ‘char*(const char*, int)’
    index->set_unit_of_measurement(« Wh »);
    ^
    src/main.cpp:372:10: error: request for member ‘set_accuracy_decimals’ in ‘index’, which is of non-class type ‘char*(const char*, int)’
    index->set_accuracy_decimals(0);
    ^
    src/main.cpp:373:10: error: request for member ‘set_force_update’ in ‘index’, which is of non-class type ‘char*(const char*, int)’
    index->set_force_update(false);
    ^
    src/main.cpp:374:54: error: no matching function for call to ‘esphome::teleinfo::TeleInfo::register_teleinfo_listener(char* (&)(const char*, int))’
    teleinfo_teleinfo->register_teleinfo_listener(index);
    ^
    src/main.cpp:374:54: note: candidate is:
    In file included from src/esphome/components/teleinfo/sensor/teleinfo_sensor.h:2:0,
    from src/esphome.h:39,
    from src/main.cpp:3:
    src/esphome/components/teleinfo/teleinfo.h:25:8: note: void esphome::teleinfo::TeleInfo::register_teleinfo_listener(esphome::teleinfo::TeleInfoListener*)
    void register_teleinfo_listener(TeleInfoListener *listener);
    ^
    src/esphome/components/teleinfo/teleinfo.h:25:8: note: no known conversion for argument 1 from ‘char*(const char*, int)’ to ‘esphome::teleinfo::TeleInfoListener*’
    In file included from src/esphome/components/api/api_connection.h:4:0,
    from src/esphome.h:2,
    from src/main.cpp:3:
    src/esphome/core/application.h: In instantiation of ‘C* esphome::Application::register_component(C*) [with C = char*(const char*, int)]’:
    src/main.cpp:366:31: required from here
    src/esphome/core/application.h:109:5: error: static assertion failed: Only Component subclasses can be registered
    static_assert(std::is_base_of::value, « Only Component subclasses can be registered »);
    ^
    *** [/data/linky/.pioenvs/linky/src/main.cpp.o] Error 1
    ========================= [FAILED] Took 49.82 seconds =========================

    si vous avez une idee, un coup de main, une solution, je suis preneur 🙂

  2. Retour plutot positif, j’ai la remonté des infos depuis 2 jours et cela me semble correct. 🙂
    Je vais essayer de stocker les elements en base de données (dans influxdb par exemple)
    En revanche j’ai les entités linky_intensite et linky_intensite_max qui reste en inconnu, du coup je ne sais pas si cela vient du code ou du compteur??? si tu as une idée je suis preneur 😉
    et bonne année !

    • Salut et bonne année !
      A partir du moment ou ton fichier ESPHome est bien renseigné, Il est possible que le mode du compteur y soit pour quelque chose(historique / Standard). Dans la doc officielle d’Enedis on peut lire « Certaines données du mode historique ne sont pas disponibles dans les compteurs Linky. C’est, entre autres, le cas de l’intensité souscrite, des intensités maximales ou de la zone de tarification (A, C, D, E, Y) ». Chez moi je n’ai pas de compteur Linky, il faudrait voir si d’autres personnes avec des Linky rencontrent ce souci.

  3. Bonjour,
    Merci pour cet article. J’ai réalisé le montage avec un SP32, et aucun problème en suivant tout le tutoriel.
    Hélas, au final, je n’ai pas de remontée d’informations en provenance de teleinfo.
    Je n’ai d’info que sur :
    – Teleinfo status – Connecté
    – Uptime sensor – xxxx s
    – Wifi Signal sensor – -42db
    – Uptime – xx mn
    Etat indisponible pour tous les autres paramètres.
    Mon compteur est un Linky. Su mon compte Enedis, tout les historiques sont bien activés et j’ai des données sur de nombreux mois.

    Est il possible de tracer ce qui se passe dans le ESP32 ? En posant des log ?

    Cdl.

Chargement…

0
grow capteur empreinte digitale plaque et protection

[TEST] et [INSTALL] Grow R503 Capteur d’empreintes digital avec esphome et homeassistant

Moes Bht 002 modèle électrique

[TEST] et [INSTALL] Thermostat Zigbee Moes BHT-002