Coder Social home page Coder Social logo

tms0 / teleinfo-publisher Goto Github PK

View Code? Open in Web Editor NEW
10.0 3.0 3.0 63 KB

Récupération et publication MQTT des données de la téléinformation

License: GNU General Public License v3.0

Dockerfile 9.91% JavaScript 90.09%
teleinformation enedis node-red raspberry-pi teleinfo mqtt docker

teleinfo-publisher's Introduction

Récupération et publication de la téléinformation

Ce projet permet de récupérer en temps réel les données d'un compteur Enedis (Linky ou autre compteur moderne) en utilisant la Télé-information client (TIC) et de les publier vers un topic MQTT.

MQTT est un protocole de messagerie publish-subscribe largement utilisé dans l'Internet des objets. De nombreux logiciels permettent de consommer et d'exploiter les données issues de ce protocole.

La téléinformation est une sortie physique acessible librement sur les compteurs Enedis. Pour la décoder, il est possible de réaliser soi-même un circuit électronique ou d'acheter des modules prêts à l'emploi.

Ce projet se décompose en deux parties :

  • Le matériel permettant de lire les données de la téléinformation
  • L'application permettant de décoder et publier ces données

Le matériel

Ma solution se base sur le PiTInfo de Charles Hallard, c'est une carte d'extension qui se branche sur un Raspberry Pi et qui permet de récupérer les données de la téléinformation sur son port série. Le PiTInfo est en vente sur Tindie.

Concernant le Raspberry, un Raspberry Pi Zero suffit largement, mais n'importe quel autre modèle devrait fonctionner.

NB : Ce projet fonctionne exclusivement sur un Raspberry Pi, mais si vous vous sentez l'âme d'un aventurier et que vous préférez l'utilisation d'un ESP8266, Charles Hallard (encore lui) a intégré la téléinfo à l'excellent firmware Tasmota.

L'application

L'application consiste en une image Docker qui embarque un flow Node-RED. Le flow écoute les données sur le port série, vérifie les informations et les publie vers un topic MQTT.

Pré-requis

  • Le système d'exploitation Raspberry Pi OS installé sur votre Raspberry Pi.
  • Un broker MQTT (mosquitto par exemple) installé directement sur votre Raspberry Pi ou bien sur une autre machine du réseau.

Configuration du port série

Par défaut, le port série est désactivé. La procédure pour l'activer est disponible sur le blog de Charles Hallard : https://hallard.me/enable-serial-port-on-raspberry-pi/

Lancement avec docker-compose

  • Tout d'abord, il faut installer docker ainsi que docker-compose :
    $ curl -sSL https://get.docker.com | sh
    $ sudo apt install docker-compose
    
  • Récupérer le fichier docker-compose.yml
  • Modifier le fichier .env-sample pour renseigner les valeurs spécifiques à votre environnement et le renommer en .env
  • Lancer l'application : docker-compose up -d

Téléinformation "historique" ou "standard" ?

Si vous possédez un Linky, vous pouvez demander à votre fournisseur d'électricité d'activer la téléinformation en mode "historique" ou "standard".
Le mode historique est celui en place sur les anciens compteurs, il permet de récupérer de quoi suivre sa consommation mais n'est pas aussi complet que le mode "standard".
Le mode "standard" devient vraiment intéressant si vous produisez de l'électricité (panneaux photovoltaïques, etc) et que vous souhaitez suivre votre injection sur le réseau, ou bien que votre abonnement est plus compliqué que ce qui est prévu dans le mode "historique".

Fonctionnement en détails de l'application

L'éditeur NodeRed est accessible depuis le navigateur sur http://<hostname>:1880.

Le flow écoute les trames de la téléinformation sur le port série (/dev/ttyAMA0), elles sont ensuite validées et transformées en un objet JSON, sous la forme "étiquette" / valeur".

Enfin chaque message est publié sur un broker MQTT, dans le topic teleinfo.

Exemple de message avec la téléinformation "historique" du compteur Linky :

{ 
   "timestamp": 1575315182914,
   "ADCO":"XXXXXXXXXXXX",
   "OPTARIF":"HC",
   "ISOUSC":"45",
   "HCHC":"000019212",
   "HCHP":"000068306",
   "PTEC":"HP",
   "IINST":"008",
   "IMAX":"090",
   "PAPP":"01940",
   "HHPHC":"A",
   "MOTDETAT":"000000"
}

Exploitation des données

Le protocole MQTT étant énormément utilisé dans l'Internet des objets, de nombreuses solutions sont possibles pour exploiter vos données :

Documentation télé-information client

Crédits

Tous les crédits vont à Charles Hallard (http://hallard.me), je n'ai fait que reprendre son travail pour l'adapter à mes besoins.

teleinfo-publisher's People

Contributors

renovate[bot] avatar tms0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

teleinfo-publisher's Issues

How to do when serial is /dev/ttyS0

Hello, my data is on /dev/ttyS0. I can't edit node-RED to change the serial value.
Why is the serial input value not a setting in .env ?
Or how can I configure it ?

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

docker-compose
docker-compose.yml
dockerfile
Dockerfile
  • nodered/node-red 2.2.3-16
github-actions
.github/workflows/main.yml
  • actions/checkout v3
  • docker/metadata-action v4
  • docker/setup-qemu-action v2
  • docker/setup-buildx-action v2
  • docker/login-action v2
  • docker/build-push-action v3
npm
package.json
  • node-red-node-serialport 0.15.0
  • node-red-node-pi-gpio 2.0.5

  • Check this box to trigger a request for Renovate to run again on this repository

Heures super creuses.

Bonjour Comment rendre le flow compatible avec les heures super creuses?
Merci d'avance

MQTT login & password

Bonjour,

Comment fait-on pour renseigner un login et un password pour la connexion MQTT ?

Merci.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.