{"id":2359,"date":"2022-11-25T17:51:29","date_gmt":"2022-11-25T16:51:29","guid":{"rendered":"https:\/\/domo.rem81.com\/?p=2359"},"modified":"2026-03-24T09:20:25","modified_gmt":"2026-03-24T08:20:25","slug":"ha-gestion-eau-chaude-sanitaire","status":"publish","type":"post","link":"https:\/\/domo.rem81.com\/index.php\/2022\/11\/25\/ha-gestion-eau-chaude-sanitaire\/","title":{"rendered":"HA-Gestion Eau Chaude Sanitaire"},"content":{"rendered":"\n\n\n\n<h1 class=\"wp-block-heading\">UPDATE:<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>09-02-2026<\/strong>: Me concernant, cet article est devenu obsol\u00e8te, en effet j&rsquo;ai ajout\u00e9 4 sondes de temp\u00e9rature portant ainsi \u00e0 5 le nombre de points de mesure prenant en compte la stratification, voir mon article <a href=\"https:\/\/domo.rem81.com\/index.php\/2026\/01\/09\/ha-mesure-de-temperature-de-leau-v2026-stratification-estimation-du-volume-deau-chaude\/\" target=\"_blank\" rel=\"noreferrer noopener\">HA-Mesure de temp\u00e9rature de l\u2019eau (V2026) : stratification + estimation du volume d\u2019eau chaude \u2013 Domo Rem81<\/a>.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Intro:<\/h1>\n\n\n\n<p>Lorsque la production d&rsquo;Eau Chaude Sanitaire est comme chez moi produite par un ballon eau chaude \u00e9lectrique classique , elle peut \u00eatre tr\u00e8s \u00e9nergivore et co\u00fbter un max  si elle n&rsquo;est pas ma\u00eetris\u00e9e.<\/p>\n\n\n\n<p>C&rsquo;est pourquoi je tente de la r\u00e9duire au minimum, pour ce faire, j&rsquo;utilise au mieux le surplus de production g\u00e9n\u00e9r\u00e9e par mon installation photovolta\u00efque d\u00e9crite dans mon article <a rel=\"noreferrer noopener\" href=\"https:\/\/domo.rem81.com\/2022\/11\/13\/pv-photovoltaique\/\" target=\"_blank\">https:\/\/domo.rem81.com\/2022\/11\/13\/pv-photovoltaique\/<\/a> et bien entendu mon syst\u00e8me domotique pr\u00e9f\u00e9r\u00e9 <strong>Home Assistant<\/strong>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Terminologie:<\/h1>\n\n\n\n<p>Commen\u00e7ons par d\u00e9crire les termes commun\u00e9ment employ\u00e9s dans cet article:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HA: Home Assistant<\/li>\n\n\n\n<li>PV: photoVoltaique<\/li>\n\n\n\n<li>RPV: Routeur PhotoVoltaique<\/li>\n\n\n\n<li>BECS: Ballon Eau Chaude sanitaire<\/li>\n\n\n\n<li>RPE: R\u00e9seau Electrique Public, r\u00e9seau Enedis (anciennement r\u00e9seau EDF).<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Solution propos\u00e9e<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Mis en oeuvre d&rsquo;un routeur photovolta\u00efque. <\/h2>\n\n\n\n<p>Un RPV est un syst\u00e8me \u00e9lectronique par lequel transite l\u2019alimentation de votre BECS (on dit qu&rsquo;il est raccord\u00e9 en s\u00e9rie). Ce syst\u00e8me module la puissance du signal \u00e9lectrique transmise au BECS en fonction du surplus de puissance inject\u00e9 dans le RPE. Des que le syst\u00e8me d\u00e9tecte une injection sup\u00e9rieure \u00e0 un seuil g\u00e9n\u00e9ralement param\u00e9trable, il calcul la puissance du signal de sortie du RPV dans une fourchette Min\/Max les deux \u00e9tant aussi g\u00e9n\u00e9ralement param\u00e9trable: Min = 0%, Max est fonction de la puissance du BECS et du RPV. De ce fait la consommation va augmenter jusqu\u2019\u00e0 ce le RPV calcul un soutirage dans le RPE, il adapte ainsi en permanence la puissance appliqu\u00e9 au BECS.<\/p>\n\n\n\n<p>Vous trouverez dans cet article publi\u00e9 par <a rel=\"noreferrer noopener\" href=\"https:\/\/ptiwatt.kyna.eu\/post\/2022\/07\/09\/Construction-d-un-Power-Router-pas-%C3%A0-pas\" target=\"_blank\">l&rsquo;association &lsquo;P&rsquo;TITWATT&rsquo;<\/a> des explications bien plus compr\u00e9hensible que la mienne.<\/p>\n\n\n\n<p>Cet d&rsquo;ailleurs ce routeur que j&rsquo;utilise mais j&rsquo;y reviendrai dans un article sp\u00e9cifique.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Modifications \u00e9lectriques du tableau principal<\/h2>\n\n\n\n<p>Comme je n&rsquo;aime pas m\u00e9langer les sources \u00e9lectriques, j&rsquo;ai modifi\u00e9 alimentation de mon BECS comme suit:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"683\" height=\"519\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image.png\" alt=\"\" class=\"wp-image-2362\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image.png 683w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-300x228.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-290x220.png 290w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/figure>\n\n\n\n<p>le disjoncteur Q23 prot\u00e8ge \u00e9lectriquement le BECS, le disjoncteur Q28 prot\u00e8ge \u00e9lectriquement le circuit de mesure tension du routeur et le circuit de commande des contacteurs. J&rsquo;aurai \u00e9galement tout alimenter depuis le Q23 mais mon Q28 \u00e9tait disponible!.<\/p>\n\n\n\n<p>Les contacteur PV et R\u00e9seau sont des contacteurs type chauffe-eau avec le mode Arret\/Auto\/Marche, pratique si la domotique est hors service.<\/p>\n\n\n\n<p>Ils sont command\u00e9s par HA via un module Wago mais ce peut \u00eatre bien entendu n&rsquo;importe quel \u00ab\u00a0switch\u00a0\u00bb de puissance pilot\u00e9s par HA.<\/p>\n\n\n\n<p>Vous avez compris que le contacteur PV alimente le BECS via le routeur et que le contacteur \u00ab\u00a0R\u00e9seau\u00a0\u00bb l&rsquo;alimente en direct depuis le r\u00e9seau.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Modification \u00e9lectrique du ballon<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Thermostat \u00e9lectrom\u00e9canique<\/h3>\n\n\n\n<p>Si votre ballon est \u00e9quip\u00e9 d&rsquo;un thermostat \u00e9lectrom\u00e9canique comme le mien, il n&rsquo;y a rien \u00e0 faire et surtout il faut garder le thermostat op\u00e9rationnel sous risque de le transformer en cocote minute si HA venait \u00e0 d\u00e9conner.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Thermostat \u00e9lectronique<\/h3>\n\n\n\n<p>Si votre ballon est \u00e9quip\u00e9 d&rsquo;un thermostat Electronique, c&rsquo;est plus compliqu\u00e9, il faudra dissocier l&rsquo;alimentation \u00e9lectrique de l\u2019\u00e9lectronique du thermostat, de l&rsquo;alimentation \u00e9lectrique des r\u00e9sistances. La premi\u00e8re devra toujours etre aliment\u00e9 directement depuis le r\u00e9seau, la deuxi\u00e8me pourra transiter par le RPV. L\u00e0 encore il faut garder le thermostat op\u00e9rationnel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ballon Thermodynamique<\/h3>\n\n\n\n<p>Dans ce cas c&rsquo;est plus compliqu\u00e9 car vous ne pouvez pas l&rsquo;alimenter \u00e9lectriquement directement via le RPV sans effectuer de modifications, vous risquez tout simplement de le cramer.<\/p>\n\n\n\n<p>Malheureusement, je ne saurai pas vous aider sur ce coup, mais GOOGLE est votre ami, il vous apportera certainement la solution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mesure de temp\u00e9rature de l&rsquo;eau<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Solution<\/h3>\n\n\n\n<p>De mon point de vue il est int\u00e9ressant de connaitre la temp\u00e9rature de l&rsquo;eau \u00e0 l&rsquo;int\u00e9rieur du BECS. Mon ballon n&rsquo;\u00e9tant pas \u00e9quip\u00e9 d&rsquo;une sonde ni m\u00eame d&rsquo;un emplacement pour y loger une sonde, j&rsquo;ai utilis\u00e9 un <a rel=\"noreferrer noopener\" href=\"https:\/\/www.amazon.fr\/AZDelivery-ESP8266-Arduino-Raspberry-microcontr%C3%B4leur\/dp\/B074RL7YR3\/ref=sr_1_6?keywords=esp01&amp;qid=1669044627&amp;qu=eyJxc2MiOiI0LjU1IiwicXNhIjoiNC4xMiIsInFzcCI6IjMuODQifQ%3D%3D&amp;sr=8-6\" target=\"_blank\">ESP01<\/a> avec une sonde <a rel=\"noreferrer noopener\" href=\"https:\/\/www.amazon.fr\/AZDelivery-temp%C3%A9rature-num%C3%A9rique-Inoxydable-Raspberry\/dp\/B07KNQJ3D7\/ref=sr_1_4?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;crid=17KFL3RYWI30H&amp;keywords=ds18b20&amp;qid=1669044567&amp;qu=eyJxc2MiOiI1LjIwIiwicXNhIjoiNC41MiIsInFzcCI6IjQuNTIifQ%3D%3D&amp;s=industrial&amp;sprefix=ds18b20%2Cindustrial%2C90&amp;sr=1-4\" target=\"_blank\">ds18b20.<\/a>  J&rsquo;ai fait un trou de 8mm \u00e0 mi-hauteur dans l\u2019enveloppe ext\u00e9rieur du ballon et j&rsquo;ai gliss\u00e9 ma sonde dans l&rsquo;isolant au contact de la cuve m\u00e9tallique contenant l&rsquo;eau chaude. J&rsquo;ai \u00e9talonn\u00e9 la cha\u00eene de mesure avec la temp\u00e9rature de l&rsquo;eau chaude sortie robinet en jouant sur  <strong>  filters:       &#8211; offset: 8.0<\/strong> dans le code ESP, cela donne une bonne indication, et je ne suis pas au degr\u00e9 pr\u00eat. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sch\u00e9ma Electronique<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"557\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-2-1024x557.png\" alt=\"\" class=\"wp-image-2371\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-2-1024x557.png 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-2-300x163.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-2-768x418.png 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-2-735x400.png 735w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-2.png 1107w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Les sondes peuvent se mettre en parall\u00e8le, j&rsquo;en ai pr\u00e9vu trois dans mon sch\u00e9ma. La led n&rsquo;est pas obligatoire<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"382\" height=\"519\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-4.png\" alt=\"\" class=\"wp-image-2373\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-4.png 382w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-4-221x300.png 221w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><figcaption class=\"wp-element-caption\">Exemple de circuit imprim\u00e9 con\u00e7u avec EAGLE<\/figcaption><\/figure>\n\n\n\n<p>Vous pouvez sous traiter la fabrication de ce type de PCB \u00e0 https:\/\/jlcpcb.com\/ \u00e7a co\u00fbte que dalle, c&rsquo;est du travail de pro, faut pas etre press\u00e9 et c&rsquo;est quantit\u00e9 5 minimum, exemple en dessous pour ce PCB: 1.99+3.46\u20ac!!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1462\" height=\"631\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-5.png\" alt=\"\" class=\"wp-image-2374\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-5.png 1462w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-5-300x129.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-5-1024x442.png 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-5-768x331.png 768w\" sizes=\"auto, (max-width: 1462px) 100vw, 1462px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Code de l&rsquo;ESP01<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>substitutions:\n  device_name: esp126-temp-ecs\n  friendly_name: esp126\n  adress_ip: \"192.168.0.126\"\n  time_timezone: \"Europe\/Paris\"\n\nesphome:\n  name: ${device_name}\n  platform: ESP8266\n  board: esp01_1m  \n  \nwifi:\n  networks:\n    - ssid: !secret wifi_mi4\n      password: !secret mdpwifi_mi4\n      priority: 2    \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\n  manual_ip:\n    static_ip: ${adress_ip}\n    gateway: 192.168.0.254\n    subnet: 255.255.255.0\n\ncaptive_portal:\n\n# Enable logging\nlogger:\n\n# Enable Home Assistant API\napi:\n\nota:\n\nweb_server:\n  port: 80\n\n# Configuration Dalas\ndallas:\n  - pin: GPIO0\n\n#Etat de la connection\nbinary_sensor:\n  - platform: status\n    name: \"${friendly_name} Status\"\n\nswitch:    \n\n  - platform: restart\n    name: \"${friendly_name} Restart\"\n    \n        \nsensor:\n\n  - platform: dallas\n    address: 0xCA00AA2D00000328\n    name: \"${friendly_name} temp_ecs\"\n    filters:\n      - offset: 8.0\n    \n  - platform: wifi_signal\n    name: \"${friendly_name} WiFi Signal Sensor\"\n    update_interval: 60s\n\n  - platform: uptime\n    name: \"${friendly_name} Uptime Sensor\"\n    update_interval: 60s\n\ntext_sensor:\n  # IP address #\n  - platform: wifi_info\n    ip_address:\n      name: \"${friendly_name} IP address\"\n      icon: \"mdi:network-outline\"\n    ssid:\n      name: \"${friendly_name} Connected SSID\"\n    bssid:\n      name: \"${friendly_name} Connected BSSID\"\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Automatismes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Cahier des charges:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rester ma\u00eetre du syst\u00e8me en pilotant depuis HA et non depuis le Linky<\/li>\n\n\n\n<li>Privil\u00e9gier la charge des batteries PhotoVoltaique, puis la chauffe du ballon: Lorsque les batteries seront pleines et si production PV sup\u00e9rieure \u00e0 Conso, alors on va injecter dans le r\u00e9seau et le router PV r\u00e9agira en cons\u00e9quence.<\/li>\n\n\n\n<li>Chauffer le ballon la nuit en heure creuse si pas assez chaud par manque d\u2019ensoleillement dans les jours pr\u00e9c\u00e9dents.<\/li>\n\n\n\n<li>Avoir un mode secours si la production PV n&rsquo;est pas suffisante sur le long terme.<\/li>\n\n\n\n<li>Trois modes de fonctionnement:\n<ul class=\"wp-block-list\">\n<li>Auto (Automatique)<\/li>\n\n\n\n<li>Arret (Arret Forc\u00e9)<\/li>\n\n\n\n<li>Marche (Marche forc\u00e9e).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Mode Automatique:<\/h3>\n\n\n\n<p>Dans ce mode, je distingue le jour et la nuit, le jour est r\u00e9serv\u00e9 \u00e0 l&rsquo;utilisation du routeur, la nuit, uniquement en mode secours, si l&rsquo;eau n&rsquo;est pas assez chaude.<\/p>\n\n\n\n<p>La nuit, choix 1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>si ECS est en mode automatique<\/li>\n\n\n\n<li>si nous sommes apr\u00e8s le couch\u00e9 du soleil et avant le lev\u00e9 du soleil<\/li>\n\n\n\n<li>si la temp\u00e9rature du BECS descend en dessous du seuil temp\u00e9rature basse<\/li>\n\n\n\n<li>si le linky est en heure Creuse\n<ul class=\"wp-block-list\">\n<li><strong>Alors j&rsquo;enclenche le relais ECS_R\u00e9seau donc, je chauffe plein pot.<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>La nuit, choix 2:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>si nous sommes apr\u00e8s le coucher du soleil et avant le lev\u00e9 du soleil\n<ul class=\"wp-block-list\">\n<li><strong>ET<\/strong><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>si la temp\u00e9rature du BECS monte au dessus du seuil temp\u00e9rature haute\n<ul class=\"wp-block-list\">\n<li><strong>OU<\/strong><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>si le linky passe en heure pleine\n<ul class=\"wp-block-list\">\n<li><strong>Alors je coupe le relais ECS_R\u00e9seau, j&rsquo;arrete de chauffer.<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Le jour, choix 3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>si ECS est en mode automatique<\/li>\n\n\n\n<li>si nous sommes apr\u00e8s le lev\u00e9 du soleil et avant le couch\u00e9 du soleil<\/li>\n\n\n\n<li>si le input.boolean \u00ab\u00a0validation du routeur PV\u00a0\u00bb est sur ON<\/li>\n<\/ul>\n\n\n\n<p>Le jour, choix 4:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>si le input.boolean \u00ab\u00a0validation du routeur PV\u00a0\u00bb passe de ON \u00e0 OFF\n<ul class=\"wp-block-list\">\n<li><strong>Alors je coupe le relais ECS_PV<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Mode Arr\u00eat Forc\u00e9:<\/h3>\n\n\n\n<p>Dans ce mode, je coupe les relais ECS_R\u00e9seau et ECS_PV.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mode Marche Forc\u00e9:<\/h3>\n\n\n\n<p>Dans ce mode, je coupe le relais ECS_PV et j&rsquo;active le relais ECS_R\u00e9seau, je force le chauffage via le r\u00e9seau avec bien sur le thermostat \u00e9lectrom\u00e9canique int\u00e9gr\u00e9 au BECS en s\u00e9curit\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Script gestion relais<\/h2>\n\n\n\n<p>Afin d\u2019\u00e9viter un chevauchement des relais PV et R\u00e9seau, j&rsquo;ai cr\u00e9\u00e9 trois scripts que je lance depuis les automatismes ou depuis le tableau de bord:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ECS_OFF: les deux relais sont sur Off<\/li>\n\n\n\n<li>ECS_PV: D\u00e9sactivation du relais ECS_PV, d\u00e9lai 2s, activation du relais ECS_R\u00e9seau<\/li>\n\n\n\n<li>ECS_R\u00e9seau: D\u00e9sactivation du relais ECS_r\u00e9seau, d\u00e9lai 2s, activation du relais ECS_PV<\/li>\n<\/ul>\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>alias: 1_2_3 ECS Automatismes\ndescription: \"\"\ntrigger:\n  - platform: state\n    entity_id:\n      - input_select.ecs_ssol\n  - platform: sun\n    event: sunrise\n    offset: 0\n    id: levee_soleil\n  - platform: sun\n    event: sunset\n    offset: 0\n    id: couche_soleil\n  - platform: state\n    entity_id:\n      - sensor.linky_ptec\n    from: HC..\n    to: HP..\n    id: HC-HP\n  - platform: state\n    entity_id:\n      - sensor.linky_ptec\n    from: HP..\n    to: HC..\n    id: HP-HC\n  - platform: numeric_state\n    entity_id: sensor.esp126_temp_ecs\n    id: t_bas\n    below: 40\n  - platform: numeric_state\n    entity_id: sensor.esp126_temp_ecs\n    above: 45\n    id: t_haut\n  - platform: state\n    entity_id:\n      - input_boolean.ecs_av_pv\n    from: \"on\"\n    to: \"off\"\n    id: arret_pv_routeur\n  - platform: state\n    entity_id:\n      - input_boolean.ecs_av_pv\n    from: \"off\"\n    to: \"on\"\n    id: avect_pv_routeur\ncondition: &#091;]\naction:\n  - choose:\n      - conditions:\n          - condition: state\n            entity_id: input_select.ecs_ssol\n            state: Auto\n          - condition: sun\n            before: sunrise\n            after: sunset\n          - condition: numeric_state\n            entity_id: sensor.esp126_temp_ecs\n            below: 40\n          - condition: state\n            entity_id: sensor.linky_ptec\n            state: HC..\n        sequence:\n          - service: script.ecs_on\n            data: {}\n      - conditions:\n          - condition: state\n            entity_id: input_select.ecs_ssol\n            state: Auto\n          - condition: or\n            conditions:\n              - condition: trigger\n                id: HC-HP\n              - condition: numeric_state\n                entity_id: sensor.esp126_temp_ecs\n                above: 45\n          - condition: sun\n            before: sunrise\n            after: sunset\n        sequence:\n          - service: script.ecs_off_off\n            data: {}\n      - conditions:\n          - condition: state\n            entity_id: input_select.ecs_ssol\n            state: Auto\n          - condition: sun\n            before: sunset\n            after: sunrise\n          - condition: state\n            entity_id: input_boolean.ecs_av_pv\n            state: \"on\"\n        sequence:\n          - service: script.ecs_off\n            data: {}\n      - conditions:\n          - condition: trigger\n            id: arret_pv_routeur\n          - condition: state\n            entity_id: input_select.ecs_ssol\n            state: Auto\n        sequence:\n          - service: script.ecs_off_off\n            data: {}\n      - conditions:\n          - condition: state\n            entity_id: input_select.ecs_ssol\n            state: At Forc\u00e9\n        sequence:\n          - service: script.ecs_off_off\n            data: {}\n      - conditions:\n          - condition: state\n            entity_id: input_select.ecs_ssol\n            state: Ma Forc\u00e9e\n        sequence:\n          - service: script.ecs_on\n            data: {}\n    default: &#091;]\nmode: single\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Tableau de bord:<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple de carte<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"436\" height=\"570\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-9-1.png\" alt=\"\" class=\"wp-image-2408\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-9-1.png 436w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/11\/image-9-1-229x300.png 229w\" sizes=\"auto, (max-width: 436px) 100vw, 436px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Code de la carte<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>type: entities\nentities:\n  - entities:\n      - entity: input_select.ecs_ssol\n        name: Mode\n      - entity: input_boolean.ecs_av_pv\n        name: Roteur PV\n    entity: input_select.ecs_ssol\n    icon: mdi:flash\n    name: Fonctionnement\n    show_state: false\n    type: custom:multiple-entity-row\n  - entities:\n      - entity: sensor.ecocompteur_ecs\n        name: Pu\n      - entity: sensor.mp2_charge_batteries\n        name: Ch Bat\n    entity: sensor.ecocompteur_ecs\n    icon: mdi:flash\n    name: Puissance\n    show_state: false\n    type: custom:multiple-entity-row\n  - entities:\n      - entity: sensor.energie_ecs_jour\n        name: Res+PV\n      - entity: sensor.energie_ecs_reseau_jour\n        name: Reseau\n      - entity: sensor.energie_ecs_pv_jour\n        name: PV\n    entity: sensor.energie_ecs_jour\n    icon: mdi:flash\n    name: Conso Jour\n    show_state: false\n    type: custom:multiple-entity-row\n  - entities:\n      - entity: sensor.esp126_temp_ecs\n        name: T\u00b0\n      - entity: sensor.ecs_chauffage_ce_jour\n        name: Tps Ch\n    entity: sensor.energie_ecs_jour\n    icon: mdi:temperature-celsius\n    name: Temp\n    show_state: false\n    type: custom:multiple-entity-row\n  - entities:\n      - entity: binary_sensor.ecs_chauffe\n        name: Chauffage\n      - entity: switch.cde_relais_ecs\n        name: Rel ECS\n      - entity: switch.cde_relais_ecs_router_pv\n        name: Rel PV\n    entity: switch.cde_relais_ecs\n    icon: mdi:water-boiler\n    name: Cde\n    show_state: false\n    type: custom:multiple-entity-row\n  - entities:\n      - entity: switch.cde_relais_ecs\n        name: Relais ECS\n      - entity: switch.cde_relais_ecs_router_pv\n        name: Relais Routeur PV\n      - entity: script.ecs_reseau\n      - entity: script.ecs_pv\n      - entity: script.ecs_off\n    head:\n      label: Commandes\n      type: section\n    padding: 0\n    type: custom:fold-entity-row\nhow_header_toggle: false\nshow_header_toggle: false\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9claration de entit\u00e9s:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>sensor.ecocompteur_ecs: est le sensor de mesure de puissance du BECS<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>####################################################\n#                                                  #\n#              EAU CHAUDE SANITAIRE                #\n#                                                  #\n####################################################\n\ninput_select:\n  ecs_ssol:\n    name: Ecs_SSol\n    icon: mdi:water-boiler\n    options:\n      - Auto\n      - At Forc\u00e9\n      - Ma Forc\u00e9e\n\ninput_boolean:\n  ecs_av_pv:\n    name: Ecs PV(=1 avec Routeur PV)\n  \nsensor:\n# Affichage du temps de fonctionnement ce jour\n  - platform: history_stats\n    name: ECS Chauffage ce jour\n    entity_id: binary_sensor.ecs_chauffe\n    state: 'on'\n    type: time\n    start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'\n    end: '{{ now() }}'\n\n\ntemplate:\n####################################\n# Si puissance superieur \u00e0 500w = ECS en Marche\n  - binary_sensor:\n    - name: \"ecs_chauffe\"\n      unique_id: \"ecs_chauffe\"\n      device_class: heat\n      state: &gt;-\n          {% set a=states('sensor.ecocompteur_ecs')|float(default=0) %}\n          {{ a &gt; 500 }}\n\n# \n  - sensor:\n\n############################################ 21\/12\/2022\n# sensor.ecocompteur_ecs:\n# Si switch.cde_relais_ecs-&gt;\n#   template: sensor.puissance_ecs_reseau_w-&gt;\n#     template: sensor.puissance_ecs_reseau_kw\n#     Integration en kW: sensor.energie_ecs_reseau-&gt;\n#       utility_meter: energy_ecs_reseau_usage_daily-&gt;\n#          sensor.energy_ecs_reseau_usage_daily_hp\n#          sensor.energy_ecs_reseau_usage_daily_hc \n\n# Si switch.cde_relais_ecs_router_pv-&gt;\n#   template: sensor.puissance_ecs_pv_w-&gt;\n#     template: sensor.puissance_ecs_pv_kw\n#     Integration en kW: sensor.energie_ecs_pv-&gt;\n#       utility_meter: energy_ecs_pv_usage_daily-&gt;\n#          sensor.energy_ecs_pv_usage_daily_hp\n#          sensor.energy_ecs_pv_usage_daily_hc \n\n# Calcul puissance ECS si mode r\u00e9seau\n# L'integrale de rieumman et les utily_meter sont d\u00e9clar\u00e9s dans \"\/config\/helpers\"\n    - name: puissance_ecs_reseau_w\n      unique_id: \"puissance_ecs_reseau_w\"\n      device_class: \"power\"\n      state_class: \"measurement\"    \n      unit_of_measurement: \"W\"\n      state: &gt;-\n        {% set pu_ecs=states('sensor.ecocompteur_ecs')|float(default=0) %}\n        {% set rel_ecs=states('switch.cde_relais_ecs')%}\n        {% if (pu_ecs&gt;0) and (rel_ecs==\"on\")%}          \n          {{ pu_ecs }}\n        {%else%}\n          0\n        {%endif%}\n\n    - name: puissance_ecs_reseau_kw\n      unique_id: \"puissance_ecs_reseau_kw\"\n      device_class: \"power\"\n      state_class: \"measurement\"    \n      unit_of_measurement: \"kW\"\n      state: &gt;-\n        {% set p=states('sensor.puissance_ecs_reseau_w')|float(default=0) %}\n        {{ p\/1000 }}\n\n    - name: \"energie ecs reseau jour\"\n      unique_id: \"energie_ecs_reseau_jour\"\n      state: &gt;-\n        {% set p = states('sensor.energy_ecs_reseau_usage_daily_hp') | float(default=0) | round(2) %}\n        {% set o = states('sensor.energy_ecs_reseau_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# Calcul puissance ECS si mode PV\n    - name: puissance_ecs_pv_w\n      unique_id: \"puissance_ecs_pv_w\"\n      device_class: \"power\"\n      state_class: \"measurement\"    \n      unit_of_measurement: \"W\"\n      state: &gt;-\n        {% set pu_ecs=states('sensor.ecocompteur_ecs')|float(default=0) %}\n        {% set rel_ecs=states('switch.cde_relais_ecs_router_pv')%}\n        {% if (pu_ecs&gt;0) and (rel_ecs==\"on\")%}          \n          {{ pu_ecs }}\n        {%else%}\n          0\n        {%endif%}\n        \n    - name: puissance_ecs_pv_kw\n      unique_id: \"puissance_ecs_pv_kw\"\n      device_class: \"power\"\n      state_class: \"measurement\"    \n      unit_of_measurement: \"kW\"\n      state: &gt;-\n        {% set p=states('sensor.puissance_ecs_pv_w')|float(default=0) %}\n        {{ p\/1000 }}\n\n    - name: \"Energie ecs pv jour\"\n      unique_id: \"energie_ecs_pv_jour\"\n      state: &gt;-\n        {% set p = states('sensor.energy_ecs_pv_usage_daily_hp') | float(default=0) | round(2) %}\n        {% set o = states('sensor.energy_ecs_pv_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# Cumul de Energie ECS Reseau et PV\n    - name: \"Energie ECS Jour\"\n      unique_id: \"energie_ecs_jour\"\n      state: &gt;-\n        {% set p = states('sensor.energie_ecs_reseau_jour') | float(default=0) | round(2) %}\n        {% set o = states('sensor.energie_ecs_pv_jour') | 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\n###########################################################\n\n\n# Puissance produite en surplus et inject\u00e9e dans l'ECS en mode PV en W \n    - name: puissance_ecs_surplus_injectee_w\n      unique_id: \"puissance_ecs_surplus_injectee_w\"\n      device_class: \"power\"\n      state_class: \"measurement\"    \n      unit_of_measurement: \"W\"\n      state: &gt;-\n        {% set pu_ecs=states('sensor.ecocompteur_ecs')|float(default=0) %}\n        {% set prod=states('sensor.envoy_122103023124_current_power_production')|float(default=0) %}\n        {% set rel_ecs=states('switch.cde_relais_ecs_router_pv')%}\n        {% if (pu_ecs&gt;0) and (prod&gt;10) and (rel_ecs==\"on\")%}          \n          {{ pu_ecs }}\n        {%else%}\n          0\n        {%endif%}\n\n\n# Puissance produite en surplus et inject\u00e9e dans l'ECS en mode PV en kW \n\n    - name: puissance_ecs_surplus_injectee\n      unique_id: \"puissance_ecs_surplus_injectee\"\n      device_class: \"power\"\n      state_class: \"measurement\"    \n      unit_of_measurement: \"kW\"\n      state: &gt;-\n        {% set a=states('sensor.puissance_ecs_surplus_injectee_w')|float(default=0) %}\n        {% if (a&gt;0) %}          \n          {{ a\/1000 }}\n        {%else%}\n          0\n        {%endif%}\n\n# Puissance disponible sans routeur ecs\n# Utilis\u00e9 dans esp141-affichage_pv\n    - name: puissance_dispo_sans ecs\n      unique_id: \"puissance_dispo_sans_ecs\"\n      device_class: \"power\"\n      state_class: \"measurement\"    \n      unit_of_measurement: \"W\"\n      state: &gt;-\n        {% set pu_ecs=states('sensor.ecocompteur_ecs')|float(default=0) %}\n        {% set prod=states('sensor.envoy_122103023124_current_power_production')|float(default=0) %}\n        {% set conso = states('sensor.envoy_122103023124_today_s_energy_consumption') | float(default=0) | round(2) %}        \n        {% set rel_ecs=states('switch.cde_relais_ecs_router_pv')%}\n        {% if (prod&gt;conso) and (pu_ecs&gt;0) and (rel_ecs==\"on\")%}          \n          {{ prod-conso+pu_ecs }}\n        {%else%}\n          0\n        {%endif%}\n\n\n\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion:<\/h1>\n\n\n\n<p>Ca peut para\u00eetre un peu compliqu\u00e9 pour certain, mais tout n&rsquo;est pas \u00e0 prendre, surtout si vous n&rsquo;avez pas de batteries, dans ce cas il faut modifier l&rsquo;automatisme<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UPDATE: Intro: Lorsque la production d&rsquo;Eau Chaude Sanitaire est comme chez moi produite par un ballon eau chaude \u00e9lectrique classique , elle peut \u00eatre tr\u00e8s \u00e9nergivore et co\u00fbter un max &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":[17,22,83],"class_list":["post-2359","post","type-post","status-publish","format-standard","hentry","category-homeassistant","tag-esphome","tag-linky","tag-routeur-solaire"],"_links":{"self":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/2359","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=2359"}],"version-history":[{"count":5,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/2359\/revisions"}],"predecessor-version":[{"id":4177,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/2359\/revisions\/4177"}],"wp:attachment":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/media?parent=2359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/categories?post=2359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/tags?post=2359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}