{"id":1401,"date":"2022-01-03T14:46:00","date_gmt":"2022-01-03T13:46:00","guid":{"rendered":"https:\/\/domo.rem81.com\/?p=1401"},"modified":"2024-03-29T10:15:32","modified_gmt":"2024-03-29T09:15:32","slug":"ha-teleinformation-linky-mode-historique","status":"publish","type":"post","link":"https:\/\/domo.rem81.com\/index.php\/2022\/01\/03\/ha-teleinformation-linky-mode-historique\/","title":{"rendered":"HA-Teleinformation Linky-Mode Historique"},"content":{"rendered":"\n\n\n\n<h1 class=\"wp-block-heading\">Intro<\/h1>\n\n\n\n<p>C&rsquo;est fait, j&rsquo;ai enfin c\u00e2bl\u00e9 la t\u00e9l\u00e9 information de mon compteur Linky. Rien de bien m\u00e9chant il suffit de se raccorder aux bornes i1\/i2 du linky, le plus d\u00e9licat fut le passage du c\u00e2ble de 60 ml entre le compteur Linky et mon tableau \u00e9lectrique.<\/p>\n\n\n\n<p>Cet article traite le mode \u00ab\u00a0Historique\u00a0\u00bb du linky, il peut \u00e9galement communiqu\u00e9 en mode \u00ab\u00a0Standard\u00a0\u00bb plus \u00e9labor\u00e9, voir <a href=\"https:\/\/domo.rem81.com\/ha-teleinformation-linky-mode-standard\/\" data-type=\"URL\" data-id=\"https:\/\/domo.rem81.com\/ha-teleinformation-linky-mode-standard\/\" target=\"_blank\" rel=\"noreferrer noopener\">mon article<\/a> sur le sujet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"592\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-2-1-1024x592.png\" alt=\"\" class=\"wp-image-1236\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-2-1-1024x592.png 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-2-1-300x173.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-2-1-768x444.png 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-2-1.png 1068w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Raccordement du Linky<\/figcaption><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Pr\u00e9 requis<\/h1>\n\n\n\n<p class=\"has-text-align-left\">Mes fichiers \u00ab\u00a0.yaml\u00a0\u00bb sont regroup\u00e9s dans un dossier \u00ab\u00a0config\/packages\u00a0\u00bb. J&rsquo;utilise la directive \u00ab\u00a0<a href=\"https:\/\/www.home-assistant.io\/docs\/configuration\/splitting_configuration\/\" target=\"_blank\" rel=\"noreferrer noopener\">!include_dir_named packages<\/a>\u00a0\u00bb dans mon \u00ab\u00a0configuration.yaml\u00a0\u00bb tr\u00e8s pratique pour organiser son HA.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Choix du mat\u00e9riel<\/h1>\n\n\n\n<p>Les informations transmises par le Linky ne sont pas directement exploitables par un ESP,  elles n\u00e9cessitent un adaptateur, vous trouverez beaucoup de mod\u00e8les sur le Net, perso j&rsquo;ai choisi la facilit\u00e9 en achetant un module <a href=\"https:\/\/www.tindie.com\/products\/hallard\/wemos-teleinfo\/\" data-type=\"URL\" data-id=\"https:\/\/www.tindie.com\/products\/hallard\/wemos-teleinfo\/\">Wemos Teleinfo<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn.tindiemedia.com\/images\/resize\/to67tjeZxaZZo3QPTOUFgSttoVs=\/p\/fit-in\/1032x688\/filters:fill(fff)\/i\/products\/25467\/2021-11-24-23-41-35\/2021-11-24T17_07_47.675Z-WeMos-TIC-assembled-top.png?1637747448\" alt=\"WeMos Teleinfo 2\"\/><\/figure>\n\n\n\n<p>C&rsquo;est un module pas tr\u00e8s cher, correctement \u00e9tudi\u00e9 et bien fini, compatible avec les esp8266 et ESP32 Mini, qui dispose \u00e9galement d&rsquo;une Led WS2812 RGB programmable, d&rsquo;un connecteur I2C disponible pour un afficheur OLED ou autres capteurs compatibles, et d&rsquo;une led indiquant l&rsquo;\u00e9tat de la connexion avec le Linky qui se raccorde sur le bornier vert.<\/p>\n\n\n\n<p>Perso j&rsquo;utilise un <a rel=\"noreferrer noopener\" href=\"https:\/\/www.amazon.fr\/AZDelivery-Microcontr%C3%B4leur-ESP32-WROOM-32-compatible-incluant\/dp\/B08BTLYSTM\/ref=sr_1_11?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;crid=2ZGQUFG671BZT&amp;keywords=esp32+mini&amp;qid=1641795150&amp;s=computers&amp;sprefix=esp32+mini%2Ccomputers%2C815&amp;sr=1-11\" data-type=\"URL\" data-id=\"https:\/\/www.amazon.fr\/AZDelivery-Microcontr%C3%B4leur-ESP32-WROOM-32-compatible-incluant\/dp\/B08BTLYSTM\/ref=sr_1_11?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;crid=2ZGQUFG671BZT&amp;keywords=esp32+mini&amp;qid=1641795150&amp;s=computers&amp;sprefix=esp32+mini%2Ccomputers%2C815&amp;sr=1-11\" target=\"_blank\">L&rsquo;ESP32 Mini<\/a> ou <a href=\"https:\/\/www.amazon.fr\/XTVTX-ESP-WROOM-32-d%C3%A9veloppement-Bluetooth-Compatible\/dp\/B093GQGJCV\/ref=pd_sbs_sccl_3\/260-2074638-0290232?pd_rd_w=WK3Ci&amp;pf_rd_p=8f6bedf0-41b7-480e-afe0-310ce0bb46fc&amp;pf_rd_r=V77JP27APEHP6PV0V5D7&amp;pd_rd_r=9bf4107e-a582-4bf1-9483-190b9df42331&amp;pd_rd_wg=xyHdT&amp;pd_rd_i=B093GQGJCV&amp;psc=1\" data-type=\"URL\" data-id=\"https:\/\/www.amazon.fr\/XTVTX-ESP-WROOM-32-d%C3%A9veloppement-Bluetooth-Compatible\/dp\/B093GQGJCV\/ref=pd_sbs_sccl_3\/260-2074638-0290232?pd_rd_w=WK3Ci&amp;pf_rd_p=8f6bedf0-41b7-480e-afe0-310ce0bb46fc&amp;pf_rd_r=V77JP27APEHP6PV0V5D7&amp;pd_rd_r=9bf4107e-a582-4bf1-9483-190b9df42331&amp;pd_rd_wg=xyHdT&amp;pd_rd_i=B093GQGJCV&amp;psc=1\" target=\"_blank\" rel=\"noreferrer noopener\">ici<\/a> , en effet l&rsquo;ESP8266 est trop juste en puissance de calcul si on utilise l&rsquo;int\u00e9gration  ESPHOME plus un afficheur, j&rsquo;ai gal\u00e9r\u00e9 avec, je ne le recommande pas, le constructeur du wemos t\u00e9l\u00e9info non plus d&rsquo;ailleurs.<\/p>\n\n\n\n<p>L&rsquo;ESP32 Mini est un ESP32 au format ESP8266 D1, pratique si l&rsquo;on souhaite utiliser des cartes d&rsquo;extension, mais avec une puissance de calcul et de traitement bien sup\u00e9rieure.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Descriptif fonctionnel<\/h1>\n\n\n\n<p>Les compteurs Linky disposent de 2 modes de t\u00e9l\u00e9information :<br>\u2022 Le mode Historique, qui correspond \u00e0 l&rsquo;ancien mode des compteurs \u00e9lectroniques.<br>\u2022 Le mode Standard, qui est le nouveau format et qui comporte plus d&rsquo;informations.<\/p>\n\n\n\n<p>Vous trouverez les informations d\u00e9taill\u00e9es dans le document  Enedis suivant:<\/p>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-e368d9a1-a8fa-4365-9421-464d20a1165c\" href=\"http:\/\/192.168.0.211\/wp-content\/uploads\/2022\/01\/Enedis-NOI-CPT_54E-1.pdf\">Enedis-NOI-CPT_54E<\/a><a href=\"http:\/\/192.168.0.211\/wp-content\/uploads\/2022\/01\/Enedis-NOI-CPT_54E-1.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-e368d9a1-a8fa-4365-9421-464d20a1165c\">T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<p>J&rsquo;ai utilis\u00e9 dans un premier temps le mode historique du Linky, puis je suis pass\u00e9 au mode standard, le nombre d&rsquo;informations disponibles est plus \u00e9lev\u00e9s, voir mon article sur le sujet.<\/p>\n\n\n\n<p>Le module WEMOS Teleinfo est compatible, le changement de mode passe obligatoirement par une demande aupr\u00e8s de votre fournisseur d&rsquo;\u00e9nergie qui relaye vers Enedis.<\/p>\n\n\n\n<p>Concernant l&rsquo;int\u00e9gration dans HA, pas de probl\u00e8me particulier gr\u00e2ce \u00e0 <a rel=\"noreferrer noopener\" href=\"https:\/\/www.esphome.io\/components\/sensor\/teleinfo.html\" target=\"_blank\">\u00ab\u00a0teleinfo\u00a0\u00bb<\/a> disponible sur ESP Home, il est compatible avec les deux modes, les diff\u00e9rences \u00e9tant dans la vitesse de transmission et la validation du mode historique ou pas:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"228\" height=\"258\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-23.png\" alt=\"\" class=\"wp-image-1420 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"has-large-font-size\">Mode Historique<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"172\" height=\"173\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-24.png\" alt=\"\" class=\"wp-image-1421 size-full\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-24.png 172w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-24-150x150.png 150w\" sizes=\"auto, (max-width: 172px) 100vw, 172px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"has-large-font-size\">Mode Standard<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Informations collect\u00e9es<\/h2>\n\n\n\n<p>Pour information le linky, dans l&rsquo;entit\u00e9 \u00ab\u00a0PAPP\u00a0\u00bb, remonte des VoltAmp\u00e9re et non des Watt\u00a0\u00bb.<\/p>\n\n\n\n<p>Je collecte les \u00e9nergies Heures creuses \u00ab\u00a0HCHC\u00a0\u00bb et heures  pleines\u00a0\u00bbHPHC\u00a0\u00bb en wh, je les additionne dans un \u00ab\u00a0template\u00a0\u00bb (Linky HPHC KWH) et divise par 1000 pour obtenir des kWh. C&rsquo;est cette entit\u00e9 que j&rsquo;utilise dans les \u00ab\u00a0utility meter\u00a0\u00bb de HA pour calculer mes consommations journali\u00e8re, semaine, mois, ann\u00e9e.<\/p>\n\n\n\n<p>Si vous avez un seul tarif, il faut remonter le tag \u00ab\u00a0base \u00e0 la place de HCHP et HPHP\u00a0\u00bb<\/p>\n\n\n\n<p>Je collecte \u00e9galement l&rsquo;intensit\u00e9 instantan\u00e9e \u00ab\u00a0IINST\u00a0\u00bb et l&rsquo;intensit\u00e9 souscrite \u00ab\u00a0ISOUSC\u00a0\u00bb, je calcule dans un \u00ab\u00a0Template\u00a0\u00bb \u00ab\u00a0Linky I\/Imax\u00a0\u00bb le ratio entre les deux en %, ce qui me donne une id\u00e9e de la r\u00e9serve d&rsquo;intensit\u00e9 disponible et plus tard, m&rsquo;en servir pour v\u00e9rifier si mon abonnement peut \u00eatre revue \u00e0 la baisse.<\/p>\n\n\n\n<p>L&rsquo;information PTEC nous indique si le tarif est en heure creuse ou heure pleine, variable utilis\u00e9e dans l&rsquo;automatisme de comptabilisation de l&rsquo;\u00e9nergie avec les \u00ab\u00a0utility_meter\u00a0\u00bb.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Code ESP <\/h3>\n\n\n\n<p>Si vous avez des difficult\u00e9s de flashage avec ESPHome, parcourez mon article <a rel=\"noreferrer noopener\" href=\"https:\/\/domo.rem81.com\/home-assistant_esp-home\/\" target=\"_blank\">https:\/\/domo.rem81.com\/home-assistant_esp-home\/<\/a> cela devrait vous aider.<\/p>\n\n\n\n<p>L&rsquo;afficheur utilise une police de caract\u00e8re \u00ab\u00a0Arial\u00a0\u00bb, vous pouvez t\u00e9l\u00e9charger le fichier arial.ttf <a rel=\"noreferrer noopener\" href=\"https:\/\/www.freefontspro.com\/fr\/14454\/arial.ttf\" data-type=\"URL\" data-id=\"https:\/\/www.freefontspro.com\/fr\/14454\/arial.ttf\" target=\"_blank\">ici<\/a> puis le transf\u00e9rer dans un dossier \u00ab\u00a0fonts\u00a0\u00bb de votre \u00ab\u00a0\/config\/esphome\u00a0\u00bb.  Bien entendu vous pouvez utiliser une autre police de caract\u00e9res, \u00ab\u00a0size\u00a0\u00bb d\u00e9termine la taille des caract\u00e8res.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"309\" height=\"638\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image.png\" alt=\"\" class=\"wp-image-1230\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image.png 309w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-145x300.png 145w\" sizes=\"auto, (max-width: 309px) 100vw, 309px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Double Tarif<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>substitutions:\n  device_name: esp124-tic\n  adress_ip: \"192.168.0.124\"\n  friendly_name: esp124\n  time_timezone: \"Europe\/Paris\"\n  \nesphome:\n  name: ${device_name}\n  platform: ESP32\n  board: mhetesp32minikit\n  platformio_options:\n    lib_deps: NeoPixelBus@2.6.0\n  on_boot:\n    then:\n      - light.control:\n          id: led1\n          brightness: 0.25\n          state: on\nwifi:\n  networks:\n    - ssid: !secret wifi_esp\n      password: !secret mdpwifi_esp\n      priority: 1\n    - ssid: !secret wifi\n      password: !secret mdpwifi\n      priority: 0\n  reboot_timeout: 5min\n\n  manual_ip:\n    static_ip: ${adress_ip}\n    gateway: 192.168.0.1\n    subnet: 255.255.255.0\n\n\n# Enable logging\nlogger:\n#  baud_rate: 0\n# Enable Home Assistant API\napi:\n\nota:\n\nweb_server:\n  port: 80\n\nfont:\n  - file: \"fonts\/arial.ttf\"\n    id: arial\n    size: 15\n\ni2c:\n  sda: GPIO21 #D2=pin 19\n  scl: GPIO22 #D1=pin 20\n  scan: True\n  id: bus_a\n  \n# \nuart:\n  id: uart_a\n  rx_pin: GPIO23\n#  tx_pin: GPIO1\n  baud_rate: 1200\n  parity: EVEN\n  data_bits: 7\n\nteleinfo:\n  id: myteleinfo\n  uart_id: uart_a\n  update_interval: 10s\n  historical_mode: true\n  \n# Led WS2812 RGB  \nlight:\n  - platform: partition\n    name: led1\n    id: led1\n    default_transition_length: 0s\n    segments:\n      - id: rgb_led\n        from: 0\n        to: 0\n\n  - platform: neopixelbus\n    num_leds: 1\n    pin: GPIO18\n    name: \"RGB strip\"\n    variant: ws2812\n    id: rgb_led\n    default_transition_length: 0s  \n\n\nsensor:\n  - platform: teleinfo\n    id: hchc\n    tag_name: \"HCHC\"     # Si un seul tarif mettre \"BASE\" dans le tag_name\n    name: \"Linky HC Wh\"  # Si un seul tarif: \"Linky base Wh\"\n    unit_of_measurement: \"Wh\"\n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n    \n  - platform: teleinfo  # A supprimer si un seul tarif\n    id: hchp\n    tag_name: \"HCHP\"\n    name: \"Linky HP Wh\"\n    unit_of_measurement: \"Wh\"\n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n \n  - platform: teleinfo\n    id: papp\n    tag_name: \"PAPP\"\n    name: \"Linky PAPP\"\n    unit_of_measurement: \"VA\"\n    device_class: \"power\"\n    state_class: \"measurement\"  \n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n    on_value:\n      - if:\n          condition:\n            sensor.in_range:\n              id: papp\n              below: 1000\n          then: \n            - light.control:\n                id: led1\n                red: 0%\n                green: 100% # vert\n                blue: 0%\n      - if:\n          condition:\n            sensor.in_range:\n              id: papp\n              above: 1000\n              below: 3000\n          then: \n            - light.control:\n                id: led1\n                red: 0%\n                green: 0% # bleu\n                blue: 100%\n      - if:\n          condition:\n            sensor.in_range:\n              id: papp\n              above: 3000\n          then: \n            - light.control:\n                id: led1\n                red: 100% #rouge\n                green: 0%\n                blue: 0%\n           \n    \n  - platform: teleinfo\n    id: isousc\n    tag_name: \"ISOUSC\"\n    name: \"Linky I Sousc\"\n    unit_of_measurement: \"A\"\n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n\n  - platform: teleinfo\n    id: iinst\n    tag_name: \"IINST\"\n    name: \"Linky I Inst\"\n    unit_of_measurement: \"A\"\n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n\n  - platform: teleinfo\n    id: imax\n    tag_name: \"IMAX\"\n    name: \"linky I Max\"\n    unit_of_measurement: \"A\"\n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n\n  - platform: template\n    name: \"Linky I\/Imax\"\n    id: i100\n    icon: mdi:flash\n    unit_of_measurement: \"%\"\n    accuracy_decimals: 0\n    lambda: |-\n      return (id(iinst).state\/id(isousc).state*100);\n\n  - platform: template\n    name: \"Linky HPHC KWH\"\n    id: hphc_kwh\n    icon: mdi:flash\n    unit_of_measurement: \"kWh\"\n    accuracy_decimals: 0\n    lambda: |-\n      return ((id(hchc).state+id(hchp).state)\/1000);\n      \n  - platform: homeassistant\n    name: \"HCHP J\"\n    unit_of_measurement: \"kWh\"\n    entity_id: sensor.energie_totale_linky_jour\n    id: hphcj\n\n  - platform: wifi_signal\n    id: wif\n    name: \"${friendly_name} WiFi Signal Sensor\"\n    update_interval: 60s\n    \n  - platform: uptime\n    id: uptime_seconds\n    name: \"${friendly_name} Uptime\"\n    update_interval: 60s\n    unit_of_measurement: s\n    accuracy_decimals: 0\n    force_update: false\n    icon: mdi:timer\n\ntext_sensor:\n  - platform: teleinfo\n    tag_name: \"OPTARIF\"\n    name: \"Linky OPTARIF\"\n    teleinfo_id: myteleinfo\n    \n  - platform: teleinfo\n    tag_name: \"PTEC\"\n    id: tarif\n    name: \"Linky PTEC\"\n    teleinfo_id: myteleinfo\n\n  - platform: template\n    name: \"${friendly_name} Uptime\"\n    update_interval: 60s\n    icon: mdi:clock-start\n    lambda: |-\n      int seconds = (id(uptime_seconds).state);\n      int days = seconds \/ (24 * 3600);\n      seconds = seconds % (24 * 3600);\n      int hours = seconds \/ 3600;\n      seconds = seconds % 3600;\n      int minutes = seconds \/  60;\n      seconds = seconds % 60;\n      if ( days ) {\n        return { (String(days) +\"d \" + String(hours) +\"h \" + String(minutes) +\"m \"+ String(seconds) +\"s\").c_str() };\n      } else if ( hours ) {\n        return { (String(hours) +\"h \" + String(minutes) +\"m \"+ String(seconds) +\"s\").c_str() };\n      } else if ( minutes ) {\n        return { (String(minutes) +\"m \"+ String(seconds) +\"s\").c_str() };\n      } else {\n        return { (String(seconds) +\"s\").c_str() };\n      }\n\n#Etat de la connection\nbinary_sensor:\n  - platform: status\n    name: \"${friendly_name} Status\"\n\nswitch:   \n  - platform: restart\n    name: \"${friendly_name} Restart\"\n\n\ndisplay:\n  - platform: ssd1306_i2c\n    model: \"SSD1306 128x64\"\n    address: 0x3C\n    brightness: 100%\n    lambda: |-\n      it.printf(0,0,id(arial),\"PuC=%.0f VA\",id(papp).state);\n      it.printf(0,15,id(arial),\"I Inst=%.0f A\",id(iinst).state);\n      it.printf(70,15,id(arial),\"-%.0f %%\",id(i100).state);\n      it.printf(0,30,id(arial),\"ConsoJ=%.0f kWh\",id(hphcj).state);\n      std::string tarif_ = id(tarif).state;\n      it.printf(0,45,id(arial), \"Tarif: %s\", tarif_.c_str());  \n      \n   <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Simple tarif:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>substitutions:\n  device_name: esp124-tic\n  adress_ip: \"192.168.0.124\"\n  friendly_name: esp124\n  time_timezone: \"Europe\/Paris\"\n  \nesphome:\n  name: ${device_name}\n  platform: ESP32\n  board: mhetesp32minikit\n  platformio_options:\n    lib_deps: NeoPixelBus@2.6.0\n  on_boot:\n    then:\n      - light.control:\n          id: led1\n          brightness: 0.25\n          state: on\nwifi:\n  networks:\n    - ssid: !secret wifi_esp\n      password: !secret mdpwifi_esp\n      priority: 1\n    - ssid: !secret wifi\n      password: !secret mdpwifi\n      priority: 0\n  reboot_timeout: 5min\n\n  manual_ip:\n    static_ip: ${adress_ip}\n    gateway: 192.168.0.1\n    subnet: 255.255.255.0\n\n\n# Enable logging\nlogger:\n#  baud_rate: 0\n# Enable Home Assistant API\napi:\n\nota:\n\nweb_server:\n  port: 80\n\nfont:\n  - file: \"fonts\/arial.ttf\"\n    id: arial\n    size: 15\n\ni2c:\n  sda: GPIO21 #D2=pin 19\n  scl: GPIO22 #D1=pin 20\n  scan: True\n  id: bus_a\n  \n# \nuart:\n  id: uart_a\n  rx_pin: GPIO23\n#  tx_pin: GPIO1\n  baud_rate: 1200\n  parity: EVEN\n  data_bits: 7\n\nteleinfo:\n  id: myteleinfo\n  uart_id: uart_a\n  update_interval: 10s\n  historical_mode: true\n  \n# Led WS2812 RGB  \nlight:\n  - platform: partition\n    name: led1\n    id: led1\n    default_transition_length: 0s\n    segments:\n      - id: rgb_led\n        from: 0\n        to: 0\n\n  - platform: neopixelbus\n    num_leds: 1\n    pin: GPIO18\n    name: \"RGB strip\"\n    variant: ws2812\n    id: rgb_led\n    default_transition_length: 0s  \n\n\nsensor:\n  - platform: teleinfo\n    id: base\n    tag_name: \"BASE\"     \n    name: \"Linky base Wh\"  \n    unit_of_measurement: \"Wh\"\n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n    \n\n  - platform: teleinfo\n    id: papp\n    tag_name: \"PAPP\"\n    name: \"Linky PAPP\"\n    unit_of_measurement: \"VA\"\n    device_class: \"power\"\n    state_class: \"measurement\"  \n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n    on_value:\n      - if:\n          condition:\n            sensor.in_range:\n              id: papp\n              below: 1000\n          then: \n            - light.control:\n                id: led1\n                red: 0%\n                green: 100% # vert\n                blue: 0%\n      - if:\n          condition:\n            sensor.in_range:\n              id: papp\n              above: 1000\n              below: 3000\n          then: \n            - light.control:\n                id: led1\n                red: 0%\n                green: 0% # bleu\n                blue: 100%\n      - if:\n          condition:\n            sensor.in_range:\n              id: papp\n              above: 3000\n          then: \n            - light.control:\n                id: led1\n                red: 100% #rouge\n                green: 0%\n                blue: 0%\n           \n    \n  - platform: teleinfo\n    id: isousc\n    tag_name: \"ISOUSC\"\n    name: \"Linky I Sousc\"\n    unit_of_measurement: \"A\"\n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n\n  - platform: teleinfo\n    id: iinst\n    tag_name: \"IINST\"\n    name: \"Linky I Inst\"\n    unit_of_measurement: \"A\"\n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n\n  - platform: teleinfo\n    id: imax\n    tag_name: \"IMAX\"\n    name: \"linky I Max\"\n    unit_of_measurement: \"A\"\n    icon: mdi:flash\n    teleinfo_id: myteleinfo\n\n  - platform: template\n    name: \"Linky I\/Imax\"\n    id: i100\n    icon: mdi:flash\n    unit_of_measurement: \"%\"\n    accuracy_decimals: 0\n    lambda: |-\n      return (id(iinst).state\/id(isousc).state*100);\n\n  - platform: homeassistant\n    name: \"Conso J\"\n    unit_of_measurement: \"kWh\"\n    entity_id: sensor.energie_totale_linky_jour\n    id: conso\n\n  - platform: wifi_signal\n    id: wif\n    name: \"${friendly_name} WiFi Signal Sensor\"\n    update_interval: 60s\n    \n  - platform: uptime\n    id: uptime_seconds\n    name: \"${friendly_name} Uptime\"\n    update_interval: 60s\n    unit_of_measurement: s\n    accuracy_decimals: 0\n    force_update: false\n    icon: mdi:timer\n\ntext_sensor:\n\n  - platform: template\n    name: \"${friendly_name} Uptime\"\n    update_interval: 60s\n    icon: mdi:clock-start\n    lambda: |-\n      int seconds = (id(uptime_seconds).state);\n      int days = seconds \/ (24 * 3600);\n      seconds = seconds % (24 * 3600);\n      int hours = seconds \/ 3600;\n      seconds = seconds % 3600;\n      int minutes = seconds \/  60;\n      seconds = seconds % 60;\n      if ( days ) {\n        return { (String(days) +\"d \" + String(hours) +\"h \" + String(minutes) +\"m \"+ String(seconds) +\"s\").c_str() };\n      } else if ( hours ) {\n        return { (String(hours) +\"h \" + String(minutes) +\"m \"+ String(seconds) +\"s\").c_str() };\n      } else if ( minutes ) {\n        return { (String(minutes) +\"m \"+ String(seconds) +\"s\").c_str() };\n      } else {\n        return { (String(seconds) +\"s\").c_str() };\n      }\n\n#Etat de la connection\nbinary_sensor:\n  - platform: status\n    name: \"${friendly_name} Status\"\n\nswitch:   \n  - platform: restart\n    name: \"${friendly_name} Restart\"\n\n\ndisplay:\n  - platform: ssd1306_i2c\n    model: \"SSD1306 128x64\"\n    address: 0x3C\n    brightness: 100%\n    lambda: |-\n      it.printf(0,0,id(arial),\"PuC=%.0f VA\",id(papp).state);\n      it.printf(0,15,id(arial),\"I Inst=%.0f A\",id(iinst).state);\n      it.printf(70,15,id(arial),\"-%.0f %%\",id(i100).state);\n      it.printf(0,30,id(arial),\"ConsoJ=%.0f kWh\",id(conso).state);\n\n    \n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Affichage local<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/tic-scaled-1-1-1024x1024.jpg\" alt=\"\" class=\"wp-image-1241\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/tic-scaled-1-1-1024x1024.jpg 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/tic-scaled-1-1-300x300.jpg 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/tic-scaled-1-1-150x150.jpg 150w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/tic-scaled-1-1-768x768.jpg 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/tic-scaled-1-1-1536x1536.jpg 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/tic-scaled-1-1-2048x2048.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>J&rsquo;affiche quelques valeurs en local sur un <a rel=\"noreferrer noopener\" href=\"https:\/\/www.amazon.fr\/gp\/product\/B08LYL7QFQ\/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1\" data-type=\"URL\" data-id=\"https:\/\/www.amazon.fr\/gp\/product\/B08LYL7QFQ\/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1\" target=\"_blank\">oled SSD1306 128&#215;64<\/a>, pratique pour une visu rapide \u00e0 la puissance et l&rsquo;intensit\u00e9 instantan\u00e9e, du ratio I\/imax et  la conso du jour.<\/p>\n\n\n\n<p>Je joue \u00e9galement avec la Led WS2812 RGB connect\u00e9e sur le GPIO18. En fonction de la puissance la led change de couleur:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Verte de  0 \u00e0 1000 VA<\/li>\n\n\n\n<li>Bleu entre  1000 et 3000 VA<\/li>\n\n\n\n<li>Rouge si sup\u00e9rieure \u00e0 3000 VA<\/li>\n\n\n\n<li>Les combinaisons sont infinies et facilement programmables.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Codes du fichier linky.yaml<\/h2>\n\n\n\n<p>Remarque: dans ce code vous pouvez supprimer les utility meter et utiliser la m\u00e9thode d\u00e9crite dans cet article: <a rel=\"noreferrer noopener\" href=\"https:\/\/domo.rem81.com\/2022\/06\/06\/ha-compteur-de-service-utility-meter\/\" target=\"_blank\">https:\/\/domo.rem81.com\/2022\/06\/06\/ha-compteur-de-service-utility-meter\/<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Double Tarif<\/h3>\n\n\n\n<p>On y retrouve:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> les \u00ab\u00a0utility meter\u00a0\u00bb qui comptabilisent les energies consomm\u00e9es HC\/HP par jour, semaine, mois, ann\u00e9e<\/li>\n\n\n\n<li>un &lsquo;binary_sensor\u00a0\u00bb HC utilis\u00e9 dans l&rsquo;affichage des graphiques de puissance permettant de mat\u00e9rialiser la zone HC<\/li>\n\n\n\n<li>les \u00ab\u00a0templates\u00a0\u00bb qui cumulent les HC\/HP des utility meter et calculent en \u20ac les co\u00fbts de consommations<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>####################################################\n#                                                  #\n#                       LINKY                      #\n#                                                  #\n####################################################\n\n\nutility_meter:\n# usage jour  \n  energy_total_usage_daily:\n    source: sensor.linky_hphc_kwh\n    cycle: daily\n    tariffs:\n      - hp\n      - hc\n# usage semaine\n  energy_total_usage_weekly:\n    source: sensor.linky_hphc_kwh\n    cycle: weekly\n    tariffs:\n      - hp\n      - hc\n# usage mois\n  energy_total_usage_monthly:\n    source: sensor.linky_hphc_kwh\n    cycle: monthly\n    tariffs:\n      - hp\n      - hc\n#usage an\n  energy_total_usage_yearly:\n    source: sensor.linky_hphc_kwh\n    cycle: yearly\n    tariffs:\n      - hp\n      - hc\n## \ninput_boolean:\n  com_linky:\n    name: Comm Linky OK=On\n\ninput_number:\n  # Calcul des co\u00fbts journaliers\n  cout_kwh_hp:\n    name: Cout du Kwh HP\n    min: 0\n    max: 10\n    unit_of_measurement: \u20ac\n    icon: mdi:currency-eur\n    step: 0.00001\n    mode: box\n\n  cout_kwh_hc:\n    name: Cout du Kwh HC\n    min: 0\n    max: 10\n    unit_of_measurement: \u20ac\n    icon: mdi:currency-eur\n    step: 0.00001\n    mode: box\n\ninput_text:\n  # Permet de simuler des Statuts pour les tests unitaires\n  linky_test_status:   \n    name: Test statuts Linky\n\ntemplate:\n  - binary_sensor:\n    # Utilis\u00e9 dans l'affichage des graphiques de puissance permettant de materialiser la zone HC\n    # = true si HC\n    - name: \"display_hp_hc\"\n      unique_id: \"display_hp_hc\"\n      state: &gt;-\n        {{ states('sensor.linky_n_tarif')|int(default=0) == 1 }} # =1 si HC =2 si HP\n\n# Consommation journali\u00e8re HP + HC - addition des utility meter\n  - sensor:\n    - name: \"Energie Totale Jour\"\n      unique_id: \"energy_total_daily\"\n      state: &gt;-\n        {% set p = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}\n        {% set o = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}\n        {{ (o + p) | round(2) }}\n      unit_of_measurement: \"kWh\"\n      device_class: \"energy\"\n      state_class: \"total\"\n\n# Consommation semaine HP + HC\n    - name: \"energy_total_weekly\"\n      state: &gt;-\n        {% set p = states('sensor.energy_total_usage_weekly_hp') | float(default=0) | round(2) %}\n        {% set o = states('sensor.energy_total_usage_weekly_hc') | float(default=0) | round(2) %}\n        {{ (o + p) | round(2) }}\n      unit_of_measurement: \"kWh\"\n      device_class: \"energy\"\n      state_class: \"total\"  \n\n# Consommation mensuelle HP + HC\n    - name: \"energy_total_monthly\"\n      state: &gt;-\n        {% set p = states('sensor.energy_total_usage_monthly_hp') | float(default=0) | round(2) %}\n        {% set o = states('sensor.energy_total_usage_monthly_hc') | float(default=0) | round(2) %}\n        {{ (o + p) | round(2) }}\n      unit_of_measurement: \"kWh\"\n      device_class: \"energy\"\n      state_class: \"total\"  \n\n# Consommation annuelle HP + HC\n    - name: \"energy_total_yearly\"\n      state: &gt;-\n        {% set p = states('sensor.energy_total_usage_yearly_hp') | float(default=0) | round(2) %}\n        {% set o = states('sensor.energy_total_usage_yearly_hc') | float(default=0) | round(2) %}\n        {{ (o + p) | round(2) }}\n      unit_of_measurement: \"kWh\"\n      device_class: \"energy\"\n      state_class: \"total\"  \n\n# Cout de l'Energie\n# les couts du kWh HP et HC sont calcul\u00e9s dans excel en fonction des factures recues\n# et saisis manuellement dans HA\n\n    - name: \"Cout Energy Total Jour HPHC\"\n      state: &gt;-\n        {% set hp = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}\n        {% set hc = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}\n        {% set chp = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}\n        {% set chc = states('input_number.cout_kwh_hc') | float(default=0) | round(5) %}\n        {{((hc*chc) + (hp*chp)) | round(2) }}\n      unit_of_measurement: \"\u20ac\"\n      device_class: \"monetary\"\n      state_class: \"total\"  \n      unique_id: \"cout_energy_total_jour_hphc\"\n\n    - name: \"Cout Energy Total Jour HP\"\n      state: &gt;-\n        {% set hp = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}\n        {% set chp = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}\n        {{(hp*chp) | round(2) }}\n      unit_of_measurement: \"\u20ac\"\n      device_class: \"monetary\"\n      state_class: \"total\"  \n      unique_id: \"cout_energy_total_jour_hp\"\n      \n    - name: \"Cout Energy Total Jour HC\"\n      state: &gt;-\n        {% set hc = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}\n        {% set chc = states('input_number.cout_kwh_hc') | float(default=0) | round(5) %}\n        {{(hc*chc) | round(2) }}\n      unit_of_measurement: \"\u20ac\"\n      device_class: \"monetary\"\n      state_class: \"total\"  \n      unique_id: \"cout_energy_total_jour_hc\"\n      <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Tarif unique<\/h3>\n\n\n\n<p>On y retrouve:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> les \u00ab\u00a0utility meter\u00a0\u00bb qui comptabilisent les energies consomm\u00e9es HC\/HP par jour, semaine, mois, ann\u00e9e<\/li>\n\n\n\n<li>le \u00ab\u00a0template\u00a0\u00bb qui calcule en \u20ac le co\u00fbt de consommation<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>####################################################\n#                                                  #\n#                       LINKY                      #\n#                                                  #\n####################################################\n\n\nutility_meter:\n# usage jour  \n  energy_total_linky_usage_daily:\n    source: sensor.linky_base_wh\n    cycle: daily\n\n# usage semaine\n  energy_total_linky_usage_weekly:\n    source: sensor.linky_base_wh\n    cycle: weekly\n\n# usage mois\n  energy_total_linky_usage_monthly:\n    source: sensor.linky_base_wh\n    cycle: monthly\n\n#usage an\n  energy_total_linky_usage_yearly:\n    source: sensor.linky_base_wh\n    cycle: yearly\n \n\ninput_boolean:\n  com_linky:\n    name: Comm Linky OK=On\n\ninput_number:\n\n  # Calcul du co\u00fbt journalier\n  cout_kwh_hp:\n    name: Cout du Kwh\n    min: 0\n    max: 10\n    unit_of_measurement: \u20ac\n    icon: mdi:currency-eur\n    step: 0.00001\n    mode: box\n\n\ntemplate:\n\n  - sensor:\n # Cout de l'Energie\n# le cout du kWh est calcul\u00e9 en fonction des factures recues\n# et saisi manuellement dans HA\n\n    - name: \"Cout Energy Total Jour\"\n      state: &gt;-\n        {% set conso = states('sensor.energy_total_linky_usage_daily') | float(default=0) | round(2) %}\n        {% set cout = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}\n        {{(conso*cout) | round(2) }}\n      unit_of_measurement: \"\u20ac\"\n      device_class: \"monetary\"\n      state_class: \"total\"  \n      unique_id: \"cout_energy_total_jour\"\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Automatismes<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Commutation de HP vers HC et Inversement<\/h2>\n\n\n\n<p>Il permet de permuter la tarification des utiliy meter en fonction du tarif r\u00e9cup\u00e9r\u00e9 dans le Linky (PTEC) <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Code de l&rsquo;automatisme<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>- id: '1642614758763'\n  alias: 6_1_1 Energie Changement HP&lt;-&gt;HC simplifi\u00e9\n  description: ''\n  trigger:\n  - platform: state\n    entity_id: sensor.linky_ptec\n    id: tarif_hc\n    from: HP..\n    to: HC..\n  - platform: state\n    entity_id: sensor.linky_ptec\n    from: HC..\n    to: HP..\n    id: tarif_hp\n  condition: &#091;]\n  <a href=\"action:\n  - choose:\n      - conditions:\n          - condition: trigger\n            id: tarif_hc\n        sequence:\n          - service: select.select_option\n            data:\n              option: hc\n            target:\n              entity_id:\n                - select.energy_total_usage_daily\n                - select.energy_total_usage_weekly\n                - select.energy_total_usage_monthly\n                - select.energy_total_usage_yearly\n               \n      - conditions:\n          - condition: trigger\n            id: tarif_hp\n        sequence:\n          - service: select.select_option\n            data:\n              option: hp\n            target:\n              entity_id:\n                - select.energy_total_usage_daily\n                - select.energy_total_usage_weekly\n                - select.energy_total_usage_monthly\n                - select.energy_total_usage_yearly\n              \n    default: &#091;]\nmode: single\">action:\n  - choose:\n    - conditions:\n      - condition: trigger\n        id: tarif_hc\n      sequence:\n<\/a>      - service: select.select_option\n        data:\n          option: hc<a href=\"action:\n  - choose:\n      - conditions:\n          - condition: trigger\n            id: tarif_hc\n        sequence:\n          - service: select.select_option\n            data:\n              option: hc\n            target:\n              entity_id:\n                - select.energy_total_usage_daily\n                - select.energy_total_usage_weekly\n                - select.energy_total_usage_monthly\n                - select.energy_total_usage_yearly\n               \n      - conditions:\n          - condition: trigger\n            id: tarif_hp\n        sequence:\n          - service: select.select_option\n            data:\n              option: hp\n            target:\n              entity_id:\n                - select.energy_total_usage_daily\n                - select.energy_total_usage_weekly\n                - select.energy_total_usage_monthly\n                - select.energy_total_usage_yearly\n              \n    default: &#091;]\nmode: single\">\n        target:\n          entity_id:\n          - utility_meter.energy_total_linky_usage_daily\n          - utility_meter.energy_total_linky_usage_monthly\n          - utility_meter.energy_total_linky_usage_weekly\n          - utility_meter.energy_total_linky_usage_yearly\n    - conditions:\n      - condition: trigger\n        id: tarif_hp\n      sequence:\n<\/a>      - service: select.select_option\n        data:\n          option: hp<a href=\"action:\n  - choose:\n      - conditions:\n          - condition: trigger\n            id: tarif_hc\n        sequence:\n          - service: select.select_option\n            data:\n              option: hc\n            target:\n              entity_id:\n                - select.energy_total_usage_daily\n                - select.energy_total_usage_weekly\n                - select.energy_total_usage_monthly\n                - select.energy_total_usage_yearly\n               \n      - conditions:\n          - condition: trigger\n            id: tarif_hp\n        sequence:\n          - service: select.select_option\n            data:\n              option: hp\n            target:\n              entity_id:\n                - select.energy_total_usage_daily\n                - select.energy_total_usage_weekly\n                - select.energy_total_usage_monthly\n                - select.energy_total_usage_yearly\n              \n    default: &#091;]\nmode: single\">\n        target:\n          entity_id:\n          - utility_meter.energy_total_linky_usage_daily\n          - utility_meter.energy_total_linky_usage_monthly\n          - utility_meter.energy_total_linky_usage_weekly\n          - utility_meter.energy_total_linky_usage_yearly\n    default: &#091;]\n  mode: single<\/a><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Automatisme de contr\u00f4le de la communication du Linky<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Descriptif fonctionnel<\/h3>\n\n\n\n<p>Le but est de surveiller si la communication entre le Linky et HA est \u00e9tablie.<\/p>\n\n\n\n<p>A chaque changement d&rsquo;\u00e9tat de l&rsquo;entit\u00e9 PAPP (puissance instantan\u00e9e), l&rsquo;automatisme est d\u00e9clench\u00e9:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> l'\u00a0\u00bbinput_boolean.com_linky\u00a0\u00bb signifiant que la communication entre le linky et HA est OK est forc\u00e9 sur On<\/li>\n\n\n\n<li>Un d\u00e9lai d&rsquo;une heure est d\u00e9clench\u00e9, <\/li>\n\n\n\n<li>si durant ce d\u00e9lai PAPP change d&rsquo;\u00e9tat, l&rsquo;automatisme est relanc\u00e9 (mode:restart) et \u00ab\u00a0input_boolean.com_linky\u00a0\u00bb reste sur On<\/li>\n\n\n\n<li>sinon, pass\u00e9 ce d\u00e9lai, l'\u00a0\u00bbinput_boolean.com_linky\u00a0\u00bb est forc\u00e9 sur Off, et la communication est consid\u00e9r\u00e9e en d\u00e9faut, il sera remis sur On au prochain changement d&rsquo;\u00e9tat de PAPP<\/li>\n<\/ul>\n\n\n\n<p>Je surveillance la puissance PAPP, c&rsquo;est la valeur plus \u00e9volutive, mais il arrive que quelques fois, surtout de nuit que la puissance reste stable pas et d\u00e9clare donc un d\u00e9faut fant\u00f4me.<\/p>\n\n\n\n<p>En mode standard, nous pourrions utiliser l&rsquo;entit\u00e9 \u00ab\u00a0DATE\u00a0\u00bb.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Code de l&rsquo;automatisme:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>- id: '1638118858848'\n  alias: 2_2_2 Alarme_Notification Time Out Linky\n  description: ' '\n  trigger:\n  - platform: state\n    entity_id: sensor.linky_papp\n  condition: &#091;]\n  action:\n  - service: input_boolean.turn_on\n    target:\n      entity_id: input_boolean.com_linky\n  - delay:\n      hours: 1\n      minutes: 0\n      seconds: 0\n      milliseconds: 0\n  - service: input_boolean.turn_off\n    target:\n      entity_id: input_boolean.com_linky\n  mode: restart<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Blueprint Notification d\u00e9faut communication:<\/h1>\n\n\n\n<p>J&rsquo;exploite le d\u00e9faut avec un blueprint \u00ab\u00a0Nagging Alerting Notification Automation\u00a0\u00bb plus pratique que l\u2019int\u00e9gration \u00ab\u00a0alert\u00a0\u00bb qui n\u00e9cessite un red\u00e9marrage de HA \u00e0 chaque modification. J\u2019utilise ce blueprint dans d&rsquo;autres cas de surveillance, portes, communication, etc..<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>- id: '1638119466260'\n  alias: 2_1_11 Alarme Blueprints Notification Def Com Linky\n  description: Blue Print\n  use_blueprint:\n    path: pavax\/nagging_alert_notification.yaml\n    input:\n      condition_entity_state: 'on'\n      sensor_entity: input_boolean.com_linky\n      alert_state: 'off'\n      alert_action:\n      - service: notify.telegram\n        data:\n          message: Com Linky off Line{{-\"\\n\"-}}{{states(\"sensor.date_time\") }}\n          title: Etat Reseau !!!\n      - service: persistent_notification.create\n        data:\n          message: Com Linky Off Line {{-\"\\n\"-}}{{states(\"sensor.date_time\") }}\n      resolved_action:\n      - service: notify.telegram\n        data:\n          message: Com Linky On Line{{-\"\\n\"-}} {{states(\"sensor.date_time\") }}\n          title: Etat RESEAU!!!\n      - service: persistent_notification.create\n        data:\n          message: Com Linky On Line{{-\"\\n\"-}}{{states(\"sensor.date_time\") }}\n      notify_device: 62cdce054a9d3448484b4df8e44cc499\n      repeat_delay: 300\n      initial_delay: 1\n      max_alerts: 100\n      resolved_message: Alert {{ entity_name }} resolved\n      notify_message: Alert {{ entity_name }} triggered<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Lovelace<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple d&rsquo;affichage des donn\u00e9es<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"427\" height=\"580\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-12-1.png\" alt=\"\" class=\"wp-image-1195\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-12-1.png 427w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-12-1-221x300.png 221w\" sizes=\"auto, (max-width: 427px) 100vw, 427px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"429\" height=\"438\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-13-1.png\" alt=\"\" class=\"wp-image-1197\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-13-1.png 429w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-13-1-294x300.png 294w\" sizes=\"auto, (max-width: 429px) 100vw, 429px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Un autre exemple d&rsquo;affichage utilisant \u00ab\u00a0custom:mini-graph-card\u00a0\u00bb de HACS<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"445\" height=\"585\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-7-1.png\" alt=\"\" class=\"wp-image-1276\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-7-1.png 445w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-7-1-228x300.png 228w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>type: vertical-stack\ncards:\n  - type: custom:mini-graph-card\n    entities:\n      - entity: sensor.energie_totale_linky_jour\n    name: Conso Linky 7j\n    hours_to_show: 168\n    aggregate_func: max\n    group_by: date\n    show:\n      graph: bar\n    icon: mdi:flash\n  - type: custom:mini-graph-card\n    color_thresholds:\n      - color: '#00FF00'\n        value: 0\n      - color: '#FF9900'\n        value: 4000\n      - color: '#EA9999'\n        value: 6000\n      - color: '#CC0000'\n        value: 10000\n    color_thresholds_transition: hard\n    line_width: 2\n    icon: mdi:flash\n    show:\n      extrema: true\n      fill: true\n      icon: true\n      labels: false\n      name: true\n      state: true\n    hour24: true\n    points_per_hour: 4\n    hours_to_show: 24\n    group: false\n    state_map:\n      - label: hp\n        value: 'off'\n      - label: hc\n        value: 'on'\n    style: |\n      ha-card {\n        border: solid 2px var(--primary-color);\n      }\n    entities:\n      - entity: sensor.linky_papp\n        name: Totale\n      - color: '#CCC0cCC'\n        entity: binary_sensor.display_hp_hc\n        name: HC\n        show_line: false\n        y_axis: secondary\n    name: Puissance Linky 24h\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Un autre exemple d&rsquo;affichage utilisant \u00ab\u00a0custom:apexcharts-card\u00a0\u00bb de HACS<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"409\" height=\"369\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-8-1.png\" alt=\"\" class=\"wp-image-1278\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-8-1.png 409w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-8-1-300x271.png 300w\" sizes=\"auto, (max-width: 409px) 100vw, 409px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>type: custom:apexcharts-card\nchart_type: donut\nheader:\n  show: true\n  title: Conso du Jour\n  show_states: false\n  colorize_states: true\nseries:\n  - entity: sensor.energy_total_linky_usage_daily_hp\n    name: HP\n    color: green\n  - entity: sensor.energy_total_linky_usage_daily_hc\n    name: HC\n    color: blue\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Affichage du tableau Energie<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"499\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-3-1-1024x499.png\" alt=\"\" class=\"wp-image-1251\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-3-1-1024x499.png 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-3-1-300x146.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-3-1-768x375.png 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-3-1.png 1386w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Affichage dans Grafana<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"572\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-5-1-1024x572.png\" alt=\"\" class=\"wp-image-1261\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-5-1-1024x572.png 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-5-1-300x168.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-5-1-768x429.png 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-5-1.png 1340w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Vous trouverez ci-apr\u00e8s le fichier Graphana correspondant (A renommer en .json)<\/p>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-a6d32cd5-993a-4931-9058-7abc2c986723\" href=\"http:\/\/192.168.0.153:803\/wp-content\/uploads\/2022\/01\/Linky-1641736233864.txt\">Linky-1641736233864<\/a><a href=\"http:\/\/192.168.0.153:803\/wp-content\/uploads\/2022\/01\/Linky-1641736233864.txt\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-a6d32cd5-993a-4931-9058-7abc2c986723\">T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Pas grand chose d&rsquo;autre \u00e0 ajouter, c&rsquo;est simple \u00e0 mettre en oeuvre (si le Linky est accessible), fiable et peu on\u00e9reux, il ne reste plus qu&rsquo;a exploiter les informations.<\/p><\/blockquote><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Publication en lien avec cet article:<\/h1>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-domo-rem-81 wp-block-embed-domo-rem-81\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/domo.rem81.com\/ha-teleinformation-linky-mode-standard\/\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Intro C&rsquo;est fait, j&rsquo;ai enfin c\u00e2bl\u00e9 la t\u00e9l\u00e9 information de mon compteur Linky. Rien de bien m\u00e9chant il suffit de se raccorder aux bornes i1\/i2 du linky, le plus d\u00e9licat &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[8,15,17,22],"class_list":["post-1401","post","type-post","status-publish","format-standard","hentry","category-homeassistant","tag-appdaemon","tag-esp32","tag-esphome","tag-linky"],"_links":{"self":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/1401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/comments?post=1401"}],"version-history":[{"count":3,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/1401\/revisions"}],"predecessor-version":[{"id":3074,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/1401\/revisions\/3074"}],"wp:attachment":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/media?parent=1401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/categories?post=1401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/tags?post=1401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}