7

Teleinfo Broadcast

teleinfo broadcast

Ce billet contient la description d’un programme qui permet de récupérer les trames téléinfo reçue par la liaison série d’un ordinateur (ou autre périphérique) puis de les envoyer (broadcaster) sur un réseau local. de ce fait, il est possible de récupérer ces informations sur une (ou même plusieurs machines) pour en faire le traitement souhaité.

Ce programme est entièrement développé pour mes besoins personnels, il serait donc illusoire de penser pouvoir l’utiliser en l’état à d’autres fin sans découvrir de bugs ou des manques de fonctionnalités. Néamoins, je pense qu’il peut servir de base et je peux aider si vous avez des questions.

Pour rendre à César ce qui appartient à César, je tenais à préciser que je me suis largement inspiré de l’excellent site de Domos et de son programme original ainsi que des sources de picocom.

J’oubliais, le programme fonctionne uniquement sous linux (testé sur Debian Lenny) mais çà ne doit pas être sorcier de l’adapter pour Windows.

Le fonctionnement est très simple, et peut être distingué en deux modes :

  • Le mode serveur (ou daemon), c’est à dire qu’il ecoute les trames reçues sur le port série et les transfère immediatement via une trame UDP sur le réseau local. Petite subtilité, en fait deux trames identiques sont envoyés, une sur le port 1200 et l’autre sur le port 1201, tout simplement parce que mon PC de domotique utilise deux programmes pour traiter les données de téléinfo or deux programmes distincts ne peuvent pas se écouter (binder) simultanément sur le même port.
      • mon daemon domotique avec l’affichage en temps réél des données téléinfo reçues
      • un script executé toutes les 5 minutes pour envoyer les données de téléinfo sur la base MySQL
  • Le mode client, c’est à dire qu’il écoute sur le réseau local une trame UDP (donc envoyée par de daemon) puis si celle-ci est valide, fait un traitement associé. Dans mon cas, soit on affiche la trame soit on stocke les données dans une base MySQL avec les valeurs reçues (le nom des champs de la table doit être le même que les champs de la trame reçue, donc un champs ADCO, …).

J’ai positionné le projet sur mon github vous trouverez le source teleinfo.c ainsi que le makefile

Ensuite j’ai créé des start/stop daemon pour le programme teleinfo, mais attention c’est sur une debian, je ne sais pas si c’est applicable sur les autres distributions.

Le fichier à créer est le fichier teleinfo à positionner dans le dossier /etc/init.d/

 

pour activer le lancement de teleinfo au boot

Pour enlever le lancement de teleinfo au boot

Pour arrêter ou démarrer le service teleinfo

 

Charles

Charles

7 Comments

  1. Bonjour,

    Pourquoi broadcaster ? Je pense modifier ton code pour envoyer en multicast, et donc passer a travers la limitation de 2 ports ouverts sur le client…

     

    Qu’en penses-tu ?

     

    Xavier

  2. Bonjour,

    Je reviens à nouveau sur ce programme que je souhaite modifier pour le rendre accessible avec des requêtes WEB pour les box domotique.

    En fait il n’y a pas de limitation au niveau des clients, n’importe quel périphérique réseau peut accéder aux données en écoutant sur le bon port UDP (même plusieurs en simultanés), sauf que c’est limité à un programme par périphérique, puisque le port est ouvert par un client. Tu ne peux pas avoir sur une même machines deux processus en même temps en écoute sur le même port. C’est pour çà que j’ai créé un 2eme port d’écoute, afin de pouvoir faire tourner 2 clients en simultanés sur une même machine.

    Charles

  3. Bonjour Charles,

    Avez vous avancé sur ce point ? J’ai un box Eedomus qui n’attent plus que vous pour allez chercher la teleinfo du RPI 🙂

    • Bonjour Jérôme,
      Je suis passé depuis peu sous Node-Red pour la gestion de la téléinfo comme décrit dans mon article dédié. Cela va à terme me permettre de me passer du programme teleinfo broadcast. çà permet de “coder” simplement depuis le navigateur et çà évite de devoir compiler, gérer des makefile, les dépendance, etc…

      Du coup pour l’EEDomus (j’en ai une aussi) je voulais le faire vite fait en ajoutant dans mon flow node-red un envoi via XPL des données de la trame téléinfo mais pas de chance, à ma grande surprise il n’existe pas de module XPL pour node-red ;-(. Donc il faudrait le coder à la main. Je regarderai ça si j’ai un peu de temps, çà ne doit pas être bien compliqué mais il faut le faire!

Comments on this topic in community Forums.