Ah, la hausse du coût de l'énergie — ce doux plaisir qui transforme chaque facture en petit infarctus mensuel. Entre mon fournisseur d'électricité et moi, c'est une relation passionnelle : eux me prennent mon argent, moi je me gèle le cul à baisser sans cesse le thermostat, je me nique les yeux à éteindre les lumières… et je pleure. Mais comme tout bon masochiste financier, j'ai décidé d'attaquer le problème de front : faire des économies en dépensant masse d'argent !

Vous savez, cette logique imparable où on achète un tas de gadgets pour "moins consommer", quitte à manger des pâtes pendant trois mois pour rentabiliser le tout. Bienvenue dans mon aventure entre prises connectées, bidouillages électroniques et automatisations dignes de Skynet pour, enfin, apprivoiser ma facture d'électricité. 🤖

🛍️ Mon matos pour reprendre le contrôle

Achats indispensables

  • 🔌 Prises connectées : une dizaine achetées sur Amazon, installées stratégiquement dans le logement.
  • Disjoncteurs connectés : pour suivre la consommation de la climatisation et du ballon d'eau chaude.
  • 🔎 Sonde Linky DIY : un module à base d'ESP et d'optocoupleur, branché sur la sortie TIC du compteur pour remonter les données dans mon système domotique (on y revient en détail plus bas).
  • 🏠 Home Assistant : installé sur mon home lab, avec des automatisations pour piloter tout ce petit monde.

💻 Installation et suivi

Les prises connectées m'ont permis d'identifier clairement les pics de consommation — comme ceux liés à la cuisine entre 20h et 21h (four, plaques, micro-ondes). Voici les postes que je monitore :

  • 🛜 Pôle home lab : serveur Proxmox, box Internet, antenne Wi-Fi
  • 📺 Meuble TV : Apple TV, télé, barre de son
  • Électroménager : machine à laver, lave-vaisselle, sèche-serviette
  • 🕹️ Bureaux : PC salon, chambre, etc.

Côté ballon d'eau chaude 💦 et climatisation ❄️, les disjoncteurs connectés permettent une gestion plus fine et automatique, avec des plages horaires programmées.

📡 La sortie TIC du Linky : c'est quoi ce truc ?

Avant de plonger dans le bricolage, prenons un moment pour comprendre ce qu'on exploite. Parce que oui, votre compteur Linky a une sortie gratuite et légale qui diffuse en permanence vos données de consommation. Et non, Enedis ne vous enverra pas les gendarmes pour y avoir branché un fil.

Le port TIC (Télé-Information Client)

La TIC est une interface série unidirectionnelle intégrée à tous les compteurs Linky (et même aux anciens compteurs électroniques). Elle se trouve sous le capot vert amovible du compteur, dans la partie basse (monophasé) ou haute (triphasé). Vous y trouverez trois bornes :

Borne Rôle
I1 Signal de télé-information
I2 Signal de télé-information
A Alimentation (~130 mW à 50 kHz)

Les bornes I1 et I2 transmettent le signal de données. Le branchement n'est pas polarisé : vous pouvez inverser I1 et I2 sans problème. La borne A avec I1 fournit une alimentation faible (environ 130 mW), suffisante pour alimenter un petit module Zigbee type LiXee ZLinky, mais beaucoup trop faible pour un ESP8266 ou ESP32 qui consomme bien plus.

⚠️ À ne pas confondre avec le contact sec (bornes C1/C2), qui sert à piloter des équipements comme le chauffe-eau en heures creuses, mais ne transmet aucune donnée.

Comment fonctionne le signal TIC ?

Le signal est une modulation d'amplitude sur une porteuse à 50 kHz. Concrètement, le compteur superpose les données numériques sur un signal alternatif à 50 kHz. Le récepteur (notre circuit DIY) doit donc :

  1. Démoduler le signal (extraire l'enveloppe du signal modulé)
  2. Inverser la logique (la TIC utilise une logique négative)
  3. Transmettre le résultat sur un port série (UART)

C'est exactement le rôle de l'optocoupleur dans notre montage : il démodule et isole galvaniquement le signal en une seule étape.

Deux modes de fonctionnement

Le Linky peut fonctionner dans deux modes de TIC :

Mode Historique Mode Standard
Vitesse 1200 bauds 9600 bauds
Format série 7 bits, parité paire, 1 stop 7 bits, parité paire, 1 stop
Par défaut ✅ Oui (à l'installation) ❌ Non (sur demande)
Données Basiques (index, puissance, tarif) Plus riches (horodatage, registre de statut, profil de charge…)
Séparateur Espace (0x20) Tabulation (0x09)

Par défaut, votre Linky est en mode historique. Pour basculer en mode standard, il faut en faire la demande auprès de votre fournisseur d'énergie (pas Enedis directement). C'est la prestation F185 d'Enedis, gratuite pour les compteurs Linky.

Qu'est-ce qu'on peut lire ?

Voici les principales étiquettes transmises par la TIC en mode historique :

Étiquette Description
ADCO Adresse du compteur (identifiant unique)
OPTARIF Option tarifaire (Base, HC, EJP, Tempo)
ISOUSC Intensité souscrite (en ampères)
BASE Index compteur option Base (en Wh)
HCHC Index Heures Creuses (en Wh)
HCHP Index Heures Pleines (en Wh)
PTEC Période tarifaire en cours
IINST Intensité instantanée (en ampères)
PAPP Puissance apparente instantanée (en VA)
ADPS Avertissement de dépassement de puissance souscrite

💡 L'étiquette ADPS est particulièrement intéressante en domotique : quand elle apparaît, vous avez entre 30 secondes et 1 minute pour réduire la consommation avant que le Linky ne coupe. C'est la base d'un système de délestage automatique.

En mode standard, vous aurez accès à encore plus d'informations : énergie active soutirée totale (EAST), puissance maximale atteinte (SMAXSN), registre de statuts (STGE), courbe de charge, etc.

📝 Suivre sa consommation : les options

Option 1 : Le suivi fournisseur (basique)

Chez la plupart des fournisseurs, le suivi journalier via l'espace client est inclus. Par contre, le suivi en temps réel est souvent payant (autour de 2 €/mois soit 24 €/an chez certains fournisseurs). Et on parle d'un suivi qui passe par leurs serveurs, avec un décalage, et des pannes régulières. Bof.

Option 2 : Les solutions commerciales clé en main

Si vous n'avez pas envie de sortir le fer à souder, plusieurs solutions existent :

🟢 LiXee ZLinky TIC V2 (~44 €)
Le chouchou de la communauté domotique française. Ce petit module Zigbee 3.0 se branche directement sur les bornes I1/I2/A du Linky (plug & play). Il est autoalimenté par le compteur et transmet les données à votre box domotique (Home Assistant, Jeedom, Domoticz…) via Zigbee. Il est même labellisé "Linky Ready" par le labo Enedis. Comptez 15 à 20 mètres de portée en intérieur, extensible via le maillage Zigbee. Un module fiable, discret, et qui tient sous le capot du Linky.

🟡 Ecojoko (~199 € ou 7,99 €/mois en location)
Solution grand public avec un afficheur déporté design et une application mobile. La version avec clé Linky (ERL) se branche sur la prise TIC et transmet les données par radio. L'app identifie les postes de consommation grâce à l'IA (signatures électriques). Bien fini mais cher à l'achat. Peut être éligible aux certificats d'économies d'énergie (programme Watt Watchers, ~99,50 € après aide sous conditions).

🔵 Modules ESP tout faits (Wemos Teleinfo, T-InfoDIN…)
Des modules sur PCB prêts à l'emploi, à base d'ESP8266 ou ESP32, compatibles ESPHome ou Tasmota. Le T-InfoDIN de Tech4You se monte sur rail DIN, le Wemos Teleinfo est un shield compact. Entre 10 et 25 € selon les modèles. L'avantage : Wi-Fi natif, compatible ESPHome, et vous gardez la main sur tout.

Option 3 : Le DIY pur et dur 🧰

Et c'est là que ça devient intéressant pour nous autres bidouilleurs. Pour moins de 10 € de composants, on peut construire son propre module TIC et l'intégrer à Home Assistant via ESPHome.

🔧 Fabriquer son propre module TIC

Le principe du circuit

Le signal TIC est un signal modulé en amplitude sur une porteuse de 50 kHz. Pour le décoder, on utilise un optocoupleur qui fait double emploi :

  1. Isolation galvanique : protection entre le circuit du compteur et notre microcontrôleur
  2. Démodulation : l'optocoupleur, grâce à ses deux LEDs internes montées en antiparallèle, redresse naturellement le signal et produit une enveloppe exploitable

En sortie de l'optocoupleur, on obtient un signal série inversé. Optionnellement, on ajoute un transistor MOSFET pour obtenir des fronts bien propres, ce qui améliore la fiabilité surtout en mode standard (9600 bauds).

Liste du matériel

Composant Référence Rôle Prix approx.
Optocoupleur LTV-814 (ou SFH620A) Isolation galvanique + démodulation du signal TIC ~0,50 €
MOSFET (optionnel) 2N7000 Mise en forme du signal (fronts propres) ~0,20 €
Résistance R1 1,2 kΩ Limitation du courant dans la LED de l'optocoupleur (côté TIC) ~0,05 €
Résistance R2 10 kΩ Pull-up sur le collecteur de l'optocoupleur (tiré au 3,3 V) ~0,05 €
Résistance R3 (si MOSFET) 10 kΩ Pull-up sur le drain du MOSFET (tiré au 3,3 V) ~0,05 €
Microcontrôleur ESP32 (recommandé) ou ESP8266 Réception UART + transmission Wi-Fi vers Home Assistant ~4 €
Plaque de prototypage Support de soudure ~1 €
Bornier 2 positions Connexion des fils venant du Linky (I1/I2) ~0,30 €

Coût total : moins de 10 € (si vous avez déjà un fer à souder et du fil).

Choix de l'optocoupleur : LTV-814 plutôt que SFH620A

Le SFH620A de Vishay est le composant historique utilisé dans tous les montages de téléinformation depuis des années. Il fonctionne, mais Charles Hallard (l'un des pionniers du sujet en France, créateur de la PiTInfo et de la MicroTeleinfo) a démontré après des tests à l'oscilloscope que le LTV-814 (de Lite-On) offre de bien meilleurs résultats, avec des signaux plus propres et moins de soucis, notamment avec les ESP8266/ESP32. Il est aussi moins cher que le SFH620A.

L'astuce : le LTV-814 dispose de deux LEDs internes montées en antiparallèle (optocoupleur à entrée bidirectionnelle), ce qui lui permet de démoduler nativement le signal AC de la TIC.

Choix du microcontrôleur : ESP32 plutôt qu'ESP8266

L'ESP32 est préférable à l'ESP8266 pour ce projet, pour plusieurs raisons :

  • Plus de puissance de calcul pour traiter le flux série sans erreurs de CRC
  • Plusieurs UART matériels disponibles (l'UART2 sur GPIO16 est idéal, ce qui évite les conflits avec le debug sur UART0)
  • Meilleure stabilité dans les retours d'expérience de la communauté
  • Prix quasi identique aujourd'hui

Si vous utilisez quand même un ESP8266, il faudra utiliser le pin RX natif (GPIO3) et désactiver le logger série dans ESPHome (baud_rate: 0).

Le schéma électronique

Schema linky tic esp

Explication détaillée du circuit

Étage optocoupleur (obligatoire) :

  • Le signal TIC arrive sur les bornes I1/I2 du compteur via R1 (1,2 kΩ) en série avec la LED interne de l'optocoupleur
  • R1 limite le courant à environ 1-2 mA dans la LED, ce qui est suffisant pour la conduction du phototransistor
  • La spécification Enedis demande une impédance d'entrée supérieure à 1 kΩ : avec 1,2 kΩ on respecte la norme tout en ayant un signal suffisamment fort
  • R2 (10 kΩ) est une résistance de pull-up reliée au 3,3V. Elle maintient la sortie à l'état haut quand le phototransistor ne conduit pas (repos = état haut, c'est la convention série UART)
  • En sortie du collecteur (Pin 4), on récupère un signal inversé et démodulé

💡 Pourquoi 1,2 kΩ pour R1 et pas plus ? La spécification Enedis recommande de se rapprocher de 2 kΩ pour permettre le branchement de plusieurs appareils en parallèle. Mais en pratique, avec une valeur trop haute (4,7 kΩ par exemple), le courant dans l'optocoupleur est trop faible et le signal en sortie ne descend pas assez bas pour être lu correctement par l'ESP. Les tests à l'oscilloscope de Charles Hallard montrent qu'à 4,7 kΩ + pull-up 1 kΩ, le signal ne descend qu'à 3,08 V au lieu de 0 V. Avec 1,2 kΩ + pull-up 10 kΩ, on obtient un signal propre qui descend bien à 0,2 V.

💡 Pourquoi 10 kΩ pour R2 ? Avec un pull-up trop faible (1 kΩ), l'optocoupleur n'arrive pas à "tirer" la sortie vers le bas. Avec 10 kΩ, le courant nécessaire est faible (~0,3 mA) et l'optocoupleur bascule correctement.

Étage MOSFET (optionnel mais recommandé) :

  • Le MOSFET 2N7000 en configuration source commune agit comme un inverseur logique avec des fronts très nets
  • Sans MOSFET, le signal peut présenter des oscillations résiduelles de la porteuse 50 kHz, surtout en mode standard (9600 bauds)
  • R3 (10 kΩ) est le pull-up du drain du MOSFET
  • Le Gate est relié à la sortie de l'optocoupleur, le Source au GND, le Drain au GPIO de l'ESP

⚠️ Note importante : Si votre montage fonctionne bien sans le MOSFET (cas fréquent en mode historique à 1200 bauds), inutile de l'ajouter. Plusieurs utilisateurs font tourner un simple optocoupleur + une résistance de pull-up depuis des années sans souci. Le MOSFET est surtout utile si vous constatez des erreurs de CRC ou si vous passez en mode standard.

⚡ Alimentation de l'ESP

On n'alimente PAS l'ESP par le compteur Linky. La borne A ne fournit que ~130 mW, alors qu'un ESP8266 en Wi-Fi consomme autour de 250 mA sous 3,3 V, soit environ 800 mW. C'est 6 fois trop.

Solutions d'alimentation :

  • Alimentation USB 5V classique (chargeur de téléphone) — le plus simple
  • Alimentation 5V sur rail DIN si le module est dans le tableau électrique
  • Si le compteur est éloigné du logement, prévoir un câble blindé type SYT2 (câble téléphonique torsadé blindé) entre les bornes I1/I2 et le module, jusqu'à ~50 mètres

💻 Configuration logicielle avec ESPHome

Pourquoi ESPHome ?

ESPHome dispose d'un composant teleinfo natif qui gère nativement le décodage des trames TIC. Pas besoin d'écrire du code Arduino à la main : tout se configure en YAML. L'intégration avec Home Assistant est automatique.

Étape 1 : Installer ESPHome

Si vous avez déjà Home Assistant, ESPHome s'installe comme un add-on en quelques clics. Sinon, il peut aussi tourner en standalone.

Étape 2 : Configurer le firmware

Voici un fichier de configuration ESPHome complet pour un ESP32 en mode historique avec un contrat Heures Creuses / Heures Pleines :

yaml
esphome:
  name: teleinfo-linky
  friendly_name: "Téléinfo Linky"

esp32:
  board: esp-wrover-kit
  framework:
    type: arduino

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Désactiver le logger sur l'UART pour ne pas interférer
logger:
  baud_rate: 0

api:
  encryption:
    key: !secret api_encryption_key

ota:
  - platform: esphome

# Configuration du port série sur UART2 (GPIO16)
uart:
  id: uart_tic
  rx_pin: GPIO16
  baud_rate: 1200        # 9600 si mode standard
  parity: EVEN
  data_bits: 7

# Composant Teleinfo
teleinfo:
  id: my_teleinfo
  uart_id: uart_tic
  update_interval: 10s
  historical_mode: true   # false si mode standard

# Capteurs
sensor:
  # Puissance apparente instantanée
  - platform: teleinfo
    tag_name: "PAPP"
    name: "Puissance apparente"
    unit_of_measurement: "VA"
    device_class: apparent_power
    state_class: measurement
    icon: mdi:flash

  # Intensité instantanée
  - platform: teleinfo
    tag_name: "IINST"
    name: "Intensité instantanée"
    unit_of_measurement: "A"
    device_class: current
    state_class: measurement
    icon: mdi:current-ac

  # Index Heures Creuses (en Wh)
  - platform: teleinfo
    tag_name: "HCHC"
    name: "Index Heures Creuses"
    unit_of_measurement: "Wh"
    device_class: energy
    state_class: total_increasing
    icon: mdi:counter

  # Index Heures Pleines (en Wh)
  - platform: teleinfo
    tag_name: "HCHP"
    name: "Index Heures Pleines"
    unit_of_measurement: "Wh"
    device_class: energy
    state_class: total_increasing
    icon: mdi:counter

  # Intensité souscrite
  - platform: teleinfo
    tag_name: "ISOUSC"
    name: "Intensité souscrite"
    unit_of_measurement: "A"
    icon: mdi:current-ac

  # Signal Wi-Fi
  - platform: wifi_signal
    name: "Signal Wi-Fi"
    update_interval: 60s

text_sensor:
  # Période tarifaire en cours
  - platform: teleinfo
    tag_name: "PTEC"
    name: "Période tarifaire"
    icon: mdi:clock-outline

  # Option tarifaire
  - platform: teleinfo
    tag_name: "OPTARIF"
    name: "Option tarifaire"
    icon: mdi:file-document

binary_sensor:
  - platform: status
    name: "Statut Teleinfo"

📌 Pour un contrat Base, remplacez les sensors HCHC/HCHP par un seul sensor avec tag_name: "BASE".

📌 Pour le mode standard, changez baud_rate: 9600 et historical_mode: false. Les étiquettes sont différentes (EAST, SINSTS, SMAXSN…), consultez la documentation Enedis Enedis-NOI-CPT_54E pour la liste complète.

Étape 3 : Flasher et brancher

  1. Compilez et flashez le firmware via USB depuis ESPHome
  2. Branchez le module TIC aux bornes I1/I2 du compteur
  3. Alimentez l'ESP en USB
  4. Dans Home Assistant, le nouveau périphérique apparaît automatiquement dans les intégrations ESPHome

Étape 4 : Configurer le module Energy de Home Assistant

Le module Energy de Home Assistant est puissant : il vous permet de suivre votre consommation jour/mois/année avec calcul automatique des coûts. Pour l'activer :

  1. Allez dans Paramètres > Tableaux de bord > Énergie
  2. Ajoutez une source de consommation en sélectionnant vos capteurs d'index (HCHC, HCHP ou BASE)
  3. Renseignez le coût du kWh pour chaque tranche tarifaire
  4. Les graphiques se remplissent au fil du temps

📉 Le talon de consommation : l'ennemi invisible

Le talon (ou consommation de base), c'est ce que votre logement consomme en permanence, même quand vous dormez ou que vous n'êtes pas là. C'est le frigo qui tourne, la box Internet, le serveur, les veilles, les chargeurs branchés à vide…

Avant mes optimisations, mon talon était d'environ 250 W. Grâce à Home Assistant et mes automatisations, je l'ai réduit à 180 W.

70 W de moins en permanence, ça ne semble pas énorme, mais calculons :

  • 70 W × 24 h × 365 jours = 613 kWh/an
  • À 0,25 €/kWh : ~153 €/an d'économies 💰

Et ça, c'est juste le talon. Sans compter les économies sur le ballon d'eau chaude et les pics de consommation optimisés.

Mes automatisations dans Home Assistant

  • Ballon d'eau chaude : fonctionnement limité aux heures creuses, coupure si la température de l'eau est suffisante
  • Prises connectées : extinction automatique du meuble TV la nuit, extinction du bureau quand l'ordinateur est éteint (détection de consommation < 5 W)
  • Alerte surconsommation : notification si la puissance instantanée dépasse un seuil anormal
  • Délestage : si la puissance s'approche du maximum souscrit (via l'étiquette ADPS), coupure automatique des charges non prioritaires

🧪 Dépannage : ça ne marche pas !

Quelques pistes si vous n'arrivez pas à décoder les trames TIC :

  1. Vérifiez le mode TIC de votre compteur : appuyez sur les boutons +/- du Linky et cherchez "Mode TIC : Historique" ou "Mode TIC : Standard". Adaptez la config ESPHome en conséquence (1200 vs 9600 bauds).

  2. Vérifiez le câblage : les fils I1/I2 ne sont pas polarisés, mais vérifiez que R1 est bien en série avec la LED de l'optocoupleur et pas en parallèle.

  3. Trop d'erreurs de CRC ? Essayez :

    • D'ajouter l'étage MOSFET si vous ne l'avez pas
    • De baisser R1 à 1 kΩ (voire 680 Ω dans les cas difficiles)
    • D'utiliser du câble torsadé blindé si la distance est longue
  4. Signal visible sur le moniteur série de l'IDE Arduino mais pas dans ESPHome ? Vérifiez que baud_rate: 0 est bien dans la section logger: pour libérer l'UART.

  5. Utilisez un convertisseur USB-TTL pour tester le signal en sortie de l'optocoupleur sur un PC avec un terminal série (1200 bauds, 7E1). Si vous voyez des trames lisibles, le circuit est bon et le souci est côté logiciel.

☀️ Et après ?

Ce système de monitoring m'a permis de comprendre ma consommation avant de chercher à la réduire. C'est la base. On ne peut pas optimiser ce qu'on ne mesure pas.

Prochaine étape : les panneaux solaires et l'autoconsommation, avec le mode standard du Linky qui permet de suivre la production injectée sur le réseau. J'en parle dans cet article : Je tombe dans le panneau !

📚 Ressources et liens utiles

#Domotic
Commentaires 2
Laisser un commentaire
S
Sahrabi 23/02/2025

Nickel Merci Bilou 🤩

P
Patrick 03/03/2025

Je n'ai pas tout compris, mais c'est plutôt bien documenté. Je vais réétudier tout l'article à tête, reposée, mais ça ressemble plutôt à ce que j'aimerais faire.