{"id":24803904,"url":"https://github.com/duglof/libteleinfo","last_synced_at":"2026-04-12T02:34:21.570Z","repository":{"id":274759400,"uuid":"922087359","full_name":"Duglof/LibTeleinfo","owner":"Duglof","description":"Wifinfo serveur web wifi pour compteur linky compatible avec jeedom V4, domoticz, mqtt","archived":false,"fork":false,"pushed_at":"2025-03-16T17:38:02.000Z","size":6400,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"esp32","last_synced_at":"2025-03-25T06:45:20.981Z","etag":null,"topics":["domoticz","energy-consumption","esp32","esp8266","jeedom","libteleinfo","linky","mqtt","wifinfo"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Duglof.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-25T09:30:50.000Z","updated_at":"2025-03-16T17:23:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"3fe20776-e52e-460d-a684-6df9111df251","html_url":"https://github.com/Duglof/LibTeleinfo","commit_stats":null,"previous_names":["duglof/libteleinfo"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duglof%2FLibTeleinfo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duglof%2FLibTeleinfo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duglof%2FLibTeleinfo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duglof%2FLibTeleinfo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Duglof","download_url":"https://codeload.github.com/Duglof/LibTeleinfo/tar.gz/refs/heads/esp32","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245414529,"owners_count":20611364,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["domoticz","energy-consumption","esp32","esp8266","jeedom","libteleinfo","linky","mqtt","wifinfo"],"created_at":"2025-01-30T06:13:47.951Z","updated_at":"2026-04-12T02:34:21.553Z","avatar_url":"https://github.com/Duglof.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wifinfo - Présentation et fonctionnalités\n\nWifinfo est une solution permettant de récupérer et transmettre les données du compteur électrique Linky vers votre système domotique quel qu'il soit (Jeedom, Home Assistant, Domoticz, Mqtt). Il s'adapte automatiquement à votre type abonnement (Base, Heures Creuses, Tempo, Production, EJP) et fournit l'ensemble des informations disponibles.\n\n## Fonctionnalités principales\n- Transmission des données Linky vers n'importe quelle plateforme domotique compatible\n- 4 modes de transmission simultanés possibles: \n  - Configuration Mqtt : Envoi des données à un serveur Mqtt : Home Assistant\n  - Configuration Emoncms : EmonCMS est un serveur open-source de supervision de l’énergie (https://emoncms.org ou instance locale) \n  - Configuration Jeedom : Envoi des données au plugin Teleinfo de Jeedom\n  - Configuration Http : Envoi des données en Http : Domoticz\n- Aide à la migration : permet d'envoyer simultanément les données vers plusieurs systèmes domotiques\n- Accessible directement par nom sur le réseau via mDNS (ex: Si dans l'onglet configuration Nom Réseau = **Wifinfo-23178F**)\n  - **http://Wifinfo-23178F.local**\n  - **ping Wifinfo-23178F.local**\n- Serveur json:\n  - Récupération des compteurs du Linky : **http://Wifinfo-XXXXXX/json**\n  - Récupération des données de l'onglet Téléinformation: **http://Wifinfo-XXXXXX/tinfo.json**\n  - Récupération des données de l'onglet Système : **http://Wifinfo-XXXXXX/system.json**\n  - Récupération des données de l'onglet Configuration : **http://Wifinfo-XXXXXX/config.json**\n- Mise à jour via Wi‑Fi (OTA – Over‑The‑Air)\n- Détection automatique du type d'abonnement\n- Interface web intégrée pour la configuration et la visualisation des données\n- Compatibilité avec les modes Linky **Historique** et **Standard** (configurable via l'interface WEB )\n- Connexion Wi-Fi pour l'intégration dans votre réseau domestique\n- Connexion au compteur via les broches **I1/I2** grâce à l'interface 'PtInfo from Charles' (jusqu'à 10 mètres avec un câble téléphonique)\n- Alimentation via un simple chargeur de téléphone connecté sur la prise USB du module ESP\n- Reconfiguration facile en cas de changement de box internet : Avec votre téléphone portable\n  - Se connecter au réseau wifi **Wifinfo-XXXXXX**\n  - Accéder via le navigateur internet à http://192.168.4.1\n  - Sélectionner le SSID de votre nouveau réseau (affichage automatique des réseaux disponibles)\n  - Entrer le mot de passe et cliquer sur 'Enregistrer'\n  - Redémarrer Wifinfo\n- Compatible avec les modules **ESP8266** et **ESP32** \n\n## Dépôt Github\n\nVous pouvez retrouver le projet et installer la version correspondant à votre module ESP en cas de panne.\n https://github.com/duglof/libteleinfo : En cas de panne de votre module ESP vous pouvez installer la même version.\n\n## Flash firmware (backup/restore)\n[Lien vers les derniers firmware compilés :]\u003chttps://github.com/Duglof/LibTeleinfo/releases/latest\u003e\n\n[Procédure de programmation et de sauvegarde :](./firmwares)\n\n## Connexions\n![Wifinfo connexions](docs/Wifinfo-connexions.png)\n\n## Écran principal\n![Wifinfo ecran principal](docs/Wifinfo-ecran-principal.png)\n\nP.S.\nLe système de fichier utilisé pour stocker le contenu du répertoire data est au format SPIFFS qui est déprécié.\nSi l'utilisation était supprimée, prenez la version V3.1.0 de la branche littlefs.\nElle est identique. La seule différence, c'est le système de fichier.\n\n# Teleinfo Universal Library\n\nThis is a fork of Teleinfo Universal Library for the ESP8266 MCU\nThis is a generic Teleinfo French Meter Measure Library\n- Initial Github source : \u003chttps://github.com/hallard/LibTeleinfo\u003e\n- Modified Github source : \u003chttps://github.com/Doume/LibTeleinfo\u003e\n- Modified Github source : \u003chttps://github.com/theGressier/LibTeleinfo/tree/syslog\u003e\n- Modified Github source : \u003chttps://github.com/Duglof/LibTeleinfo\u003e\n- Modified Github source : \u003chttps://github.com/Davcail/LibTeleinfo-syslog-mqtt\u003e\n\nSélection du mode (TINFO_MODE_HISTORIQUE par défaut):\n  - TInfo.init(TINFO_MODE_HISTORIQUE); \n   ou \n  - TInfo.init(TINFO_MODE_STANDARD); \n\nexemples/Arduino_Softserial_Etiquette : Affiche des informations de téléinformation reçue étiquette par étiquette.\n\nexemples/Arduino_Softserial_Blink : Affiche des informations de téléinformation reçue trame par trame avec clignotement LED court/long si les données ont été modifiés.\n\n# Wifinfo pour ESP32 (mais aussi ESP8266)\n\nIl se trouve dans les exemples de la librairie LibTeleinfo\n  exemples/Wifinfo\n\nLe serveur Web Wifinfo est connecté:\n  - En Wifi à votre réseau local\n  - Au compteur Linky via l'interface OPTO à I1 et I2 (avec 10 mètres de câble téléphone, c'est ok)\n  - A une alimentation 5V via le connecteur USB (micro USB ou USB-C ou autre si l'ESP choisi n'a pas de prise USB) \n\nWifinfo est compatible avec tous les contrats car il ne fait pas de filtrage sur les données reçues ( BASE, HPHC, TEMPO, etc)\n\nWifinfo est compatible Linky Mode Historique et Linky Mode Standard (à configurer dans l'interface Web Onglet Configuration : Section Avancée)\n\nWifinfo permet par configuration d'activer les fonctions suivantes:\n  - Envoie périodique des données au plugin Teleinfo de votre Jeedom\n  - Envoie périodique des données au serveur emoncms\n  - Envoie de données à un serveur Mqtt (Jeedom, HomeAssistant ou autre)\n  - Envoie de données à un serveur web via une requète http GET\n    - les tags %HCHP% %HCHC% %PAPP% %IINST% etc sont remplacés par leur valeur\n\nWifinfo est aussi un serveur json qui permet:\n  - Retourner les données de téléinformation du Linky (http://192.168.1.x/json)\n  - Retourner les données système ((http://192.168.1.x/system.json))\n\nWifinfo dispose d'une interface d'administation \n  - [Téléinformation](docs/Wifinfo-Teleinformation.png): Visualisation des données du linky (ADCO, HCHC, ...)\n  - Configuration: [Réseau Wifi](docs/Wifinfo-configuration-generale.png), [Mqtt](docs/Wifinfo-configuration-mqtt.png), [Emoncms](docs/Wifinfo-configuration-emoncms.png), [Jeedom](docs/Wifinfo-configuration-jeedom.png), [Http Request](docs/Wifinfo-configuration-http-request.png), [Avancée](docs/Wifinfo-configuration-avancee.png)\n  - [Système](docs/Wifinfo-systeme.png) : Affichage des informations système ( Version, Réseau, Erreurs, Options de compilation, Mémoire)\n  - [Fichiers](docs/Wifinfo-fichiers.png) : Affichage des informations du système de fichiers (Liste, Taille, Espace libre)\n \n  - Linky mode Historique et mode Standard dans l'onglet Configuration Avancée (Redémarrer Wifinfo après le changement)\n  - Compatible jeedom v4 / clé API plugin Teleinfo 64 caractères\n  - Compatible avec Home Assistant avec l'interface Mqtt\n\nWifinfo : Configuration Wifi\n\nDepuis votre téléphone portable :\n- Se connecter au réseau Wifinfo-XXXXXX\n- Navigateur (chrome ou autre) url : http://192.168.4.1\n- Sélectionner l'onglet Configuration\n- Réseau Wifi : Mettre le SSID\n- Clé Wifi    : Mettre le mot de passe de votre réseau Wifi\n- Cliquer sur Enregistrer\n- Déployer Avancée\n- Cliquer sur Redémarrer Wifinfo\n- Wifinfo se connectera à votre réseau Wifi\n- Accéder à votre box pour connaître sa nouvelle adresse IP\n\n# Historique des versions\n## Modification Version 3.0.2 (en cours)\n- Changement des GPIOs (RGB LED et Entrée téléinfo) pour ESP32 Mini D1 + interface teleinfo\n  - ESP32 Mini D1 (Wemos)\n    - Entrée téléinfo 23 (au lieu de GPIO 04)\n    - RGB LED : GPIO 18 (au lieu de GPIO 14) \n  - ESP32-S2 Mini D1\n    - Entrée téléinfo 11 (au lieu de GPIO 04)\n    - RGB LED : GPIO 7 (au lieu de GPIO 14) \n  - Affichage GPIO PIN pour la LED RVB dans l'onglet système\n  - Affichage GPIO PIN pour la LED Rouge (utilisée uniquement avec interface PiTinfo)\n  - Par defaut la LED est au format GRB (Green Red Blue) : Avant elle etait au format RGB (Red Green Blue)\n\n## Modification Version 3.0.1\n- Configuration du port OTA par défaut (8266 pour un ESP8266 et 3232 pour un ESP32) (mineur)\n- Ajout de mqttConnect avant l'appel de mqttStartupLogs pour que les logs de startup soient transmis (mineur)\n- mqttConnect : ajout de mqttClient.setKeepAlive ce qui évite une nouvelle connexion à chaque fois (mineur)\n- WifiHandleConn : ajout de Wifi.hostname() pour ESP8266 ou WiFi.setHostname() pour ESP32\n  - pour que le ping à partir du Nom réseau fonctionne (ex: ping **Wifinfo-23178F.local** ) (mineur)\n\n## Modification par dugolf (version 3.0.0)\n- Compilation pour ESP12E (ESP8266) et pour ESP32 (ESP32 WROOM32)\n- Mise à jour de Readme.md pour ESP32\n- Correction débordement de pile char buff[32] trop petit\n- Set Wifi connect timeout to 10 seconds\n- Correction pour que le LED RGB ou GRB fonctionne\n- Éviter les débordements de logbuffer de SYSLOG en cas de message de Debug\n- Éviter les débordements de waitbuffer de SYSLOG en cas de message de Debug\n\n## Modification par dugolf (version 2.0.0)\n- Merge avec https://github.com/hallard/LibTeleinfo/tree/master\n  - Intégration nouvelle LibTeleinfo compatible mode Historique et mode Standard\n    - Presque identique à https://github.com/arendst/Tasmota/tree/development/lib/lib_div/LibTeleinfo\n- Ajout Configuration Linky Mode dans l'onglet Configuration Avancée\n  - Radio button Linky Mode Historique et Linky Mode Standard dans l'onglet Configuration Avancée\n  - Sélectionner Linky Mode Historique ou Linky Mode Standard\n  - Cliquer sur Redémarrer Wifinfo pour que le changement soit pris en compte\n- Affichage sur la page web dans l'onglet Système\n  - Les options de compilation\n  - Les compteurs d'erreur (checksumerror,framesizeerror,frameformaterror,frameinterrupted)\n- Ajout d'une beta version de Mqtt\n   - Envoie de messages de log démarrage (Version, Adresse IP, Date Heure)\n   - Envoie immédiat des données de Téléinformations ajoutées ou modifiées (DataCallback()\n\n## Modifications par dugolf (version 1.0.8)\n- Wifinfo.h : #define WIFINFO_VERSION \"1.0.8\"\n- library.json : \"version\": \"1.0.8\"\n- library.properties : version=1.0.8\n- Teleinfo clé api 64 caractères\n  - config.h : #define CFG_JDOM_APIKEY_SIZE  64\n  - data : index.htm.gz : index.htm : id=\"jdom_apikey\" : maxlength=\"64\"\n  - Wifinfo.ino : char buff[300] //To format debug strings but also use to format jeedom request\n- Correction erreurs de compilation (LibTeleinfo.h / LibTeleinfo.cpp)\n  - void TInfo::process (char c); : retourne void\n  - void TInfo::clearBuffer(); : retourne void\n  - ValueList * TInfo::valueAdd; : return NULL à la fin de la méthode\n- Warning C++ conversion const char * en char * (Wifinfo.ino)\n  - add void Myprint(const char *msg)\n\n## Modifications par theGressier (version 1.0.7)\n- Modification de l'envoi des données à Jeedom suite à la mise à jour du plugin Teleinfo en v4 (changement API, POST JSON)\n- Reconnect WiFi automatically after incident\n\n## Modifications par Doume (version 1.0.6) branche 'syslog' :\n\n- Permettre l'envoi des messages de debugging à un serveur rsyslog du réseau local\n\n   les paramètres peuvent être configurés via l'interface Web, onglet 'Configuration'\n   panel 'Avancée'\n   \n   Il suffit de laisser le paramètre 'Syslog host' vide, pour désactiver cette fonction.\n   Les envois sur le réseau utilisent le protocole UDP pour alimenter le serveur\n   distant\n   \n   Pour compiler avec l'option SYSLOG, vous devrez installer la librairie Syslog-master.zip\n   qui se trouve dans le répertoire 'librairie', dans votre environnement Arduino IDE\n\t\t\t\n## Modifications par Doume (version 1.0.5a) branche 'static' :\n\n- Ajout de la gestion d'un contact sec, dont l'état peut être remonté vers Domoticz\n     exemple : le compteur EDF est souvent près du portail, donc on peut notifier\n     \t\t\tl'état ouvert/fermé du portail en utilisant Wifinfo\n\t\t\t\n## Modifications par Doume (version 1.0.5) branche 'static' :\n\n- Add support for request /emoncms.json\n\n        return a json list formated to interface emoncms server from a 3rd party \n        That allow to don't activate emoncms http client inside Wifinfo module\n\t\n- Add possibility to compile a version of sketch for module not connected to EDF counter\n\n        Activate #define SIMU into Wifinfo.h, to obtain a version which will create\n         2 variables and update one of them each second, to verify package\n\t \n- Add a check on variable names, and force a reinit of LibTeleinfo interface if an\n  alteration is detected (each restart is counted, and displayed in 'system' page )\n  \n- Change library LibTeleinfo.cpp, to don't use anymore malloc/free system APIs\n\n\t\tVariables are now stored in static table, allocated on start\n\t\t\n\t\t\t50 entries max, name length 16 bytes max, value length 16 bytes max\n\t\t\t\n\t\tTo use this library version :\n\t\t\n\t\t\tFirst, backup your old version of LibTeleinfo....\n\t\t\t\n\t\t\tcopy files src/LibTeleinfo.cpp and src/LibTeleinfo.h into your Arduino\n\t\t\tenvironment (generally ~/Arduino/libraries/LibTeleinfo-master/src )\n\t\t\tbefore to compile sketch\n\n### Added features :\n- Add possibility to configure HttpRequest to send parameters/values to Domoticz\n- Add all possible variable as listed below : \n- Add some informations to 'System' page, like Wifi link quality, Wifi network name, and MAC address\n\nCes différents messages donnent les indications suivantes en fonction de l’abonnement souscrit (Base, HP/HC, EJP, Tempo):\n- N° d’identification du compteur : ADCO (12 caractères)\n- Option tarifaire (type d’abonnement) : OPTARIF (4 car.)\n- Intensité souscrite : ISOUSC ( 2 car. unité = ampères)\n- Index si option = base : BASE ( 9 car. unité = Wh)\n- Index heures creuses si option = heures creuses : HCHC ( 9 car. unité = Wh)\n- Index heures pleines si option = heures creuses : HCHP ( 9 car. unité = Wh)\n- Index heures normales si option = EJP : EJP HN ( 9 car. unité = Wh)\n- Index heures de pointe mobile si option = EJP : EJP HPM ( 9 car. unité = Wh)\n- Index heures creuses jours bleus si option = tempo : BBR HC JB ( 9 car. unité = Wh)\n- Index heures pleines jours bleus si option = tempo : BBR HP JB ( 9 car. unité = Wh)\n- Index heures creuses jours blancs si option = tempo : BBR HC JW ( 9 car. unité = Wh)\n- Index heures pleines jours blancs si option = tempo : BBR HP JW ( 9 car. unité = Wh)\n- Index heures creuses jours rouges si option = tempo : BBR HC JR ( 9 car. unité = Wh)\n- Index heures pleines jours rouges si option = tempo : BBR HP JR ( 9 car. unité = Wh)\n- Préavis EJP si option = EJP : PEJP ( 2 car.) 30mn avant période EJP\n- Période tarifaire en cours : PTEC ( 4 car.)\n- Couleur du lendemain si option = tempo : DEMAIN\n- Intensité instantanée : IINST ( 3 car. unité = ampères)\n- Avertissement de dépassement de puissance souscrite : ADPS ( 3 car. unité = ampères) (message émis uniquement en cas de dépassement effectif)\n  - Valeurs données pour ISOUSC = 60 A)\n  - Dépassement jusqu’à 1.1 x ISOUSC (inférieur à 66 A) alors cela ne coupera jamais.\n  - Dépassement entre 1.1 et 1.4 ISOUSC (66A -\u003e 84A) alors cela mettra 250 secondes avant de couper.\n  - Dépassement entre 1.4 et 2.5 ISOUSC (84 A -\u003e 150 A) alors cela va couper en 40 secondes.\n  - Dépassement supérieur à 2.5 ISOUSC (plus de 150 A) alors la coupure sera instantanée.\n- Intensité maximale : IMAX ( 3 car. unité = ampères)\n- Puissance apparente : PAPP ( 5 car. unité = Volt.ampères)\n- Groupe horaire si option = heures creuses ou tempo : HHPHC (1 car.)\n- Mot d’état (autocontrôle) : MOTDETAT (6 car.)\n\n# Hardware de test\n## ESP-12E Dev Kit (type NodeMCU 1.0) avec 4 Mo de flash (30 broches)\n![esp12e ch340](docs/Esp8266-esp12E-30pins.png) \n![esp12e gpio](docs/Esp8266-esp12E-pinout.png)\nAlimentation de l'ESP : 5 Volt 500mA (200mA mini)\n- Alimentation via les pins\n  - VIN de ESP au +5V\n  - G de ESP au -5V\n\nInterface PiTinfo\n- TXD =\u003e RXD : D7 de ESP (RXD2 GPIO13)\n\nLED RGB\n- Pin 1 -\u003e D5 (GPIO14) de ESP\n- Pin 2 -\u003e GND\n- Pin 3 -\u003e 3V de ESP (3.3V)\n\n## ESP32 Dev Kit (Type ESP32 WROOM DA Module) avec 4 Mo de flash (30 broches)\n![esp32 cp2102](docs/ESP32S-30P-CP2102-MicroUSB.png) \n![esp32 gpio](docs/ESP32-dev-kit-30pins-pinout.png)\nAlimentation de l'ESP : 5 Volt 500mA (200mA mini)\n- Alimentation via les pins\n  - VIN de ESP au +5V\n  - G de ESP au -5V\n- Alimentation via la prise USB\n  - Alimentation possible avec un chargeur de téléphone connecté sur la prise USB \n\nInterface PiTinfo\n  - TXD =\u003e Entrée Téléinfo GPIO 4 (affichée dans l'onglet Système de l'interface Web) \n  - LED =\u003e GPIO 12 (Wifinfo.h : #define RED_LED_PIN    12)\n\nLED RGB\n  - Pin 1 -\u003e GPIO 18 (Wifinfo.h : #define RGB_LED_PIN    18)\n  - Pin 2 -\u003e GND\n  - Pin 3 -\u003e 3V de ESP (3.3V)\n\n## ESP8266 Wemos Mini D1 (Type LOLIN(WEMOS D1 mini))\n![esp8266 wemos gpio](docs/Esp8266-wemos-d1-mini-pinout.png)\n![wemos teleinfo](docs/Wemos-teleinfo.jpg)\n- Avec interface Wemos Teleinfo by Charles\n![wemos teleinfo 02](docs/Wemos-teleinfo-02.png)\n- Attension au sens (5V, TX, RX et D7 sur esp8266 gpio13)\n- Souder les connecteurs femelles sur l'interface\n- Souder les connecteurs males sur le Wemos Mini D1\n![wemos teleinfo 03](docs/Wemos-teleinfo-03.png)\n\nAlimentation de l'ESP : 5 Volt 500mA (200mA mini)\n- Alimentation via les pins\n  - 5V de ESP au +5V\n  - G de ESP au -5V\n- Alimentation via la prise USB\n  - Alimentation possible avec un chargeur de téléphone connecté sur la prise USB \n\nInterface Wemos Téléinfo (par défaut envoie des données sur GPIO 13)\n  - TIC-RX =\u003e Entrée Téléinfo GPIO 13 (affichée dans l'onglet Système de l'interface Web de Wifinfo)\n\nLED RGB\n- Pin 1 -\u003e GPIO14 (D5)\n- Pin 2 -\u003e GND\n- Pin 3 -\u003e 3V de ESP (3.3V)\n\n## ESP32 Wemos Mini D1\n![esp8266 wemos gpio](docs/ESP32-wemos-d1-mini-pinout.png)\n![wemos esp32 teleinfo](docs/Wemos-esp32-teleinfo.png)\n![wemos esp32 teleinfo 02](docs/Wemos-esp32-teleinfo-02.png)\n\nAlimentation de l'ESP : 5 Volt 500mA (200mA mini)\n- Alimentation via la prise USB\n  - Alimentation possible avec un chargeur de téléphone connecté sur la prise USB \n\nInterface Wemos Téléinfo\n  - TIC-RX =\u003e Entrée Téléinfo GPIO 23 (affichée dans l'onglet Système de l'interface Web de Wifinfo)\n\nLED RGB\n- Pin 1 -\u003e GPIO18\n- Pin 2 -\u003e GND\n- Pin 3 -\u003e 3V de ESP (3.3V)\n\n# Hardware compatible\nWifinfo n'est pas testé pour tous les modèles ESP32 mais est censé fonctionner\n\nL'onglet système donne l'entrée pour connecter l'interface Teleinfo\n\nSi le module possède 3 entrées série, Serial2 est utilisée pour la réception (RX2)\n\nSi le module possède 2 entrées série, Serial1 est utilisée pour la réception (RX1)\n\n|          | Name | ESP32 | ESP32S2 | ESP32S3 | ESP32C2 | ESP32C3 | ESP32C6 | ESP32H2 | ESP32P4 |\n|----------|------|-------|---------|---------|---------|---------|---------|---------|---------|\n| UART1 RX | RX1  | 26    | 11      | 15      | 10 ?    | 4       | 4 ?     | 0 ?     | 11 ?    |\n| UART1 TX | TX1  | 27    | --      | 16      | 18 ?    | --      | 5 ?     | 1 ?     | 10 ?    |\n| UART2 RX | RX2  | 23    | --      | 11      | --      | --      | --      | --      | --      |\n| UART2 TX | TX2  | --    | --      | --      | --      | --      | --      | --      | --      |\n\n- Serial1 : RX1, TX1\n- Serial2 : RX2, TX2\n- '--' : n'existe pas\n- Information extraite de .arduino15/packages/esp32/hardware/esp32/3.1.1/cores/esp32/HardwareSerial.h\n\n# Interface compteur Linky by hallard \n![interface linky](docs/schema-interface-linky.png)\nAttention, les BS170 que j'ai reçu avait un brochage inversé S-G-D (au lieu de D-G-S) ça ne fonctionnait pas !!!\n- C'est reconnaissable, la tension entre Drain et Source était de 0,6V alors que la grille était à zéro.\n\nPour un linky en mode standard, il faut peut être passer la valeur de la résistance R1 à 1k.\n\nSi vous ne voulez vous lancer dans la réalisation de l'interface il existe plusieurs modèles\n- Faites une recherche 'PiTInfo from Charles' et choisissez celle qui correspond le mieux. Il ne vous restera plus qu'à la connecter sur la bonne entrée qui est indiquée dans l'onglet système\n\nESP (ESP8266 or ESP32) Input specifications (Entrée Teleinfo):\n- Niveau bas : Tension inférieure à Vil (max) = 0.25 * 3.3 = 0.825V\n- Niveau Haut : Tension supérieure à Vih (min) = 0.75 * 3.3 = 2.475V\n\nTest de l'interface:\n- La LED TIC doit être éteinte (Tension en Drain et Source environ 3.3 Volts)\n- En reliant l'entrée 1 à GND et 2 à 3.3V la LED TIC doit s'allumer (Tension en Drain et Source environ 0 Volt)\n- Avec une tension variant entre 0V et 3.3V on respecte bien les spécifications ESP\n\nConnexions au compteur Linky (il n'y a pas de sens, on peut inverser)\n- Connecter Teleinfo 1 et sur I1 du compteur\n- Connecter Teleinfo 2 et sur I2 du compteur\n\nConnexions à Serial2 de ESP32 WROOM\n- GND : GND de ESP (GND) \n- +V  : 3V  de ESP (3.3V)\n- RXD : Entrée Teleinfo de l'ESP\n\nL'Entrée Teleinfo de l'ESP est affichée dans l'onglet [Système](docs/Wifinfo-systeme.png) de l'interface Web\n- Compiler, téléverser le Croquis, Uploader le répertoire data,\n- Aller sur l'interface Web dans l'onglet Système' : la ligne 'Entrée Téléinfo' vous donnera le GPIO à connecter\n\nESP32 : L'entrée Teleinfo est RX2 si Serial2 existe sinon c'est RX1 (Voir tableau ci-dessus)\n- Linux voir \u003chome_dir\u003e.arduino15/packages/esp32/hardware/esp32/3.3.7/cores/esp32/HardwareSerial.h\n\nESP12E : L'entrée Teleinfo est GPIO4\n\n# RGB LED 5mm WS2812B\n![RGB LED WS2812B](docs/WS2812-5mm-Clear-rgb-led.jpg)\n- Pin 1 -\u003e Data : GPIO14 (D5) pour ESP8266, GPIO 14 pour ESP32)\n- Pin 2 -\u003e GND\n- Pin 3 -\u003e 3V de ESP (3.3V)\n\nWarning : Le WS2812B est RGB mais certains sont GRB (dans ce cas il faut adapter la déclaration dans Wifinfo.ino):\n- Wifinfo.ino WS2812B **RGB** :\n  - NeoPixelBus\u003c**NeoRgbFeature**, Neo400KbpsMethod\u003e rgb_led(1, RGB_LED_PIN);\n- Wifinfo.ino WS2812B **GRB**\n  - NeoPixelBus\u003c**NeoGrbFeature**, Neo400KbpsMethod\u003e rgb_led(1, RGB_LED_PIN);\n- A la mise sous tension vous devez avoir successivement la led Rouge puis Verte, puis bleue. Si ce n'est pas le cas il faut changer la déclaration de rgb_led dans Wifinfo.ino\n\n# Compilation / Téléversement\nUtiliser Arduino IDE V1.8.18 / V1.8.19\nWarning : Déconnecter l'interface Linky du RX de l'ESP\n\n- Ajout des types de carte 'ESP32-WROOM-DA Module' et 'Lolin(WEMOS) D1 mini (clone)'\n\n  - Fichier-\u003ePreferences : URL de gestionnaire de cartes supplémentaires (virgule comme séparateur pour plusieurs URL)\n    - Ajouter http://arduino.esp8266.com/stable/package_esp8266com_index.json \n    - https://espressif.github.io/arduino-esp32/package_esp32_index.json\n    - Cliquer sur OK.\n\n  - Outils-\u003eType de carte 'xxxx'-\u003eGestionnaire de carte\n    - Filtrer esp8266\n    - esp8266 by ESP8266 community v3.1.2\n    - Cliquer sur Installer\n\n  - Outils-\u003eType de carte 'xxxx'-\u003eGestionnaire de carte\n    - Filtrer esp32\n    - esp32 by Espressif Systems : Sélectionner la version **v3.1.1** (**ne pas prendre une version supérieure**)\n    - Cliquer sur Installer\n\n  - Outils-\u003e Type de carte 'xxxx'-\u003eESP32 Arduino\n    - Sélectionner **ESP32-WROOM-DA Module** ou **Lolin(WEMOS) D1 mini (clone)**\n\n  - Outils-\u003ePort (il faut que l'ESP soit connecté à l'ordinateur)\n    - Sélectionner le port\n\n- Paramètres de compilation\n  - ESP8266 Wemos Mini D1\n    - CPU Frequency : **160 Mhz**\n    - Flash size : **4MB (FS 1MB / OTA :~ 1019KB)** \n  - ESP32-WROOM\n    - CPU Frequency : **160 Mhz**\n    - Partition scheme : **Default 4M with spiffs (1.2MB APP / 1.5MB SPIFFS)**\n\n- Ajout Arduino ESP8266 filesystem uploader v0.5.0\n  - Télécharger https://github.com/esp8266/arduino-esp8266fs-plugin/releases/download/0.5.0/ESP8266FS-0.5.0.zip\n  - Décompresser l'outils dans le répertoire Arduino ( Le répertoire doit être \u003chome_dir\u003e/Arduino/tools/ESP8266FS/tool/esp8266fs.jar)\n  - Redémarrer Arduino IDE\n  - Dans le menu Outils vous devez avoir 'ESP8266 Sketch Data Upload'\n\n- Ajout ESP32 Sketch Data Upload v2.0.7\n  - Télécharger https://github.com/lorol/arduino-esp32fs-plugin/releases/download/2.0.7/esp32fs.zip\n  - Décompresser l'outils dans le répertoire Arduino ( Le répertoire doit être \u003chome_dir\u003e/Arduino/tools/ESP32FS/tool/esp32fs.jar)\n  - Redémarrer Arduino IDE\n  - Dans le menu Outils vous devez avoir 'ESP32 Sketch Data Upload'\n![Arduino IDE ESP32 Sketch Data Upload](docs/Arduino-ESP32-Sketch-Data-Upload.png)\n\n- Ajout de la librairie LibTeleinfo\n  - Depuis https://github.com/Duglof/LibTeleinfo/tree/esp32\n  - Choisir Code-\u003eDownload ZIP (Choisir le répertoire \u003chome_dir\u003e/Arduino/libraries)\n  - Décompresser le ZIP dans ce répertoire\n\n- Ajout de la librairie ESP32WebServer \n  - Depuis https://github.com/Pedroalbuquerque/ESP32WebServer\n  - Choisir Code-\u003eDownload ZIP (Choisir le répertoire \u003chome_dir\u003e/Arduino/libraries)\n  - Décompresser le ZIP dans ce répertoire\n\n- Ajout des autres librairies nécessaires\n  - Syslog-master\n    - Decompresser \u003chome_dir\u003eArduino/libraries/LibTeleinfo/librairie/Syslog-master.zip dans \u003chome_dir\u003eArduino/libraries\n  - NeoPixelBus_by_Makuna V2.8.4 : l'installer depuis l'Arduino IDE\n  - PubSubClient V2.8\n    - Telecharger pubsubclient.zip from https://github.com/knolleary/pubsubclient/tree/master\n    - Decompresser dans \u003chome_dir\u003eArduino/libraries\n \n- Ouvrir le projet Wifinfo\n  - Fichiers-\u003eExemples-\u003eLibTeleinfo\n  - Sélectionner 'Wifinfo'\n\n- Compilation\n  - Croquis-\u003eCompiler\n\n- Téléversement (Il faut obligatoirement ces deux actions !!!)\n  - 1 - **Outils-\u003eESP32 Sketch Data Upload** (cela téléverse le contenu du répertoire data du projet Wifinfo)\n    - Choisir le format SPIFFS et cliquer sur OK\n![Arduino IDE ESP32 Sketch Data Upload SPIFFS](docs/ESP32-Sketch-Data-Upload-Choisir-SPIFFS.png)\n    - Si erreur 'Timed out waiting for packet header\n      - Quand vous voyez “Connecting…” (ou juste avant), appuyez et maintenez le 'BOOT Button' (pb rencontré avec ESP32 WROOM 32D)\n    - Si Erreur error: esptool not found (arduino ide installé sur linux mint)\n      - **Ne pas prendre une version supérieure à la v5.2.0** car elle ne contiendra plus esptool.py\n      - Prendre la version d'esptool V5.2.0 depuis : https://github.com/espressif/esptool/archive/refs/tags/v5.2.0.zip\n      - Copier **esptool-5.2.0.zip** dans le dossier \u003chome_dir\u003e/.arduino15/packages/esp32/hardware/esp32/3.1.1/tools\n      - Click droit sur **esptool-5.2.0.zip** et faire extraire ici\n      - Renommer le dossier créé **esptool-5.2.0** en **esptool**\n      - Vérification : Ouvrez une fenetre terminal\n        - cd .arduino15/packages/esp32/hardware/esp32/3.1.1/tools/esptool\n        - ./esptool.py\n        - esptool V5.2.0 ...\n\n  - 2 - **Croquis-\u003eTéléverser**\n\n# Tests\n## Test avec Jeedom\nJeedom V4.4.19 : Plugin Teleinfo by Noyax37 V4.8.7\nWinfinfo V3.0.0 version validée Linky Mode Historique\nWinfinfo V3.0.0 version validée Linky Mode Standard by Noyax37\n\nJeedom Plugin Teleinfo : compteur heures pleines / heures creuses\n- Sur Jeedom\n  - Ajouter le plugin Téléinfo\n- Sur Wifinfo : Onglet configuration\n  - Port de votre jeedom : 80\n  - Serveur Jeedom : IP de votre Jeedom: Exemple 192.168.1.88\n  - URL : /plugins/teleinfo/core/php/jeeTeleinfo.php\n  - Clé API : La clé API du plugin teleinfo : Jeedom / Système / Configuration : Onglet API : Clé API : Téléinfo\n  - Enregistrer\n  - Redémarrer Wifinfo (Onglet Avancée)\n\n![jeedom hphc](docs/Jeedom_Linky_HPHC.png)\n\n![jeedom teleinfo desktop](docs/Jeedom_Teleinfo_Plugin.png)\n\n## Test Mqtt avec Home Assistant (2026.1.3)\n- Sur Wifinfo:\n  - Paramètre Mqtt\n    - IP de votre Home Assistant: exemple 192.168.1.32\n    - Fréquence : 1 minute\n    - Port par défaut : 1883\n    - user/password : ceux de Mqtt Mosquito\n  - Paramètre système : mode historique 1200 bauds\n  - Redémarrer Wifinfo\n  - Aucune valeur à configurer : quel que soit votre abonnement, wifinfo envoie toutes les infos qu’il reçoit du Linky\n\n- Sur Home Assisant:\n  - Installation de Mqtt Mosquitto et création de son utilisateur\n  - Ajouter dans configuration.yaml la déclaration suivante (pour un abonnement Heures Creuses)\n```\n# Linky : Sensor Mqtt\nmqtt:\n    sensor:\n        # Linky : Puissance apparente PAPP \n        - state_topic: \"TIC/data/PAPP\"\n          name: \"Linky PAPP\"\n          unit_of_measurement: \"W\"\n          state_class: \"measurement\"\n          device_class: \"power\"\n          unique_id: linky_papp\n\n        # Linky : Intensité Instantanée \n        - state_topic: \"TIC/data/IINST\"\n          name: \"Linky IINST\"\n          unit_of_measurement: \"A\"\n          state_class: measurement\n          device_class: current\n          unique_id: linky_iinst\n\n        # Linky : Intensité Maximale \n        - state_topic: \"TIC/data/IMAX\"\n          name: \"Linky IMAX\"\n          unit_of_measurement: \"A\"\n          state_class: measurement\n          device_class: current\n          unique_id: linky_imax\n\n        # Linky : Total Heures creuses HCHC (Les index du Linky sont en WH)\n        - state_topic: \"TIC/data/HCHC\"\n          name: \"Linky HCHC\"\n          unit_of_measurement: \"Wh\"\n          device_class: energy\n          state_class: total_increasing\n          unique_id: linky_hchc\n      \n        # Linky : Total Heures pleines HCHP (Les index du Linky sont en WH)\n        - state_topic: \"TIC/data/HCHP\"\n          name: \"Linky HCHP\"\n          unit_of_measurement: \"Wh\"\n          device_class: energy\n          state_class: total_increasing\n          unique_id: linky_hchp\n\n        # Linky : PTEC : Permet de savoir si l’on est en HP ou HC\n        # ne pas mettre state_class: \"measurement\" : state_class n’est autorisé que pour des nombres (W, kWh, V, A…).\n        - state_topic: \"TIC/data/PTEC\"\n          name: \"Linky Tarif\"\n          unique_id: linky_ptec\n```\n  - Redémarrer Home Assistant\n  - Dans le module Energie, ajouter  (à vous d’ajuster)\n  - Consommation du réseau:\n    - Linky HCHC avec un prix statique à 0.1636\n    - Linky HCHP avec un prix statique à 0.2081\n  - Puissance du réseau:\n    - Linky PAPP\n  - Résultat dans la Vue Automatique en cliquant sur Linky HCHP\n![Test](docs/HomeAssistant-Energie-0.png)\n  - Résultat du module Energie Standard:\n![Test](docs/HomeAssistant-Energie-1.png)\n![Test](docs/HomeAssistant-Energie-2.png)\n\n\n- Visualisation des données reçues par Mqtt Mosquito avec Mqtt explorer installé sur votre ordinateur personnel\n  - IP de votre Home Assistant: exemple 192.168.1.32\n  - Port par défaut : 1883\n  - User/password : ceux de Mqtt Mosquito\n  - Se connecter \n![Test](docs/Wifinfo-mqtt.png)\n\n# LED RGB\nSi LED RGB est coché dans Configuration / Avancé alors:\n\n| Evènement |  LED RGB | Commentaire |\n|---------|--------|---------|\n| Wifi non connecté | COLOR_ORANGE | Clignotement, Timeout 5 secondes |\n| Attente OTA | COLOR_MAGENTA | Cligontement, 10 fois|\n| Teleinfo Ajout   | COLOR_GREEN| |\n| Teleinfo Mise à jour | COLOR_MAGENTA | |\n\n# Téléinformation\nWifinfo : Onglet Téléinformation\nLinky Mode Historique en Heure Pleine/Heure Creuse\n![TELEINFORMATION HPHC](docs/Linky-mode-historique-Teleinformation-01.png)\n\n# Mise à jour via WIFI (OTA : Over-The-Air)\nWifinfo est prévu pour être mis à jour via le réseau Wifi sans avoir besoin de connecter directement la carte ESP sur le port de l'ordinateur\n\nMise à jour du croquis\n- Il n'y a rien à modifier\n- Sélectionner le port OTA dans Arduino IDE (comme ci-dessous)\n- Exécuter ensuite 'Croquis/Téléverser'\n- Entrer le mot de passe OTA (qui est défini dans Configuration Avancée)\n- Le Croquis sera mis à jour via le réseau Wifi\n\nMise à jour des data (Fichiers)\n- Aller sur le page de la configuration avancée de Wifinfo\n- Supprimer le mote de passe OTA\n- Mettre OTA port à 3232\n- Sélectionner le port OTA dans Arduino IDE\n\n- ![OTA Adruino IDE port](docs/Wifinfo-OTA-Sketch-Data-Upload-01.png) \n- Exécuter ensuite 'Outils/ESP32 Sketch Data Upload', ils seront effectués via le réseau Wifi\n\n- ![OTA Adruino IDE Sketch Data Upload](docs/Wifinfo-OTA-Sketch-Data-Upload-02.png)\n \n- Restaurer ensuite le port et le mot de passe initial pour des raisons de sécurité\n \n# Debug avec Syslog\n- Compiler Wifinfo avec le #define SYSLOG (Winfinfo.h)\n- Configurer Wifinfo\n  - Onglet Configuration\n  - Déployer ‘Avancée’\n  - Rsyslog serveur (IP ou Nom DNS) : Entrer l’IP de votre machine ou vous installerez le logiciel socat (Windows ou Linux) \n  - Rsyslog port : 514\n- Installer socat (sur une machine de votre réseau local)\n- Ouvrir une fenêtre terminal et lancer 'socat -u UDP-RECV:514 STDOUT'\n  - sudo /usr/bin/socat -u UDP-RECV:514 STDOUT (exemple sous linux)\n  - Le fenêtre Terminal liste alors tous les messages debug de Wifinfo\n![socat](docs/Wifinfo-socat-messages.png)\n\n# Debug des exceptions\n- Ce type de trace ne s'obtient que dans la fenêtre Outils/Moniteur série de l'IDE Arduino\n- On ne l'a pas avec SYSLOG\n# Exemple de message:\n\nStack smashing protect failure!\n\n\nBacktrace: 0x40082661:0x3ffb20d0 0x4008f199:0x3ffb20f0 0x40082672:0x3ffb2110 0x400d409d:0x3ffb2130 0x400e4531:0x3ffb2190 0x400d3958:0x3ffb21b0 0x400e942c:0x3ffb2270 0x4008fe12:0x3ffb2290\n\n\n\n\nELF file SHA256: a12af395d\n\nRebooting...\n\n# Outils à installer\n\nIl faut installer ESPExceptionDecoder V2.0.3\n- https://github.com/me-no-dev/EspExceptionDecoder/releases/download/2.0.3/EspExceptionDecoder-2.0.3.zip\n- Télécharger le zip dans Arduino/tools\n- Faire Extraite ici\n- Il apparaît dans Aduino IDE 1.8.18 Outils/ESP Exception Decoder\n\n# Utilisation\n- Il faut absolument compiler votre Croquis (sinon il vous demandera de sélection un fichier elf)\n- Ouvrir le fenêtre Outils/ESP Exception Decoder (qui s'ouvrira sans poser de question)\n- Et coller dans cette fenêtre le message ci-dessus\n- Vous obtiendrez le décodage ci-dessous\n![ESP Exception Decodeur](docs/Arduino-ESP32-Exception-Decoder.png)\n- C'est plus clair, le problème est dans Wifinfo ligne 741 !!!\n\n# Réalisation (maquette)\n![Wifinfo réalisation](docs/Wifinfo-realisation.jpg)\n\n## Matériel\n\n|  Matériel                                         |  Photo                                               | Commentaire                    |\n|---------------------------------------------------|------------------------------------------------------|--------------------------------|\n| Boitier étanche 100x68x50mm                       | [Boitier](docs/Materiel-Boitier.png)                 |                                |\n| Câble + prise secteur                             |                                                      |                                |\n| 4 vis 3mmx15mm                                    |                                                      |                                |\n| 4 colonnettes 20mm mâle femelle                   |                                                      |                                |\n| 4 écrous plastique 3mm                            |                                                      |                                |\n| Support fusible 5x20mm avec couvercle transparent | [Support fusible](docs/Materiel-support-fusible.png) |                                |\n| Fusible 5x20mm 0.2A                               |                                                      |                                |\n| PCB double face vert 50x70mm                      | [PCB 50x70](docs/Materiel-pcb.png)                   |                                |\n| PCB double face vert 60x80mm                      | [PCB 60x80](docs/Materiel-pcb.png)                   |                                |\n| Support de LED 5mm                                |                                                      |                                |\n| Bornier 5,08 deux pôles (x2)                      | [Bornier 5.08 2P](docs/Materiel-bornier-5.08-2P.png) |                                |\n| Divers : fil électrique                           |                                                      |                                |\n| Divers : soudure D 1mm                            |                                                      |                                |\n| Gaine thermo rétractable 2mm                      |                                                      |                                |\n| -                                                 |                                                      |                                |\n| ESP32 WROOM 32S 30 broches (ici USB-C)            |                                                      |                                |\n| Hi-Link HLK-PM01 AC 100-240V 5V DC 0.6A           |                                                      |                                |\n| Opto-coupleur LTV-814 DIP-4                       |                                                      |                                |\n| BS170 TO-92                                       |                                                      | Attention au sens Drain Source |\n| LED RVB puce Ws2812 5mm ronde claire              |                                                      | Les miennes étaient GRB        |\n| 2 x Résistance 10K 1/4w                           |                                                      |                                |\n| 2 x Résistance 1K 1/4w                            |                                                      |                                |\n| 1 LED 3mm blanche                                 |                                                      |                                |\n\n- L'utilisation d'un multimètre est conseillée\n- Il n'y a pas de sens pour I1 et I2 : on peut les inverser\n\n## Fonctionnement des LEDS\n\n- Test préliminaires :\n  - Si I1 et I2 ne sont pas connectés, la LED blanche de l'interface doit être éteinte\n  - En connectant I1 au +3.3V et I2 au GND, la LED blanche de l'interface doit s'allumer\n\n- La LED RVB cliqnote Rouge, puis Vert, puis Bleu à la mise sous tension\n  - Si ce n'est pas dans cet ordre changer la déclaration de la led dans Wifinfo.ino\n  - Mais c'est sans importance pour le fonctionnement\n- La LED blanche de l'interface est presque toujours allumée avec de brèves extinctions\n- La LED RVB fait ensuite plusieurs clignotement Violets (initialisation OTA)\n- La LED RVB fait ensuite un clignotement à chaque réception de trame (toutes les 3 ou 4 secondes en mode historique).\n\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduglof%2Flibteleinfo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduglof%2Flibteleinfo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduglof%2Flibteleinfo/lists"}