LoKy – Open-source projet pour Linky avec LoRaWAN
28 juillet 2021Bonjour à tous,
Je suis HO Vu Duy Bao et je suis le stagiaire de M. Jérôme FERRARI au CNRS cette année – 2021. Aujourd’hui, je vous présente mon projet de fin d’études.
0. Introduction
Avant toute chose, ce projet est sous la licence 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 LoKy (Code, PCB et STL) sur le gitlab du Gricad à l’adresse suivante:
https://gricad-gitlab.univ-grenoble-alpes.fr/ferrarij/LoKy
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 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.
Pour ma part, j’étais en charge de construire la passerelle LoKy (Lora LinKy)- un low-power Lora end-node qui comprend les fonctions suivantes :
- 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 LoRa vers un serveur d’application, auquel l’utilisateur pourra se connecter et visualiser ses données.
II. Linky et TIC
Tout d’abord, parlons du compteur Linky. Le compteur Linky pour avantage comparé aux anciens compteurs de fournir en plus de la sortie TIC une sortie de “puissance” afin d’alimenté un capteur de communication autonome.
Concernant les paramètres techniques du compteur Linky, vous pouvez les retrouver dans la datasheet officielle fournie par ENEDIS.
En ce qui concerne notre projet, l’essentiel à retenir est que le compteur Linky est équipé d’une sortie numérique de Télé-Information Client (ci-après appelée TIC ou LinkyTIC) qui dispose de 3 bornes I1, I2 et A :
- I1 : borne de commun
- I2 : la borne d’information
- A : borne d’alimentation
a. Caractéristiques de l’alimentation TIC entre bornes A et I1
L’énergie fournie par le linky pour l’alimentation de module externe a les caractéristiques suivantes:
Comme la puissance fournie est faible, nous avons décidé de nous orienter vers un arduino pro mini 3,3V couplé à un module LoRa RF95w pour effectuer la transmission de données car cette technologie consomme très peu d’énergie comparé à la technologie WiFi.
b. Circuit d’informations InfoTIC via les bornes I1 et I2
En ce qui concerne les données, la prise TIC diffuse en continu les paramètres de consommation électrique au fur et à mesure que la partie comptage les mets à jours.
Cette sortie est asynchronous et les informations sont transmises en série sur la ligne.
Pour illustrer les informations contenues dans les trames, nous réutilisons certaines des images du blog https://lucidar.me/fr/home-automation/linky-customer-tele-information/ qui pour ses travaux se sert du montage octocoupleur/mosfet inventé par Charles Hallard (https://hallard.me/pitinfov12/) que nous vous avions présenté dans notre article de 2019 (https://miniprojets.net/index.php/2019/06/28/recuperer-les-donnees-de-son-compteur-linky/)
Les signaux binaires sont transmis avec une porteuse modulée à 50kHz qui est configurée en 2 modes :
- Mode historique : le compteur permet de restituer des trames d’information au 1200 bauds.
- Mode standard : un nouveau mode qui est apparu sur les compteurs Linky avec la vitesse de 9600 bauds.
En fonction de cela il faudra modifier le Baudrate de communication. Actuellement le firmware du LoKy est en 1200 bauds.
Maintenant que nous avons les données principales pour la partie Linky, nous allons passer au explication de la partie transmission via LoRa.
III. Présentation de LoRa et documentations utiles
Ici, nous allons juste effleurer le principe du LoRa et LoRaWAN mais vous pouvez aussi relire nos précédents articles ou lire ces excellents cours afin de parfaire vos connaissances:
- Article du Journal du net : LoRa : comment fonctionne le réseau…
- Cours de Sylvain Montagny: LoRa et LoRaWAN pour l’Internet des Objets – Sylvain MONTAGNY
Qu’est-ce que le LoRa?
LoRa est une combinaison de deux concepts :
Long-Range spread spectrum modulation (couche physique) et LoRaWAN (protocole réseau).
LoRaWAN – protocole réseau
Défini par IBM & Actility avant d’être ouvert par la LoRaWAN-Alliance. Ce protocole fournit un réseau de type cellulaire (topologie de grande-étoile) avec ces paramètres:
- Spreading Factor (SF) – Programmable SF: 7, 8, 9, 10, 11, 12. Plus le SF est élevé, il y a plus d’informations transmises par bit, donc un gain de traitement plus élevé
- Bandwidth (BW): Programmable signal BW: 125 kHz, 250 kHz, 500 kHz. Pour un SF, un BW plus étroit est une sensibilité de réception accrue; cependant, augmentation du ToA
- Fréquence Sub-GHz sans licence: en France (Europe) est EU 863-870 MHz.
LoRa est fortement utile car en effet LoRaWAN est un protocole de télécommunication permettant une communication à bas débit pour des objets à faible consommation électrique communiquant selon la technologie LoRa et connectés à Internet grâce à de multiples passerelles.
Ce schéma nous permet de bénéficier d’une structure réseau partagé se développant rapidement.
IV. Architecture réseau pour le projet LoKy
Afin de mieux comprendre les différentes strates pour l’envoi des données, je vous propose ci-dessous une visualisation de l’architecture du projet depuis le Linky jusqu’à la visualisation des données sur un dashboard Grafana :
Pour simplifier, le LoKy décodera les données du compteur Linky et les transmettra par LoRa aux Gateways. Ensuite, les gateways transmettront les paquets aux servers TheThingsNetwork (TTN).
Depuis TTN, nous pouvons récupérer les données grâce à des API puis de les enregistrer dans InfluxDB via MQTT afin de les afficher sur Grafana. Nous avions expliqué cette architecture dans l’article https://miniprojets.net/index.php/2019/07/23/monitoring-dune-serre-du-capteur-jusquau-serveur/
V. Logiciels et composants utilisés pour concevoir le LoKy
a. Outils et Logiciels
Dans ce projet, les logiciels et les outils suivants ont été utilisés:
- KiCad : v5.1.5
- Arduino : IDE
- Node-RED : instruction
- InfluxDB : v1.8
- Grafana : v6.6
Voici les principaux composants de LoKy :
b. Composants
Arduino Pro Mini 3.3V 8MHz | |
Module LoRa RFM95W | |
Optocoupleur PC814 | |
Super Condensateur 5V 0.47F | |
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 LoKy.
VI. 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 :
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 de LoKy est améliorée par rapport à l’ancien article https://miniprojets.net/index.php/2019/06/28/recuperer-les-donnees-de-son-compteur-linky/ et aussi lors de mon ancien stage non seulement dans les performances mais aussi dans la dimension.
Dans la première version de Aymeric, un simple 7805 avait été testé sans succès.
Dans la seconde version, j’avais utilisé un régulateur réglable LM317
Après les tests, nous avons décidé d’utiliser un régulateur fixe 3.5V et un super condensateur 5V 0.47~1 Farad.*
* Note : La résistance série équivalente ou ESR du super condensateur doit être inférieur à 300mOhms.
Ci-dessus, vous pouvez voir les version 2.1 et 2.2 de la partie stockage du LoKy.
Voici les prototypes de la carte de débogage et la version courant de LoKy à travers les différentes étapes du projet :
c. Le schématique final retenu
d. Intégration finale
Avec l’aide de Jérôme et le redesign des parties électroniques, le boitier du LoKy s’intègre parfaitement dans l’espace TIC du Linky, comme vous pouvez le voir ci-dessous :
VII. Firmware de LoKy
Maintenant, nous passons à la partie la plus importante qui permet de coder le lien entre le linkyTIC et le réseau LoRaWAN.
a. Configuration Arduino IDE
Pour nous assurer que tout fonctionne bien, nous avons besoin de configurer Arduino IDE de la façon suivante :
- Installer la version 1.6.21 de Arduino AVR Boards dans Boards Manager (les versions plus récentes ont des bugs inconnus pour la bibliothèque de LoRa)
- Board setup :
- Sélectionnez le processeur: «ATmega328P (3,3 V, 8 MHz)» et le port qui se connecte à votre ProMini
- Installez les bibliothèques pour Arduino IDE.
* Bibliothèques du projet
Pour un souci de continuité et de stabilité, les bibliothèques sont aussi disponibles sur le GitLab du LoKy, mais vous pouvez les retrouver sur leur sites officiels :
- Arduino-LMiC : GitHub (Lire la suite à récapitulatif des bibliothèques LoRaWAN [HowTo])
- Low-Power pour l’Arduino : Rocketscream
b. Configuration de TTN ver.3
Dans cette section, vous trouverez les instructions pour créer des applications et des devices sur TTN version 3 (TTS) pour cela je vous conseille cette vidéo en attendant un futur article.
… ou ce lien https://www.thethingsindustries.com/docs/devices/adding-devices/.
Une fois cela fait, allez dans l’onglet « End devices » et ajustez les clés de device au format suivant et copier les dans un notepad
c. Configuration firmware
Une fois que vous aurez récupérez le code sur notre Gitlab
https://gricad-gitlab.univ-grenoble-alpes.fr/ferrarij/LoKy
Allez dans le dossier firmware et prenez la dernière version (à l’heure actuelle, c’est la V4)
Avec l’IDE Arduino, ouvrez le fichier LoKy-main\LoKy_Firmware\src\V4\loky_node-1_v4.ino et le fichier LoKy-main\LoKy_Firmware\src\V4\Device_Keys.h
- Nous devons d’abord remplacer les clés (que nous avons généré dans la section VII.b) dans le fichier “Device_Keys.h”.
- Attention! Dans la dernière version du firmware l’étape qui suit n’est plus nécessaire car les 2 options sont inclusent
- Selon l’option tarifaire de votre Linky, nous pouvons utiliser BASE ou HCHP pour notre LoKy en commentant et décommentant ligne 11 or 12 du main-sketch.
- Uploader le sketch dans votre Arduino et vérifiez le fonctionnement de LoKy à partir du moniteur série sur Arduino IDE.
- Enfin, on peut brancher le LoKy sur le compteur et voilà, on est prêt pour la dernière étape !
VII. Server d’application
a. Décodeur payload sur TTN
Allez maintenant dans la partie Payload formatters de TTN
Changez le décodage par défaut en Javascript et collez le contenu du fichier LoKy-main\LoKy_TTN_Decoder\LoKy_decoder_v2.js et enregistrez les modifications.
b. Integration MQTT avec le trio Node-RED, InfluxDB et Grafana
En suivant les instructions de TTN, nous pouvons facilement configurer le stockage des données dans le serveur de l’application.
MQTT – Node-RED ou MQTT in Node-RED [HowTo]
Par rapport à la base de données InfluxDB et aux dashboard Grafana, vous pouvez revenir à la partie 8 cet article de M. Jérôme :
Monitoring d’une serre, du capteur jusqu’au serveur via le trio Lora, InfluxDB, Grafana
Enfin, dans RedNode, vous devez créer un “flow” comme celui-ci, nous vous l’expliquerons dans un prochain article de façon plus détaillé:
Le “Parse JSON payload” ne pourrait pas être plus simple..
VIII. Résultats
Maintenant, “it’s time to shine” !
Lorsque vous aurez connecté votre LoKy sur le Linky et si vous êtes couvert par le réseau LoRa, vous verrez apparaitre comme ci-dessous les données reçus de LoKy sur TTN :
Et sur votre serveur d’application, c’est assez beau hein ? ^_^
Conclusion
Grâce à l’aide enthousiasme de Jérôme, j’ai pu terminer mon projet plus tôt que prévu. Cependant, ce n’est que le premier succès de ce projet, nous avons encore beaucoup de choses à mettre à niveau dans l’avenir. Alors n’hésitez pas à nous envoyer vos retours ainsi que les problème que vous rencontrez, nous apprécions votre contribution à LoKy.
Et à bientôt pour de nouveaux articles
Ho Vu Duy Bao et Jérôme Ferrari – _Grenoble, Original Février-2021_ – Last Update Juillet 2021
Vraiment ce que j’attendai!!! Que le réseau de distribution revienne au citoyen à qui il appartient collectivement.
Je suis titulaire d’un budget participatif auprès de la ville de grenoble sur le sujet: réduire la facture énergétique des bâtiments.
Bonjour
Ce projet correspond exactement à ce que je recherche,au vu de mes contraintes.
Cependant, il n’y a pas un mot sur la sécurité des données. Un chiffrement est implémenté, ou implémentable ? A priori LoRaWAN permet le chiffrement.
Bonjour,
le chiffrement ici se fait tout au long de la transmission à partir des 3 clés générées avec TTN (AppEUI, DevEUI et AppKey)
Bonne journée,
Jérôme
Est-il envisagé de mettre en vente ces modules autonomes ?
Bonjour, dans un premier temps, nous cherchons des volontaires pour les tester gratuitement dans la phase de développement et dans le cadre des expériences du laboratoire, puis dans un second temps, nous les mettrons en vente quand ils seront suffisamment robustes.
Bonne journée,
Jérôme Ferrari
Je suis volontaire pour le tester si besoin
Bonjour, si vous êtes toujours à la recherche de volontaires, je veux bien en être aussi 🙂
Bonjour, d’accord pour cela pouvez-vous m’envoyer un mail à jerome.ferrari@g2elab.grenoble-inp.fr ?
Bonjour,
Si vous êtes toujours en recherche de testeurs je suis volontaire.
Et si vous voulez comparer avec le WinKy je peux aussi. Linky en limite de propriété à 30m de la maison.
Bonjour,
pouvez vous m’envoyer un mail sur mon adresse professionnelle? EN ce qui concerne les tests, je ne pourrais fournir par participant qu’un module (soit le LoKy, soit le WinKy)
Bonne journée,
Jérôme
Quel est le rendement du pont de Graetz utilisé ? Combien consomme le produit au repos, lors des émissions Lora ?
Bonjour,
je n’ai pas encore fait les tests pour ces mesures là. Cela fait partie de la campagne de test en cours.
Bonne journée,
Jérôme
Bonjour,
Je serais intéressé par un loky si c’est toujours possible. J’ai déjà une gateway Kerlink indoor (Wirnet iFemtocell) et j’aimerai bien tester la solution avec une intégration Home Assistant.
Merci,
Vincent.
Bonjour,
Je suis à la recherche d’une solution DIY pour la récupération des infos de mon chers Linky qui ce situe à 150m de mon habitation.
Après plusieurs heures de recherche (avec différente solutions) je suis tombé sur votre post.
Déjà je trouve que vous avez fait du bon travail, et je réfléchi fortement à m’inspirer de vos travaux pour réaliser une connexion de votre Loky sur une gateway Lora connecté sur un Raspberry 4 avec une intégration Home Assistant (utilisant déjà Grafana et InfluxDb).
N’étant électronicien de nature, si c’est toujours possible je suis aussi intéressé par un Loky.
Merci d’avance
Stef
Bonjour,
Merci du retour, pas de souci,si vous rencontrez des difficultés, vous pouvez me contacter.
Bonne journée,
Jérôme
Souhaitant surveiller une installation photovoltaique < 36KVA équipée d'un comptaur linky et distante de mon domicile je suis depuis longtemps à la recherche d'une solution simple et celle-ci semble correspondre.
J'imagine qu'il est un peu tard pour candidater à l'expérimentation mais au cas ou je suis partant.
Cordialement.
Bonjour,
Après être passé chez hallard.me et son pitinfo, puis sur les forums, je suis arrivé sur le lien vers Winky, qui finalement pointe sur ce projet, qui correspond le mieux à mon besoin.
Est-ce qu’il est déjà prévu les modules à acheter ou est-ce que la phase d’expérimentation est toujours en cours ?
Dans le premier cas, où pourrait-on se procurer le Loky ?
Dans le deuxième, est-ce qu’il est encore possible de faire partie de l’expérimentation ?
Merci d’avance de vos réponses
Cordialement
Bonjour,
Merci pour les encouragements. Je viens de passer le challenge Outs of Labs afin de permettre la commercialisation.
Normalement j’aurai la réponse mi-mai.
Encore merci,
Jérôme
Merci de votre réponse, je vais donc patienter un peu et revenir voir dans quelques semaines 🙂
Bonjour,
Avez-vous réussi le challenge Out of Labs ?
Bonjour, ça m’intéresse aussi, merci !
Bonjour,
J’ai eu l’information en privé de la part de J Ferrari, que je recopie donc ici pour la partager:
“Désolé pour la réponse tardive, nous sommes justement en train de finaliser l’Observatoire de la Transition Énergétique qui permettra de mettre un cadre légal sur la diffusion du Loky.
Je vous invite si vous le voulez à vous inscrire sur https://ote.univ-grenoble-alpes.fr/ pour avoir l’alerte de quand l’expérience commencera. ”
Cyril
Bonjour,
Je suis également intéressé
Bonjour, projet intéressant mais quid de la fair use policy Lorawan ? Celà semble l’exploser :
https://avbentem.github.io/airtime-calculator/ttn/eu868/27
Je n’ai pas regardé en détail la taille du payload mais on serait limité à 5 messages par heure en Sf7 , en SF12 n’en parlons pas.
Bonjour, oui il faut faire attention à cela. Quand on a publié à l’époque, nous avions choisi la politique de tout mettre et c’est ensuite à la personne de choisir pour n’envoyez que l’index, la puissance PAPP ou autre information en fonction du besoin et dans l’optique de respecter la fair use policy.
[…] LoKy […]