Où acheter cet équipement, à quel prix ?
La sonde que je teste vient de chez Domadoo, elle existe en plusieurs versions. Je teste la V2 sans antenne externe.
- Chez Domadoo (vendeur français) entre 49 et 60€ suivant le modèle
- Dans mon vide-grenier ?! S’il en reste.
J’ouvre la boite et vérifie le modèle reçu
Il existe visiblement deux versions, une avec antenne interne et une avec antenne externe.
La seconde probablement prévue lorsque des perturbations sont générées et peuvent nécessité d’éloigner l’antenne du boitier.
Le module est tout simple, 3 connecteurs rigides, pas de mode d’emploi, je me dis que c’est plutôt bon signe, ce doit être archi simple.
Au dos, on voit un schéma qui montre ou mettre le module dans le Linky.
Je vais connecter le module
Je regarde comment sont balisées les borniers du Linky et du module, c’est impossible de ne pas comprendre :
Je place ZigbeetoMQTT en mode appairage et je connecte le boitier, il suffit d’appuyer sur le bouton noir pour libérer le connecter et glisser les broches dessous.
La led bleue clignote, l’appairage est en cours, je retourne sur Zigbee2MQTT pour voir le résultat.
Je vérifie l’état du module grâce à la LED
La LED peut avoir trois états, si ce n’est pas bon à cette étape, inutile d’aller plus loin.
- La LED clignote rapidement plusieurs fois = ZLinky_TIC est en mode attente d’appairage.
- La LED clignote plusieurs fois lentement = Zlinky_TIC rencontre des erreurs lors de l’acquisition des données du Linky. 😥
- La LED clignote une fois toutes les 3 secondes = Le ZLinky_TIC fonctionne correctement. L’appareil décode correctement le Linky 😊
Je tente une intégration Zigbee2MQTT
L’intégration a parfaitement fonctionné du premier coup.
Le module est détecté en « ZLinky_TIC »
La version détectée ne fait pas la différence entre la V1 et la V2, ce n’est pas grave
Je vais regarder les valeurs, tout est là, magique, en quelques secondes.
Je teste le capteur dans Home Assistant
Je lui donne un nom compréhensible : Linky dans Zigbee2MQTT puis je vais le chercher dans HA
Et voilà, toutes les données sont présentes dans Home Assistant.
Signification de chaque donnée
Un petit tableau est bien plus parlant. Pour le triphasé, le résultat sera différent.
Je désactive toutes les entités qui ne me sont pas utiles
Voici donc les entités de l’appareil Linky :
Je mets à jour le module Zlinky_TIC
Je l’ai lancé via Home Assistant, mais cela peut se lancer depuis Zigbee2MQTt, dans les deux cas, on voit que la mise à jour est en cours dans Zigbee2MQTT également :
Attention, la mise à jour est très longue, il faut laisser tourner…
Je ne sais finalement pas trop pourquoi cette mise à jour s’est lancée, la version 14 était déja installée avant la mise à jour. Ce n’est pas grave, tout s’est bien passé et le flag de mise à jour est redevenu à off.
Je regarde la page paramètres dans Zigbee2MQTT
J’ai trouvé cette page, il n’y a aucun paramètre, je ne sais pas si cela a une utilité. Dans le doute, je configure.
Nota, Mise à jour, petite erreur, ne pas mettre KWh à 0 mais à 3 car ceux sont des K.
[Archive] J’utilise un template pour HC/HP
Je donne ici le template que j’avais fait un mode historique pour récupérer l’info HC ou HP en fonction des horaires.
En effet, avant l’installation de ce nouveau module Zigbee, j’utilisais un module TIC en USB.
Ce module me fournissait également une valeur HC.. ou une valeur HP.. dans la variable sensor.linky_active_register_tier_delivered (PTEC)
Pour cela, j’utilise une entité template, dans le fichier template.yaml, j’ajoute :
- sensor: - name: Periode tarifaire en cours unique_id: sensor.periode_tarifaire_en_cours state: >- {% if is_state("sensor.linky_active_register_tier_delivered", "HP..") %} HP {% else %} HC {% endif %}
Changement de mode Linky
Il existe deux modes, le mode Historique et le Mode Standard.
J’avais un équipement TIC non compatible avec le mode Standard, je n’ai donc jamais changé.
Hors ce nouveau module fonctionne également en mode Standard d’après sa documentation. Le mode standard est bien plus complet.
Je fais donc un message à EDF pour changer le mode :
- Demande en ligne effectuée via le formulaire le 03 novembre
- Réponse le 04 novembre
- Bascule le 05 novembre
Rien à dire, chapeau EDF !!
Bascule du mode Historique au mode Standard
Je dois avouer avoir patiné un peu sur ce basculement sur Zigbee et Home Assistant.
J’ai tenté de changer le mode, de réappairer le module… Les informations ne remontaient pas, j’y ai passé un moment.
Finalement, j’ai tout fermé, laissé passé une nuit et j’ai repris le lendemain, tout fonctionnait !
Il ne faut donc pas être pressé, il doit y avoir des cycles d’actualisation… bref, cela fonctionne, voici les écrans.
Données du mode Standard
Commande TIC | designation | unit | valeur par defaut | Comment | data type | size max |
---|---|---|---|---|---|---|
ADSC | Adresse Secondaire du Compteur | – | NULL | String | 12 car | |
NGTF | Nom du calendrier tarifaire fournisseur | – | – | String | 16 car | |
LTARF | Libellé tarif fournisseur en cours | – | – | String | 16 car | |
NTARF | Numéro de l’index tarifaire en cours | – | – | Uint8 | 2 car | |
VTIC | Version de la TIC | – | – | Uint16 | 2 car | |
DATE | Date et heure courant | – | EX: E211022162000 | String | 10 car | |
EAST | Energie active soutirée totale | Wh | 0 | Uint48 | 9 car | |
EASF01 | Energie active soutirée Fournisseur, index 01 | Wh | 0 | Uint48 | 9 car | |
EASF02 | Energie active soutirée Fournisseur, index 02 | Wh | 0 | Uint48 | 9 car | |
EASF03 | Energie active soutirée Fournisseur, index 03 | Wh | 0 | Uint48 | 9 car | |
EASF04 | Energie active soutirée Fournisseur, index 04 | Wh | 0 | Uint48 | 9 car | |
EASF05 | Energie active soutirée Fournisseur, index 05 | Wh | 0 | Uint48 | 9 car | |
EASF06 | Energie active soutirée Fournisseur, index 06 | Wh | 0 | Uint48 | 9 car | |
EASF07 | Energie active soutirée Fournisseur, index 07 | Wh | 0 | Uint48 | 9 car | |
EASF08 | Energie active soutirée Fournisseur, index 08 | Wh | 0 | Uint48 | 9 car | |
EASF09 | Energie active soutirée Fournisseur, index 09 | Wh | 0 | Uint48 | 9 car | |
EASF10 | Energie active soutirée Fournisseur, index10 | Wh | 0 | Uint48 | 9 car | |
EASD01 | Energie active soutirée Distributeur, index 01 | Wh | 0 | Uint32 | 9 car | |
EASD02 | Energie active soutirée Distributeur, index 02 | Wh | 0 | Uint32 | 9 car | |
EASD03 | Energie active soutirée Distributeur, index 03 | Wh | 0 | Uint32 | 9 car | |
EASD04 | Energie active soutirée Distributeur, index 04 | Wh | 0 | Uint32 | 9 car | |
EAIT | Energie active injectée totale | Wh | 0 | Production | Uint48 | 9 car |
ERQ1 | Energie réactive Q1 total | VArh | 0 | Production | int16 | 9 car |
ERQ2 | Energie réactive Q2 total | VArh | 0 | Production | int16 | 9 car |
ERQ3 | Energie réactive Q3 total | VArh | 0 | Production | int16 | 9 car |
ERQ4 | Energie réactive Q4 total | VArh | 0 | Production | int16 | 9 car |
IRMS1 | Courant efficace, phase 1 | A | 0 | mono / triphasé | Uint16 | 3 car |
IRMS2 | Courant efficace, phase 2 | A | 0 | Triphasé | Uint16 | 3 car |
IRMS3 | Courant efficace, phase 3 | A | 0 | Triphasé | Uint16 | 3 car |
URMS1 | Tension efficace, phase 1 | V | 0 | mono / triphasé | Uint16 | 3 car |
URMS2 | Tension efficace, phase 2 | V | 0 | Triphasé | Uint16 | 3 car |
URMS3 | Tension efficace, phase 3 | V | 0 | Triphasé | Uint16 | 3 car |
PREF | Puissance app. de référence (PREF) | kVA | 0 | Uint16 | 2 car | |
STGE | Registre de Statuts | – | 0 | String | 8 car | |
PCOUP | Puissance app. de coupure (PCOUP) | kVA | 0 | Uint8 | 2 car | |
SINSTI | Puissance app. Instantanée injectée | VA | 0 | Production | int16 | 5 car |
SMAXIN | Puissance app max. injectée n | VA | 0 | Production | int16 | 5 car |
SMAXIN-1 | Puissance app max. injectée n-1 | VA | 0 | Production | int16 | 5 car |
CCASN | Point n de la courbe de charge active soutirée | W | 0 | int16 | 5 car | |
CCASN-1 | Point n-1 de la courbe de charge active soutirée | W | 0 | int16 | 5 car | |
CCAIN | Point n de la courbe de charge active injectée | W | 0 | Production | int16 | 5 car |
CCAIN-1 | Point n-1 de la courbe de charge active injectée | W | 0 | Production | int16 | 5 car |
UMOY1 | Tension moy. ph. 1 | V | 0 | Mono / triphasé | Uint16 | 3 car |
UMOY2 | Tension moy. ph. 2 | V | 0 | Triphasé | Uint16 | 3 car |
UMOY3 | Tension moy. ph. 3 | V | 0 | Triphasé | Uint16 | 3 car |
SINSTS | Puissance app. Instantanée soutirée | VA | 0 | (Mono /Triphasé depuis v10) | Uint16 | 5 car |
SINSTS | ||||||
SINSTS1 | Puissance app. Instantanée soutirée ph.1 | VA | 0 | Triphasé | Uint16 | 5 car |
SINSTS2 | Puissance app. Instantanée soutirée ph. 2 | VA | 0 | Triphasé | Uint16 | 5 car |
SINSTS3 | Puissance app. Instantanée soutirée ph. 3 | VA | 0 | Triphasé | Uint16 | 5 car |
SMAXN | Puissance app. max. soutirée n | VA | 0 | (Mono / Triphasé depuis v10) | int16 | 5 car |
SMAXN | ||||||
SMAXN1 | Puissance app. max. soutirée n ph.1 | VA | 0 | Triphasé | int16 | 5 car |
SMAXN2 | Puissance app. max. soutirée n ph. 2 | VA | 0 | Triphasé | int16 | 5 car |
SMAXN3 | Puissance app. max. soutirée n ph. 3 | VA | 0 | Triphasé | int16 | 5 car |
SMAXN-1 | Puissance app. max. soutirée n-1 | VA | 0 | (Mono / Triphasé depuis v10) | Uint16 | 5 car |
SMAXN-1 | ||||||
SMAXN1-1 | Puissance app. max. soutirée n-1 ph.1 | VA | 0 | Triphasé | Uint16 | 5 car |
SMAXN2-1 | Puissance app. max. soutirée n-1 ph.2 | VA | 0 | Triphasé | Uint16 | 5 car |
SMAXN3-1 | Puissance app. max. soutirée n-1 ph.3 | VA | 0 | Triphasé | Uint16 | 5 car |
MSG1 | Message court | – | 0 | String | 32 car | |
MSG2 | Message ultra court | – | 0 | String | 16 car | |
PRM | PRM (Identifiant) | – | 0 | String | 14 car | |
DPM1 | Début Pointe Mobile 1 | – | 0 | Uint8 | 2 car | |
FPM1 | Fin Pointe Mobile 1 | – | 0 | Uint8 | 2 car | |
DPM2 | Début Pointe Mobile 2 | – | 0 | Uint8 | 2 car | |
FPM2 | Fin Pointe Mobile 2 | – | 0 | Uint8 | 2 car | |
DPM3 | Début Pointe Mobile 3 | – | 0 | Uint8 | 2 car | |
FPM3 | Fin Pointe Mobile 3 | – | 0 | Uint8 | 2 car | |
RELAIS | RELAIS | – | 0 | Uint16 | 3 car | |
NJOURF | Numéro du jour en cours calendrier fournisseur | – | 0 | Uint8 | 2 car | |
NJOURF+1 | Numéro du prochain jour calendrier fournisseur | – | 0 | Uint8 | 2 car | |
PJOURF+1 | Profil du prochain jour calendrier fournisseur | – | 0 | String | 98 car | |
PPOINTE1 | Profil du prochain jour de pointe | – | 0 | String | 98 car | |
– | Protocole linky | – | 0 | Uint8 | 1 car |
Données Home Assistant sur mode Standard
Et voilà, toutes les données sont présentes dans Home Assistant (les même sont évidemment consultables sur Zigbee2MQTT)
Tentative de compréhension des changements d’états HC/HP
Alors là, c’est une aventure, je ne comprends pas trop ce qui se passe.
Mes changements d’heure HC/HP sont par exemple sur 14:06 et 17:06 et voici l’historique constaté ce jour :
Assez incompréhensible donc.
J’attends une nuit pour voir la bascule physique (conso chauffeau) et les indicateurs renvoyés, voici le résultat :
Je constate donc :
- STGE et la conso correspondent et sont sur la bonne heure 02:06:07 pour les deux.
- 02:14:07 pour NTARF et pour RELAIS.
A ce stade, je ne m’explique pas la raison du décalage, je vais questionner sur les forums pour voir si quelqu’un sait, mais à ce stade, je vais donc utiliser STGE pour définir si on est en HC ou HP.
J’ajoute un Template pour avoir HC/HP
Dans mon fichier templates.yaml, j’ajoute :
- name: Periode tarifaire en cours unique_id: sensor.periode_tarifaire_en_cours state: >- {% if is_state("sensor.linky_status_register", "003AC401") %} HP {% else %} HC {% endif %}
Comprendre les 5 lignes Energie
Je me retrouve dans HA avec 5 lignes avec le même titre.
Elles correspondent aux lignes :
- EAST
- EASTF01
- EASTF02
- EASD01
- EASD02
Je suis allé vérifier les index sur l’afficheur du compteur pour m’y retrouver.
J’abandonne EASD01 et EASD02, je ne comprends pas Saison Haute, Saison Basse.
EAST est donc la consommation totale, EASTF01 la conso Heures Creuses, EASTF02 la conso H Pleines.
Voilà, c’est tout de suite plus clair :
J’ajoute les informations de conso dans Energy
et
Données que je conserve finalement
Après une batterie de tests, je confirme ce que je pensais, les informations en temps réel ne valent rien, le Linky n’est pas fait pour cela. Inutile donc de penser avoir la conso instantanée grâce à lui.
Je l’utilise donc pour récupérer l’info HC/HP et pour alimenter le module Energy de HA.
Voici les données que je gardent :
MSG1 et MSG2, je les garde car je suis curieux de savoir ce qui pourrait bien arriver dans ces champs messages. On verra dans plusieurs mois ou années si quelque chose apparait.
NTARF/RELAIS/STGE, je vais attendre plusieurs jours pour voir lequel des 3 je garde, je désactiverai les deux autres ensuite.
La Conso Totale, je la garde à ce stade, mais si je n’en ai pas d’utilité, je le désactiverai.
Précision de la configuration du module dans Zigbee2MQTT
Dans la whitelist, il semble important de spécifier les informations dont on a besoin, cela semble limiter les ressources pour envoyer des données inutiles. J’ai spécifié « EAST,EAIT,EASF01,EASF02,STGE,NTARF,RELAIS,MSG1,MSG2 »
Conclusion
Finalement l’intégration assez simple et efficace de ce module me permet d’alimenter le module Energy de Home Assistant et d’avoir l’information de HC/HP sur mon Dashboard.
Ce RetEx est encore à compléter dans le temps, il va évoluer, j’ai laissé quelques points en suspens au dessus.
Les lectures des différents forums ou Retex d’autres utilisateurs me laissent à penser que la réalisation de ce type d’équipement est particulièrement complexe à réaliser. Visiblement l’alimentation fournie au module par le Linky est très très faible, il doit donc être extrêmement optimisé. Le choix du Zigbee est une bonne chose, c’est une technologie qui consomme très peu, j’imagine qu’en Wifi ou Bluetooth, cela ne fonctionnerait pas.
Le fait de pouvoir choisir une liste blanche les données qu’on souhaite exploiter doit alléger les trames et le besoin en énergie du module, c’est une excellente idée.
Bravo pour la réalisation de ce module, du très très bon boulot !
En bonus, voici l’écran Energie de mon Dashboard, si cela peut donner des idées.