WinKy Version 2– Open-source projet pour Linky avec WiFi
4 février 2022Bonjour à tous,
Aujourd’hui, je vous propose d’ajouter au Winky des modifications afin de le rendre 100% autonome.
Pour de la version 1, il fallait attendre que les supercapa soient chargées avant de mettre en route l’alimentation de l’ESP01 et cela pouvait aussi poser problème lorsqu’il y avait une coupure générale d’électricité car le Winky ne pouvait pas se remettre en route tout seul…. Bref maintenant, nous allons voir maintenant comment pallier à ce problème.
Ce qu’il faut savoir aussi c’est que seule la carte µcontroleur/Puissance est à modifier/upgrader.
La version fonctionnelle actuellement est pour le harware la V2 et pour le firmware la V5.
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.
- Etre 100% autonome et sans maintenance autre que la reconfiguration du wifi ou du broker MQTT
II. Linky et TIC
Dans ce paragraphe, je vous conseille de lire la section explicative que l’on avait consacré dans l’article
LoKy – Open-source projet pour Linky avec LoRaWAN
III. Logiciels et composants utilisés pour concevoir le WinKy V2
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 | |
1 Controleur de tension KA75330 3.3V | |
4 diodes 1n4148 ou équivalente | |
1 condensateur 0.1µf | |
1 condensateur 3.3µf chimique | |
1 résistance de 3.3kohms | |
1 résistance de 100koms | |
1 resistance de 1.2kohms |
…vous pouvez retrouver tous ces composants 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
Dans cette partie, je reprends les différents étapes vue pour la précedente version mais je vais me penchant sur la problématique optimisation de l’énergie.
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.
c. Modification de l’ESP01
Pour cette partie, je me suis beaucoup aider des sites suivants:
http://framboiseaupotager.blogspot.com/2019/09/tout-sur-le-deep-sleep-des-esp8266.html
https://www.instructables.com/Enable-DeepSleep-on-an-ESP8266-01/
Pour vous résumer, le gros souci de l’ESP01 est sa consommation dans le différentes étapes:
- Lorsqu’il se réveille la première fois, le wifi est directement actif et consomme beaucoup d’énergie.
- Lorsque le Wifi est en train de transmettre donc le but est de pouvoir le mettre en DeepSleep lorsque l’on a fini la transmission des données.
- La led indiquant son état s’allume dès le démarrage et consomme de l’énergie pour rien et m’a apporté pas mal de problème ^^.
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.
https://www.tech-spy.co.uk/2019/04/enable-deep-sleep-esp-01/embed/#?secret=OINAluCDb2
Pour ma part, la modification pour permettre le deep sleep ressemble à cela.
J’ai aussi supprimé la LED
Maintenant que tout est ok, nous pouvons passer à la partie récupération des données.
d. Surveillance et gestion de l’énergie
N’étant pas électronicien de formation, cette partie fut celle qui posa le plus de problème à résoudre car il fallait trouver un équilibre entre temps d’envoi, temps de décharge et coupure de l’alimentation du µcontrolleur.
Pour cela, j’ai du faire des modifications autant sur le hardware que sur le software
Au niveau software, je me suis basé sur les conseils de ce site:
https://www.bakke.online/index.php/2017/05/21/reducing-wifi-power-consumption-on-esp8266-part-1/
https://www.bakke.online/index.php/2017/05/21/reducing-wifi-power-consumption-on-esp8266-part-2/
https://www.bakke.online/index.php/2017/05/21/reducing-wifi-power-consumption-on-esp8266-part-3/
et pour la partie Hardware, j’ai utilisé certaines informations provenant de ce forum:
Pour résumer, le plus gros du travail a été de dimensionner correctement la partie contrôle de la tension et de relier le tout sur la pin Enable de l’ESP01 afin de ne déclencher son premier réveil que lorsqu’il y a assez d’énergie.
Pour cela, j’ai utilisé un controleur de tension KA75330 couplé avec un montage circuit reset afin de donner une temporisation avant d’autoriser la pin Enable du circuit.
e. Tests
Afin de vérifier le bon comportement du winky V2, nous allons observer les différentes phases de vie:(Première mise en route, en fonctionnement normal, lorsqu’il y a une coupure de courant, lorsque le courant est rétablie)
Sur les différentes captures à l’oscilloscope la courbe jaune montre la tension des supercapa, la courbe bleue montre le signal sur la pin Enable
Première mise en route
On peux voir qu’au bout de 70s les supercapa ont accumulées assez d’énergie pour autoriser le µcontroleur à se mettre en route et le programme va executer les instructions suivantes
- Se réveiller
- Eteindre le wifi
- S’endormir pendant 30 secondes
Au bout de 30 secondes, le programme va faire les étapes suivantes:
- Se réveiller et rallumer le wifi
- Lire les valeurs de la tic
- Envoyer les données sur le broker MQTT
- Se rendormir pendant 30 secondes et repartir pour un cycle
Cela prendre environ 12 secondes
Phase de vie normale
Le programme va exectuer en boucle les mêmes étapes:
- Se réveiller
- Eteindre le wifi
- S’endormir pendant 30 secondes
- Se réveiller et rallumer le wifi
- Lire les valeurs de la tic
- Envoyer les données sur le broker MQTT
- Se rendormir pendant 30 secondes et repartir pour un cycle
Phase de vie lorsqu’une coupure de courant intervient
Lorsqu’une coupure de courant arrive le programme va continuer à essayer de vivre normalement, cependant, le circuit de surveillance de la tension va bloquer la pin Enable et désactiver le µcontroleur.
Les rebonds que l’on observe sont dus à l’effet des supercapa qui dès qu’elles ne sont plus solicitées “reprennent” de la tension et donc réautorise la pin Enable et ainsi de suite. Ce phénomène ne dure que 15 secondes avant de s’arrêter.
Phase de rétablissement du courant
Dans cette phase, nous pouvons voir que les supercapa grâce au circuit de contrôle de la tension n’ont pas perdues d’énergie (ou très peu car le montage à ce moment là ne consomme que 1µA) et qu’à la remise en route du courant le montage revie normalement.
Les prochains tests auront pour but de réduire le temps entre chaque envoi de données.
f. Le schématique final retenu
Au final, le montage fonctionnel est le suivant:
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
https://projetsdiy.fr/esp01-quel-programmeur-choisir-modification-activer-flash-mode/
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.
Branchez maintenant votre WinKy sur la prise TIC du Linky.
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,
Projet sympa, cela n’apparaît pas clairement mais
est ce que les données qui transitent via Lora sont compressées ? Ça n’est pas du json je suppose (j’espère 🙂 )
Franck
Bonjour,
non les données envoyées via Lora sont en valeurs brutes mais encodées.
La partie json est lorsque l’on veux récupérer les données via les serveurs TTN.
Bonne journée,
Jérôme
Bonjour
Super projet. Est ce qu’il est possible d’obtenir qq part le montage “pret a l’emploi”?
Bonjour,
le projet passe au challenge Outs of lab le 8 avril 2022 donc je pourrais proposer des kits pour béta-testeurs à partir du 11 avril 2022.
Bonne journée,
Jérôme
hello,
pourquoi ne pas plutôt partir sur un esp32 qui consomme de base nettement moins qu’un 8266 ?!
sinon sympa de cette attaqué a l’alimentions via les bornes du TIC =)
Bonjour,
J’étais parti sur un esp01s surtout pour son encombrement.
Bonne journée,
Jérôme
Bonjour,
où en est ce projet très intéressant ?
Bonjour,
il est toujours actif. on vient de faire une version plus facile à fabriquer.
Bonjour Jérôme,
Super boulot !
Avez vous les schéma et la doc de cette version plus simple à fabriquer ?
Avez vous des kit pour beta testeur ?
Merci d’avance,
Bonjour,
oui ils sont sur le gitlab présent dans l’article.
Les kits pour les béta-testeurs sont en cours de fabrication et on les distribura au travers de l’Obesrvatoire de la transition énergétique OTE lorsque l’on démarra la nouvelle vague d’expérience.
Vous pouvez aller voir sur Linkedin https://www.linkedin.com/company/observatoire-de-la-transition-energétique/ pour vous abonner et recevoir une alerte quand cela démarrera.
Bonne journée,
Jérôme
bonjour, pensez-vous qu’il soit possible d’utiliser ce montage pour envoyé en wifi les données du linky toutes les X seconde ou minute vers un serveur distant ?
en gros :
réveil > connexions wifi > envoie vers un fichier texte qui ce trouve sur un serveur distant ( ovh par exemple ) en mode ajout d’une ligne a la fin du document ( exemple : DATE | conso | HP ou HC )
remise en veille.
nous n’avons pas tous de serveur domotique, mais nous pouvons tous avoir un hébergement web gratuitement.
par la suite, une bibliothèque se charge de lire et mettre een forme le fichier texte.
vous pouvez me notifier d’une réponse par mail quand vous verrez ce message ? merci bien
Bonjour,
Techniquement cela est faisable. Par contre, au niveau échelle de temps, il faudra plutôt partir sur 2/3min et changer la valeur de la supercapacité pour arriver à faire ce que vous demandez.
L’avantage d’utiliser un mqtt est de pouvoir justement permettre à un autre ordinateur de gérer l’horodatage et l’archivage.
Je travaille actuellement sur une variante utilisant influxdb et grafana pour pouvoir s’affranchir d’avoir un serveur dédié pour cela.
Bonne journée,
Jérôme
merci pour votre réponse rapide,
pour détailler un peu plus mon objectif si je concrétise cela, une récupération toutes les 5minutes ne me dérange pas, car mon objectif c’est surtout d’avoir heures par heures ( peux importe la fréquence d’envois de l’esp, du moment que je peux avoir au moins toutes les heures ).
pour la partie enregistrement puis lecture des données, j’ai un hébergement ovh de 10mo sans base SQL, de part ma faible expérience en prog php/html je pense qu’il est techniquement possible de mettre en place un mini site type vieuwer a base de JS et / ou jquery pour avoir une lecture rapide des données, et cela devrait prendre moins de 10mo je pense.
La solution proposée est vraiment intéressante mais elle risque de ne pas marcher, il faudrait au moins un ftp pour pouvoir faire de l’écriture de fichier. Je n’ai jamais vraiment poussé la réflexion.
Par curiosité, quelle box internet vous avez ?
Actuellement je suis chez Sosh ( orange quoi ).
Par contre, je “bridge” directement via un câble RJ45 sur un routeur Linksys ea8300 sur lequel j’ai openwrt, Adguard home, wiregard, ainsi qu’un mini serv FTP sur clé USB en local avec support en parallèle du dlna.
Le petit hébergement start 10mo de OVH supporte l’accès FTP ;).
Après j’ai un hébergement free aussi, mais bon, il existe plein de fournisseur, même gratuit.
Et pourquoi pas en parallèle prendre les valeurs directement sur l’espace en ligne pour les mettres sur vos app domotic ou HA ou autre jeedom ( je ne connais pas bien ce monde encore )
Dans ce cas, il faudrait directement utiliser le ftp local pour faire l’enregistrement des données, cela serait plus intéressant et plus sécurisé dans le sens où vous maîtriser l’endroit où se trouvent vos données ^^.
matériellement le winky est capable de faire la connexion sur un ftp mais actuellement, je n’ai pas la disponibilité pour le faire maintenant…
Bonne journée,
Jérôme
Bonjour,
J’ai lu avec grand intérêt votre travail effectué sur ces projets liés au Linky et leur évolution. Je suis admiratif et vous remercie de la mise à disposition de toutes ces informations !
Ayant récemment installé un serveur home assistant, je me suis intéressé à la récupération des infos du Linky… implanté à l’extérieur de mon domicile et donc sans alimentation autre que cette de la connexion TIC.
Étant donnée la distance avec mon routeur, je voulais utiliser un ESP07 avec antenne déportée pour me garantir une connexion fiable (je possède déjà des ESP07). Du point de vue de la consommation électrique, est-ce une solution envisageable ou faudrait-il prévoir d’autres supercapas ? J’ai vu que les v8 & v10 du design PCB comprennent 3 supercapas, est-ce une évolution prochaine ?
Merci d’avance de votre réponse 🙂
Bonjour,
Merci pour les encouragements ^^.
Pour la question de l’ESP, cela est faisable car la version V10 est pour un ESP07 ou ESP07S.
Pour la supercapa, il n’y en a besoin que d’une de 5V avec une capacité de 1F. J’ai fait plusieurs empreintes car les formes des supercap peuvent changer en fonction des fournisseurs.
Bonne journée,
Jérôme
Merci pour votre réponse expresse !
J’ai en effet vu l’empreinte ESP07 sur la V10, bonne nouvelle. Je pars là dessus et un design CMS pour les autres composants que je partagerai dès que testé et fonctionnel…
Bonne journée ^^
Parfait. Cela serait super de votre part. Encore merci d’avance pour le futur retour.
Jérôme Ferrari
Pour information, je suis en train de travailler sur la version CMS et je devrait bientôt la relacher ^^.
Bonne journée, Jérôme
Je cherche ce genre de produit mais il n’en existe sur le marché. Je ne suis pas en capacité de produire un pcb ni de trouver des composants alternatifs si ceux de la liste sont en fin de vie.
Est-ce que vous seriez en mesure de faire un kit et l’expédier moyennant un dédomagement ?
Bonjour, oui cela serait possible. Bonne journée
Merci ! je vous contacte sur linked-in pour échanger plus d’infos 🙂
Bonjour,
Je pense qu’il y aurait de nombreuses personnes intéressées, notamment dans la communauté de domotique CH2I initiée par Charles Hallard (et son superbe travail sur le shield TIC). Il y a sans doute des ponts à tisser pour permettre une plus grande dissémination/accessibilité du travail fait ici ?
cf l’échange en cours : https://community.ch2i.eu/topic/331/alimentation-esp8266-par-borne-i1-et-a-du-linky/19?_=1693902490382.
=> La question se pose d’une production en petite série, et de la vente sous la licence actuelle (à adapter ?). J’espère que vous pourrez contribuer aux échanges, là-bas ou ailleurs (linkedIn ? autre forum ?).
Belle journée, bonne rentrée !
bonjour, et Bravo pour votre travail,
j’ai un mini projet avec le linky, je recherche votre programme pour le comprendre, puis l’adapter à mes besoin (je voudrai afficher la puissance consommée “en réelle” sur un autre esp8266, placé dans la cuisine.)
mais je ne trouve pas votre programme en .h soit en programme arduino ?
pouvez-vous y remédier ?
merci beaucoup.
Bonjour,
Seule la puissance apparente en VA est accessible via la prise TIC du Linky ce qui implique que la puissance réelle en W n’est pas récupérable via le linky.
Les codes sources du projet sont dans le repository
https://gricad-gitlab.univ-grenoble-alpes.fr/-/ide/project/ferrarij/winky/
Pour information, j’ai mis en ligne la solution que vous cherchez:
https://miniprojets.net/index.php/2022/09/12/fabriquer-une-solution-deportee-et-independante-pour-suivre-sa-consommation-electrique-en-temps-reel-pour-moins-de-10e-xkyms-prototype-en-cours/
Bonne journée,
Jérôme
re-bonjour,
effectivement, je me suis mal exprimè => c’est la puissance apparente qui m’intéresse en VA.
J’ai également basculé sur votre 2em solution qui est plus proche de ce que je recherche, merci de votre aide.
nota : j’ai encore des soucis, je les ai noté sur l’autre réalisation.
note2 : pour les codes source, je n’y ai pas axé ? c’est une plateforme de travail collaboratif destinée à la communauté enseignement supérieur et recherche à Grenoble.
Bonjour,
normalement les codes sont ouverts au public
https://gricad-gitlab.univ-grenoble-alpes.fr/ferrarij/winky/
Bonne journée,
Jérôme
Bonjour,
Est-ce qu’une variante utilisant la Transmission Zigbee est envisagée (avec un ESP32-H2 par exemple) ?
La consommation devrait être sensiblement plus faible qu’avec la version Wi-Fi non ?
Super projet en tout cas !
Bonjour,
Je vais travailler plus tard sur la version Zigbee, comme je suis en train de lancer l’expérimentation au labo cela me prends un peu plus de temps mais j’attends justement le matériel que j’ai commandé pour faire une version zigbee.
Bonne journée,
Jérôme
Hello,
Est ce que ça peut fonctionner si le linky se trouve au bord de la rue à 10 mètre de la box wifi?
Bonjour,
si vous voulez on peux faire le test, on vient justement de lancer l’expérimentation avec l’observatoire de la transition énergétique si vous voulez vous inscrire.
Bonne journée,
Jérôme
Oui je veux bien, comment s’inscrire ?
Jérémy
il faut d’abord s’inscrire sur le site de l’OTE puis s’inscrire à l’étude XKY voici le lien
https://ote.univ-grenoble-alpes.fr
Bonne journée,
Jérôme
[…] Winky […]
Bonjour,
Merci pour ce super travail.
Je vais créer une version similaire en fonctionnalité avec la version ESP32-C6 mais avec un cout de fabrication moindre, l’idée étant de fournir une version “industrielle” mais facilement reproductible par un amateur éclairé (CMS 0805 sans four à refusion).
Je partagerais mon travail dans le respect de la licence sur Aisler.
Je souhaiterais, du coup, modifier le boitier 3D.
Est-il possible de disposer des fichiers CAD ?
Merci !
Bonjour,
Cela sera avec plaisir de vous autoriser à faire cette version ESP32C6 et de la partager sous licence CC-BY-NC-ND. J’ai aussi regardé le travail que vous avez effectué sur Git et cela fait plaisir de voir que vous avez aussi un esprit de partage. Je vous envoi un mail officiel sur l’adresse que vous avez renseigné.
Bonne journée,
Jérôme