WinKy Version 2– Open-source projet pour Linky avec WiFi

WinKy Version 2– Open-source projet pour Linky avec WiFi

4 février 2022 16 Par Jérôme Ferrari

Bonjour à 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

CC BY-NC-SA 4.0
Ce projet est aussi supporté par les entités suivantes CNRS/UGA/G-INP – G2ELAB dans le cadre de l’IDEX EcoSesa et du futur observatoire pour la transition énergétique

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 STMicroelectronics L4931ABDT35TR
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 :

Ce schématique est familier à quiconque a une fois travaillé avec le TIC que ce soit le linky ou la génération précédente. Pour les personnes peu familières avec ce moyenv de démodulation, vous pouvez en savoir plus à ce sujet dans cet article de Charles.

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:

https://electronics.stackexchange.com/questions/568018/pullup-resistor-value-between-ka75330-and-reset-pin-of-esp-01-if-vcc-3-3v-or-l

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:

Le schéma de principe

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.

https://projetsdiy.fr/esp01-esp01s-debuter-ide-arduino-platformio-quel-module-choisir-reperage-broches/

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.

Voilà! Vous avez maintenant accès à vos données Linky en temps réel via le Wifi.

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