Salut,
J’en profite pour donner mon retour d’expérience.
Je suis parti du fameux montage de hallard.me que reprend @Schmurtz avec son custom component TIC pour ESPhome.
Premièrement j’ai passé une semaine à comprendre pourquoi mon montage ne fonctionnait pas à l’aide de multimètre et oscilloscope pour finalement m’apercevoir que sur les deux composants achetés sur Aliexpress (l’optocoupleur et le MOSFET), j’avais… deux mauvais composants ! Tout d’abord on ne m’a pas envoyé le bon modèle d’optocoupleur, mais c’est écrit dessus, puis j’ai reçu une contrefaçon de MOSFET ! Oui je savais pas que ça existait, il y a écrit le bon modèle dessus mais c’était un simple transistor bipolaire NPN… Donc faites-gaffe en commandant sur Aliexpress car on perd vite du temps !
Une fois mes nouveaux (bons) composants reçus, je suis parti tout d’abord sur le logiciel Wifinfo pour ESP8266 pour vérifier que je décodais bien les trames teleinfo sur une page web dédiée. Résultat : ça fonctionne mais de mon côté c’était pas super stable, j’ai l’impression que parfois ça rame, la page web ne se rafraichit plus.
Ensuite, j’allais utiliser le custom component TIC de @Schmurtz pour ESPhome mais en faisant un pull de la branche dev du github ESPhome j’ai vu par coïncidence que la teleinfo venait d’être ajoutée ! Voici la doc associée (qui a un bug dans l’exemple que je vais corriger, il faut remplacer tag
par tag_name
). Ainsi j’ai testé d’ajouter ce nouveau composant sur mon ESP8266. Mon premier essai est un échec : l’ESP8266 part en boot loop, même en ne déclarant que l’UART. Je vais donc voir l’exemple de yaml pour ESP8266 de @Schmurtz et comprends où ça coince : il faut désactiver les logs sur le port série ! Avec cette modification, je charge le logiciel en OTA sur l’ESP8266 et bingo ça fonctionne ! Home Assistant détecte bien mon ESP et ses 3 entités :
Je n’ai ajouté que les 3 paramètres de l’exemple mais le composant teleinfo ne limitant pas les étiquettes reçues, on peut ajouter toutes celles qu’on veut tant qu’elles existent.
Au final, si on a les bons composants et l’astuce de @Schmurtz c’est très facile (je pense que sur l’esp32 on a moins de soucis). Pour tester la fiabilité, j’ai laissé l’ESP8266 toute la nuit et au réveil il continuait à envoyer les infos, je vois juste dans la console ESPhome d’Home Assistant que la connexion se perd régulièrement quelques secondes, est-ce dû à ESPhome, à Home Assistant ou à l’ESP8266, je ne sais pas, mais si ça ne fait que teleinfo ça ne gène pas.
Voici ma conf ESPhome :
esphome:
name: teleinfo
platform: ESP8266
board: nodemcu
wifi:
ssid: "<SSID>"
password: "**********"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Teleinfo Fallback Hotspot"
password: "*********"
captive_portal:
logger:
baud_rate: 0 # disable logging via UART, help to avoid numerous crash with ESP_LOGD
level: INFO # INFO for less log, put DEBUG to view all the linky's "étiquettes" received in the logs
esp8266_store_log_strings_in_flash: False # recommanded for ESP8266 https://esphome.io/components/sensor/custom.html
# Enable Home Assistant API
api:
password: "*********"
ota:
password: "**********"
uart:
id: uart_bus
rx_pin: GPIO13
baud_rate: 1200
parity: EVEN
data_bits: 7
sensor:
- platform: teleinfo
tags:
- tag_name: "HCHC"
sensor:
name: "hchc"
unit_of_measurement: "Wh"
icon: mdi:flash
- tag_name: "HCHP"
sensor:
name: "hchp"
unit_of_measurement: "Wh"
icon: mdi:flash
- tag_name: "PAPP"
sensor:
name: "papp"
unit_of_measurement: "VA"
icon: mdi:flash
update_interval: 10s
historical_mode: true
A noter que je n’ai pas mis de bit de stop contrairement à @Schmurtz.
J’en profite pour remercier toutes les personnes qui ont contribué à cette intégration, je n’ai fait qu’intégrer différents travaux et au final la solution est simple et fonctionnelle.