WinKy – Open-source projet pour Linky avec WiFi
8 septembre 2021Bonjour à tous,
Aujourd’hui, je vous propose de réutiliser des éléments de la passerelle Loky et de la transformer pour en faire une passerelle Linky/Wifi.
0. Introduction
Avant toute chose, ce projet est sous la licence CC BY-NC-SA 4.0
Vous pourrez aussi récupérer tous les fichiers pour recréer votre WinKy (Code, PCB et STL) sur le gitlab du Gricad à l’adresse suivante:
https://gricad-gitlab.univ-grenoble-alpes.fr/ferrarij/winky
Si vous voulez participer activement à l’amélioration du projet mais aussi participer en tant que candidat aux expériences du laboratoire, n’hésitez pas à nous contacter soit par le biais du GitLab soit à l’adresse mail jerome.ferrari@g2elab.grenoble-inp.fr
Maintenant que les présentations sont de nouveau faites, nous pouvons partir au coeur du sujet.
I. Fonctionnalités attendues
Actuellement, les données du linky accessibles via le portail d’Enedis ne donnent que les données des courbes de charge de la veille avec un pas de 30 min. Cependant, nous pouvons utiliser la prise TIC (Télé Information Client) pour les obtenir en temps réel. C’est pour cela que nous avons choisi de construire un système pouvant retranscrire ces données et les envoyer sur un serveur personnel et ainsi permettre aux utilisateurs ou aux organisations de mieux gérer leur consommation.
Les fonctions attendues pour cette passerelle sont:
- Pouvoir s’alimenter de façon autonome depuis la prise TIC du Linky
- Pouvoir récupérer les informations transmises par le compteur Linky sur la sortie de Télé-Information Client ou TIC
- Pouvoir envoyer ces informations via le réseau Wifi vers un serveur d’application, auquel l’utilisateur pourra se connecter et visualiser ses données.
II. Linky et TIC
Dans ce paragraphe, je vous conseille de lire la section explicative que l’on avait consacré dans l’article
III. Logiciels et composants utilisés pour concevoir le WinKy
a. Outils et Logiciels
Dans ce projet, les logiciels et les outils suivants ont été utilisés:
b. Composants
Voici les principaux composants de WinKy :
ESP01S | |
Optocoupleur PC814 | |
2 Super Condensateur 5.5V 0.5F | |
1 régulateur 033CC0 3.3v | |
1 regulateur MCP1702-4002E |
… et bien sûr d’autres composants communs comme les résistances, les condensateurs, les diodes que vous pouvez trouver dans le schématique.
Tous les schémas dont vous avez besoin seront disponibles sur GitLab de WinKy.
IV. Prototypages des différents étages électronique
a. Le décodage d’InfoTIC
Avec toutes les spécifications données par la datasheet, on doit démoduler les signaux ASK de InfoTIC. Le moyen le plus efficace est de profiter d’un optocoupleur pour effectuer ce travail :
b. Le stockage de l’énergie avec AlimTIC
Cette partie s’appuye sur les travaux fait sur le Loky. Cependant, le Wifi consommant plus que le Lora pour la transmission, il va falloir rajoutant un super condensateur et jouer sur la stratégie de gestion de l’énergie de l’ESP01.
J’ai aussi découplé la partie puissance de la partie téléinfo au niveau de l’alimentation car l’ESP01 ne supporte pas plus de 3,3V en entrée.
Les explications sur le dimensionnement de stockage étant déjà données dans l’article dédié au LoKy, je ne vais pas revenir dessus.
c. Le schématique final retenu
Voici le protoype du Winky comme vous pouvez le voir nous avons réutilisé la partie decryptage et conversion de puissance du LoKy.
d. Modification de l’ESP01
Le gros souci de l’ESP01 est sa consommation lorsque le Wifi est en route donc le but est de pouvoir le mettre en DeepSleep lorsque l’on a fini la transmission des données.
Voici un tableau montrant les consommations dans les différents modes de l’ESP01 extrait du site http://framboiseaupotager.blogspot.com/2019/09/tout-sur-le-deep-sleep-des-esp8266.html
Pour cela, il faut modifier l’ESP01 afin de profiter de cette fonction. C’est la partie la plus délicate car il faut souder la pin 8 (XPD_DCDC) sur la pin reset car cette pin se met à l’état bas lorsque l’ESP8266 se met en mode WakeUp.
Je vous propose donc de suivre cet Instructables:
https://www.instructables.com/Enable-DeepSleep-on-an-ESP8266-01/
Et voici un autre site avec les explications plus détaillés.
Pour ma part, la modification ressemble à cela.
Maintenant que tout est ok, nous pouvons passer à la partie récupération des données.
V. Serveur MQTT + JEEDOM
Pour cette partie, là si vous avez déjà lu mes articles précédents, vous devenez familier de cette partie.
Allez un petit rappel? Pour cela, je vous invite d’abord à configurer votre raspberry ou autres avec les liens suivants:
Installation de Jeedom — > Voir mon précédent article https://miniprojets.net/index.php/2019/05/13/jeedom-ou-comment-domotiser-sa-maison-en-quelques-clics/
Installation de Mosquitto –> Je vous conseille le site suivant https://projetsdiy.fr/jeedom-mqtt-objets-connectes-domotique-diy/
VI. Firmware de LoKy
Avant de commencer la programmation de l’ESP01, il faut créer un petite interface ou en acheter une.
Je vous propose cet article qui vous permet de choisir la votre
Ou bien de fabriquer le votre si vous avez déjà un adaptateur Mini-USB vers TTL FT232RL que nous utilisons pour programmer le LoKy
Pour cela, il vous faut:
- Une plaque à trous de 6×10 trous
- Une barrette femelle de 1×6 pins
- Une barrette femelle de 2x4pin
- Un bouton poussoir
Puis il faut relier les élément de la façon suivante:
Et ce que cela donne en réel…. Bon…. vous ne m’en voudrez pas pour le monochrome de fil ^^.
Maintenant, il ne reste plus qu’à le programmer.
Pour cela, je vous conseille de lire cet article et de configurer votre IDE Arduino.
Une fois cela fait, vous pouvez prendre le programme qui ce trouve sur le repository du projet Winky:
https://gricad-gitlab.univ-grenoble-alpes.fr/ferrarij/winky
Puis le modifier afin de renseigner:
- Le SSID de votre réseau wifi sur lequel il viendra se connecter
- Le mot de passe de votre réseau wifi
- l’adresse IP de votre serveur MQTT
Vous pouvez aussi rajouter des topics car dans le code présent, je n’ai mis que la PAPP comme exemple
Une fois tout cela fait, vous pouvez le flasher et le mettre en place.
VII. Mise en place et mise en route du WinKy
Attention, maintenant que votre Winky est programmé, vous pouvez le mettre en place mais nécessite 2 étapes.
Sur le PCB, il y a un jumper (celui qui est entre le régulateur et le VCC 3.3V de l’ESP01) qu’il faut enlever avant de mettre le WinKy sur le Linky car dans un premier temps les supercapa ont besoin de se charger un minimum.
Une fois cela fait, branchez maintenant votre WinKy sur la prise TIC du Linky.
Si vous avez un multimètre, regarder la tension entre les bornes des Supercapa et dès que vous avez atteint les 4,0V, vous pouvez remettre le Jumper.
Si vous n’avez pas de multimètre, vous pouvez attendre environ 3min pour être sûr
Maintenant, mettez de nouveau le jumper à sa place.
Normalement nous avons fini pour la partie installation.
Cependant avant de refermer le capot de votre Linky, je vous conseille d’attendre car il y aura peut-être des ajustements à faire sur la durée du DeepSleep. (Réglé par défaut à 60 secondes).
Il faudra modifier la ligne de code ESP.deepSleep(60000000); si vous avez besoin de ralonger le temps de recharge de vos Supercapa.
VIII. Vérification du bon fonctionnement de votre WinKy
Normalement, si tout marche correctement, vous verrez apparaitre votre WinKy sur votre interface MQTT de votre Jeedom
Cochez la case Historiser pour voir la fréquence de remonter de vos données du compteur.
J’espère que vous aurez appris des choses et n’hésitez pas à nous envoyer vos retours ainsi que les problèmes que vous rencontrez, nous apprécions votre contribution à WinKy.
Et à bientôt pour de nouveaux articles et de nouveaux capteurs.
Jérôme Ferrari
Bonjour !
A force de recherche, j’ai fini par trouver cette page bien utile !
Je me demande si, du point de vue budget energetique, l’ESP32 ne serait pas un meilleur choix : en veille, il consomme encore moins, et il n’y a pas de bidouille/soudure à lui faire pour l’envoyer en sommeil profond…
Par contre j’ignore si sa conso « en marche » est aussi faible que celle de l’ESP01 ?
Une chose est sure, il est bien plus gros que l’ESP01 !
Bonjour,
Excellente question, je suis parti sur un ESP01 car le projet visait à avoir une solution facile à fabriquer et avec un encombrement réduit. En ce qui concerne la consommation, les deux solutions sont équivalente d’après les tests effectués par Ritonduino
http://riton-duino.blogspot.com/2018/12/consommation-dune-carte-arduino.html?m=1
Je travaille justement sur une version V2 de WinKy avec comme base un ESP32 ou ESP8266 « seul » pour éviter la partie soudure « patch » de l’ESP01 ^^. La réponse sera tranchée dans quelques semaines.
Bonjour,
Je suis très intéressé par votre projet car j’ai un projet similaire en cours. Mon projet est à base d’un ESP8286 flashé avec ESPHome et connecté à Home assistant. Pour cela j’utilise un schéma « classique » à base de LTV-814 et BS170. A part un problème de décodage des données horodatées sur un Linky triphasé en mode standard, que l’on est en train de résoudre, le montage fonctionne très bien et fournit des tas d’informations très utiles.
J’ai aussi fait des tests pour alimenter ce circuit à partir de l’alimentation du Linky. Pour cela j’ai utilisé un pont de diodes Schottky suivi d’un régulateur 3.3V. Mais contrairement au spécification d’Enedis (130 mW) je n’arrive pas à dépasser les 70 mW (23 mA sous 3.2V).
Je peux vous envoyer par mail mes résultats de tests.
Donc votre approche avec super capacitor et deep sleep est très intéressante.
J’ai déjà deux questions concernant votre projet :
1) Pourquoi deux régulateurs en cascade ?
2) Je ne suis pas trop familier avec les super condensateurs mais d’après ce que je comprends, en simplifiant à l’extrême, ils se comportent comme des batteries à charge ultra rapide. Le problème que j’ai avec votre montage c’est que je ne comprends pas comment le système « s’amorce ». Pour pouvoir passer en mode deep sleep il faut que le microprocesseur démarre en mode normal, exécute un certain nombre d’instructions d’initialisation, et passe en mode deep sleep. Mais pour cela il faudrait que le super condensateur soit chargé ce qui nécessiterait que le micro soit en mode deep sleep. C’est l’histoire du serpent qui se mord la queue ! Une fois le système « amorcé » je conçois qu’il est possible de laisser le temps nécessaire au super condensateur de se recharger avant de transmettre les données en mode normal
Bonjour,
Le premier régulateur permet de protéger le supercondensateur et permet de le charger jusqu’à 4V et le 2ème régulateur permet l’alimentation en 3,3V de l’ESP01.
En ce qui concerne la phase d’amorçage, j’ai décris la méthode dans l’article à la partie « VII. Mise en place et mise en route du WinKy ».
Pour l’instant, c’est un amorçage en mode manuel mais je suis en train de designer la version Full-Automatique.
Je suis intéressé pour voir vos courbes, vous pouvez me les envoyer à jerome.ferrari@g2elab.grenoble-inp.fr
Bonne journée,
Jérôme
Bonjour,
Merci pour cet article très intéressant !
C’est vrai que les diodes Schottky pourrait faire gagner quelques précieux mA !
Concernant les optims sur ESP32 cette vidéo d’ Andreas Spiess pourrait vous intéresser :
https://www.youtube.com/watch?v=JFDiqPHw3Vc
J’ai plein de question alors je vais les numéroter 😀
1 – J’ai vu que vous aviez mis à jour les sources, avez vous réglé le problème de chargement initial des super condensateurs ? Un article va suivre à propos de cette mise à jour ?
2 – Une fois les super condensateurs à leur charge max via le linky, combien de temps l’ESP peut être alimenté ?
3 – A propos des super condensateurs, ou peut-on se les procurer à prix raisonnable ? J’ai généralement du mal à trouver la valeur de l’ESR (en général ils ne le précise pas sur aliexpress…).
4 – J’aurai aimé participer à votre campagne de test donc je vais probablement réaliser mon propre montage. Si vous avez des conseils / des axes d’amélioration par rapport au montage initial je suis tout ouie ;). Partir sur la dernière itération du PCB (V2) et du firmware (V4) je suppose ?
J’essaierai bien de faire un firmware avec esphome d’ailleurs avec lequel je fais souvent des projets rapides : pas besoin de coder généralement.
Désolé ça fait beaucoup de question mais j’avais tenté ce challenge low power + ESP il y’a un an et je m’étais cassé les dents sur le dimensionnement et le choix des super condo … Nous avions d’ailleurs échangé d’ailleurs dans les commentaires de votre article « Récupérer les données de son compteur Linky ». Depuis j’avais abandonné donc ça fait plaisir de voir une nouvelle lueur d’espoir pour ce projet 🙂
Bonjour,
Merci pour le retour sur les diodes Schottky, je n’ai encore eu le temps de tester…
Pour répondre aux questions:
1-J’ai mis à jour les sources car j’ai ajouté la fonction d’économie d’énergie quand il ne voit pas le wifi afin d’éviter de décharger les supercapa inutilement. La fonction full-autonome est un peu plus complexe car l’ESP se reveille et se met en carafe dès qu’il atteint les 2,2V d’alimentation et je suis en train de refaire un circuit d’alimentation quand mon emploi du temps me le permet entre mes autres expériences ^^.
2-Pour l’instant, J’ai pu l’alimenter pendant 23secondes non stop quand les batteries sont au maximum via le linky
3-Je commande les composants sur digikey pour les supercapacités.
4-Il faudrait repartir du PCB V1 et firmware V4. Le PCB V2 est une amélioration en cours mais qui n’est pas au point.
Pour ESPHome, je n’ai pas fait de portage car je voulais un code basique pour que l’on puisse déployer rapidement sur nos expériences et que l’on maitrise pour des raisons de sécurités (port d’entrées/sorties…) ^^
En tout cas merci pour ce retour cela fait plaisir de voir que le projet plait ^^.
Bonne journée,
Jérôme
Bonjour,
Au final, j’ai totalement oublié de répondre! Heureusement une autre personne un peu réac m’a fait me rappeler aujourd’hui que Morbert avait déjà travaillé sur la problématique et les résultats donnent un large voir super large avantage à la diode Schottky (limite une victoire par KO) ^^.
Voici le lien de l’article qui explique cela
https://morbret.monsite-orange.fr/page-5be1e034895a6.html
J’ai aussi oublié de mettre à jour les PCB avec les denomminations schottky (ou du moins j’ai été un peu fainéant car avec l’expérimentation à venir et comme ça marchait pour mon usage, je me suis concentré pas mal sur l’architecture réseau).
Techniquement vu que c’est la même empreinte, je pense que les personnes avaient fait la rectification eux-même ^^.
J’essayerai de mettre à jour avec les bonnes empreintes sur la V11 avec aussi l’ajout des sécurités pour les winky finaux.
En tout cas merci pour ton aide,
Jérôme
Bonjour,
Merci pour ce partage.
Pourquoi avez-vous choisi des diodes classique (1N4148) plutôt que des diodes Schottky (1N5819)?
Les diodes Schottky permettraient peut-être de tirer un peu plus partie de l’alimentation du Linky
Bonjour, on a utilisé les 1N4148 pour valider le principe mais nous sommes justement en train d’optimiser les diverses parties. Merci du conseil, Jérôme
Bonjour, niveau consommation électrique, pour un autre projet, j’ai opté pour la firebeetle de DFRobot (ESP32 basse consommation). Ses caractéristiques sont très intéressantes.
Serait-il envisageable de prendre en compte les impulsions données par Gazpar (1 pulse de 300ms / 10 litre)
et de transmettre cette informations en même temps que celle du linky ?
Le problème c’est que l’on est obligé de passer l’esp en mode deepsleep et donc on va rater les impulsions qui serait envoyé pendant cette période.