a:6:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:3:"


";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:49:"
	
	
	
	
	
	
	
	
	
	
		
		
		
		
		
		
		
		
		
	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:3:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:10:"Domo rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:22:"https://domo.rem81.com";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:22:"La domotique pour tous";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:13:"lastBuildDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 22 Nov 2023 13:28:16 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"language";a:1:{i:0;a:5:{s:4:"data";s:5:"fr-FR";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:9:"generator";a:1:{i:0;a:5:{s:4:"data";s:30:"https://wordpress.org/?v=6.4.3";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"item";a:10:{i:0;a:6:{s:4:"data";s:91:"
		
		
					
		
		
		
				
		
		
		
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:27:"PV-Routeur Solaire ESP Home";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:53:"https://domo.rem81.com/2023/07/18/pv-routeur-solaire/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:62:"https://domo.rem81.com/2023/07/18/pv-routeur-solaire/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 18 Jul 2023 09:15:18 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:7:{i:0;a:5:{s:4:"data";s:9:"Domotique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:15:"Photovoltaïque";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:5:"esp32";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:7:"ESPHOME";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:6;a:5:{s:4:"data";s:10:"routeur pv";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"https://domo.rem81.com/?p=2703";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:202:"Intro Dans un article précédent, je décrivais une première version de routeur PV monté sur la base d&#8217;une mesure de puissance tiers, dans mon cas, délivrée par mon onduleur Victron, &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:39326:"



<h1 class="wp-block-heading">Intro</h1>



<p>Dans un<a rel="noreferrer noopener" href="https://domo.rem81.com/2023/04/14/ha-routeur-solaire/" data-type="URL" data-id="https://domo.rem81.com/2023/04/14/ha-routeur-solaire/" target="_blank"> article précédent</a>, je décrivais une première version de routeur PV monté sur la base d&rsquo;une mesure de puissance tiers, dans mon cas, délivrée par mon onduleur Victron, et un pilotage de Triac via esp8266 délocalisé. </p>



<p>Dans cette version je vous propose un montage développé sous ESP Home donc complètement intégré à HA.</p>



<h1 class="wp-block-heading">Mise à Jour:</h1>



<ul>
<li>01/08/2023: Remplacement de de « restore_value » par « restore_mode » dans les « switch » suite à rupture dans la version 2023-07 ESPHOME.</li>
</ul>



<h1 class="wp-block-heading">Liste des courses:</h1>



<p>Dans cette version vous aurez besoin à minima:</p>



<p>nota: les liens sont donnés à titre d&rsquo;exemple, je n&rsquo;ai aucune relation commerciale avec ces vendeurs</p>



<ul>
<li>Un ESP32</li>
</ul>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="409" height="288" src="https://domo.rem81.com/wp-content/uploads/2023/05/image-5.png" alt="" class="wp-image-2719" srcset="https://domo.rem81.com/wp-content/uploads/2023/05/image-5.png 409w, https://domo.rem81.com/wp-content/uploads/2023/05/image-5-300x211.png 300w" sizes="(max-width: 409px) 100vw, 409px" /></figure>



<ul>
<li>Un module de mesure de puissance communiquant <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/1005005396796284.html?spm=a2g0o.order_list.order_list_main.71.21ef5e5bT8MKC9&amp;gatewayAdapt=glo2fra" data-type="URL" data-id="https://fr.aliexpress.com/item/1005005396796284.html?spm=a2g0o.order_list.order_list_main.71.21ef5e5bT8MKC9&amp;gatewayAdapt=glo2fra" target="_blank">Modbus JSY-MK-194T</a></li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="446" height="274" src="https://domo.rem81.com/wp-content/uploads/2023/05/image-4.png" alt="" class="wp-image-2718" srcset="https://domo.rem81.com/wp-content/uploads/2023/05/image-4.png 446w, https://domo.rem81.com/wp-content/uploads/2023/05/image-4-300x184.png 300w, https://domo.rem81.com/wp-content/uploads/2023/05/image-4-348x215.png 348w" sizes="(max-width: 446px) 100vw, 446px" /></figure>



<ul>
<li>Un triac <a href="https://fr.aliexpress.com/item/32802025086.html?spm=a2g0o.order_list.order_list_main.17.21ef5e5bT8MKC9&amp;gatewayAdapt=glo2fra" target="_blank" rel="noreferrer noopener">RobotDyn 24A</a> </li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="457" height="457" src="https://domo.rem81.com/wp-content/uploads/2023/05/image-3.png" alt="" class="wp-image-2716" srcset="https://domo.rem81.com/wp-content/uploads/2023/05/image-3.png 457w, https://domo.rem81.com/wp-content/uploads/2023/05/image-3-300x300.png 300w, https://domo.rem81.com/wp-content/uploads/2023/05/image-3-150x150.png 150w" sizes="(max-width: 457px) 100vw, 457px" /></figure>



<ul>
<li>Un <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/1005003352858467.html?spm=a2g0o.order_list.order_list_main.5.21ef5e5bT8MKC9&amp;gatewayAdapt=glo2fra" data-type="URL" data-id="https://fr.aliexpress.com/item/1005003352858467.html?spm=a2g0o.order_list.order_list_main.5.21ef5e5bT8MKC9&amp;gatewayAdapt=glo2fra" target="_blank">dissipateur thermique </a></li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="507" height="349" src="https://domo.rem81.com/wp-content/uploads/2023/05/image-6.png" alt="" class="wp-image-2720" srcset="https://domo.rem81.com/wp-content/uploads/2023/05/image-6.png 507w, https://domo.rem81.com/wp-content/uploads/2023/05/image-6-300x207.png 300w, https://domo.rem81.com/wp-content/uploads/2023/05/image-6-135x93.png 135w" sizes="(max-width: 507px) 100vw, 507px" /></figure>



<ul>
<li>Une sonde de température Dallas&nbsp;<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></li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="407" height="407" src="https://domo.rem81.com/wp-content/uploads/2023/01/image-7.png" alt="" class="wp-image-2486" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/image-7.png 407w, https://domo.rem81.com/wp-content/uploads/2023/01/image-7-300x300.png 300w, https://domo.rem81.com/wp-content/uploads/2023/01/image-7-150x150.png 150w" sizes="(max-width: 407px) 100vw, 407px" /></figure>



<ul>
<li>En option, et je vous le conseille, prenez un afficheur comme <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/1005001450817946.html?spm=a2g0o.productlist.main.3.48cc12c58raGiD&amp;algo_pvid=ad12ff3f-cd17-4d36-a352-bf18407d5a08&amp;algo_exp_id=ad12ff3f-cd17-4d36-a352-bf18407d5a08-1&amp;pdp_npi=3%40dis%21EUR%215.79%215.5%21%21%21%21%21%402100b1a616853461598361185d0783%2112000016162747543%21sea%21FR%21833459399&amp;curPageLogUid=Al4jZWJLnmzO" target="_blank">celui-ci</a>:</li>
</ul>



<p>Vous pouvez choisir d&rsquo;autres modèles, mais il vous faudra modifier le code.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="367" height="308" src="https://domo.rem81.com/wp-content/uploads/2023/05/image-7.png" alt="" class="wp-image-2721" srcset="https://domo.rem81.com/wp-content/uploads/2023/05/image-7.png 367w, https://domo.rem81.com/wp-content/uploads/2023/05/image-7-300x252.png 300w" sizes="(max-width: 367px) 100vw, 367px" /></figure>



<h1 class="wp-block-heading">Principe de fonctionnement</h1>



<p>La pince du module JSY est connectée en tête de votre tableau électrique principal en sortie de Linky, il mesure en permanence plusieurs grandeurs électriques, mais les deux qui nous intéressent principalement sont la mesure de puissance et le sens du courant dans la pince. L&rsquo;ESP interroge en permanence (toutes les 750ms) le module via un port UART sous le protocole Modbus.</p>



<p>Avec ces deux grandeurs, l&rsquo;ESP calcule le niveau de charge du triac sur une échelle de 0 à 100%.</p>



<p>Par convention , la puissance injectée sur le réseau est négative et la puissance soutirée est positive.</p>



<p>Donc plus la puissance est négative plus on ouvre le triac, on tend vers les 100%. L&rsquo;algorithme retenu est plutôt simple: S= S+P*Coeff/1000 avec S la sortie triac, P, la puissance mesurée et Coeff un coefficient de réactivité.</p>



<p>A chaque lecture de la puissance la sortie S vers le triac est incrémentée ou décrémentée selon le signe de la puissance mesurée. Le coefficient « Coeff » rend l&rsquo;algorithme plus ou moins réactif, il faut trouver le compromis pour une plus grande réactivité sans entrer dans un système oscillatoire.</p>



<h1 class="wp-block-heading">La Partie Matérielle</h1>



<h2 class="wp-block-heading">Schéma Electronique:</h2>



<p>Dans le schéma électronique qui suit vous retrouverez le câblage des différents éléments, vous y trouverez également des éléments non programmés comme le Triac 2 et le relais, c&rsquo;est en prévision d&rsquo;extension logicielle.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="950" height="554" src="https://domo.rem81.com/wp-content/uploads/2023/07/image-1.png" alt="" class="wp-image-2761" srcset="https://domo.rem81.com/wp-content/uploads/2023/07/image-1.png 950w, https://domo.rem81.com/wp-content/uploads/2023/07/image-1-300x175.png 300w, https://domo.rem81.com/wp-content/uploads/2023/07/image-1-768x448.png 768w" sizes="(max-width: 950px) 100vw, 950px" /></figure>



<h2 class="wp-block-heading">Modification du refroidissement du triac</h2>



<p>Si vous souhaitez exploiter pleinement les capacités de votre triac 24A vous devez remplacer le refroidisseur en aluminium d&rsquo;origine par un refroidisseur plus important.</p>



<p>La modification est clairement expliquez par le <a rel="noreferrer noopener" href="https://sites.google.com/view/le-professolaire/routeur-professolaire" target="_blank">prof&rsquo;solaire</a> dans cette<a rel="noreferrer noopener" href="https://www.youtube.com/watch?v=9NCN-5LjdzM&amp;t=9s" target="_blank"> video.</a></p>



<h1 class="wp-block-heading">La partie logicielle:</h1>



<h2 class="wp-block-heading">Capteur JSY-MK-194T</h2>



<p>Ce module communique en modbus via un port serie. Il permet de remonter de nombreuses grandeurs physiques électriques via un tore déporté, avec lequel je mesure la puissance soutirée ou injectée sur le réseau, placé directement en sortie Linky, et un tore soudé sur la carte, avec lequel je mesure la puissance soutirée par l&rsquo;ECS (Ballon Eau Chaude Sanitaire).</p>



<p>Sur chaque Tore, vous pouvez lire, la puissance, l&rsquo;intensité, la tension, la fréquence, l&rsquo;énergie.</p>



<p>Vous remarquez que la trame Modbus lit la totalité des grandeurs physiques du JSY (14 registres), cela optimise le temps de lecture en n&rsquo;envoyant qu&rsquo;une seule trame Modbus, le fait de supprimer des registres, segmenterai les trames et augmenterai le temps de réponse,cela étant, je n&rsquo;affiche pas toutes les grandeurs mais libre à vous de les visualiser.</p>



<p>J&rsquo;interroge le module toutes les 750 ms, ce qui donne une réactivité du système plutôt satisfaisante, en dessous, je rencontre des erreurs de lecture.</p>



<p>Vous trouverez ci après le descriptif des trames modbus du capteur:  </p>



<div data-wp-interactive="" class="wp-block-file"><object data-wp-bind--hidden="!selectors.core.file.hasPdfPreview" hidden class="wp-block-file__embed" data="https://domo.rem81.com/wp-content/uploads/2023/07/JSY-MK-194T.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Contenu embarqué JSY-MK-194T."></object><a id="wp-block-file--media-db47431f-9c35-4f2f-a60f-e61430b7be5f" href="https://domo.rem81.com/wp-content/uploads/2023/07/JSY-MK-194T.pdf">JSY-MK-194T</a><a href="https://domo.rem81.com/wp-content/uploads/2023/07/JSY-MK-194T.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-db47431f-9c35-4f2f-a60f-e61430b7be5f">Télécharger</a></div>



<p>Afin que le capteur JSY soit plus réactif, il faut augmenter sa vitesse de communication à 38400 bauds qui par défaut est à 4800 bauds.</p>



<p>La manipulation est très bien décrite sur le site du <a rel="noreferrer noopener" href="https://sites.google.com/view/le-professolaire/routeur-professolaire" data-type="URL" data-id="https://sites.google.com/view/le-professolaire/routeur-professolaire" target="_blank">prof&rsquo;Solair</a>.  Perso, j&rsquo;ai utilisé le logiciel Windows et ce <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/4000492274243.html?spm=a2g0o.productlist.main.37.2c471f73qEqhg6&amp;algo_pvid=1ffed911-0c73-4df5-9920-ce93791a9524&amp;algo_exp_id=1ffed911-0c73-4df5-9920-ce93791a9524-18&amp;pdp_ext_f=%7B%22sku_id%22%3A%2210000002208891354%22%7D&amp;pdp_npi=2%40dis%21EUR%211.91%211.68%21%21%21%21%21%402100b76616732599821855166d06ba%2110000002208891354%21sea&amp;curPageLogUid=800oAxGbCbzg" data-type="URL" data-id="https://fr.aliexpress.com/item/4000492274243.html?spm=a2g0o.productlist.main.37.2c471f73qEqhg6&amp;algo_pvid=1ffed911-0c73-4df5-9920-ce93791a9524&amp;algo_exp_id=1ffed911-0c73-4df5-9920-ce93791a9524-18&amp;pdp_ext_f=%7B%22sku_id%22%3A%2210000002208891354%22%7D&amp;pdp_npi=2%40dis%21EUR%211.91%211.68%21%21%21%21%21%402100b76616732599821855166d06ba%2110000002208891354%21sea&amp;curPageLogUid=800oAxGbCbzg" target="_blank">convertisseur USB&lt;-&gt;Port série</a>.&nbsp;</p>



<h2 class="wp-block-heading">Codage ESP</h2>



<p>Vous trouverez ci après le code de l&rsquo;ESP, c&rsquo;est en service depuis quelques semaines avec des résultats très satisfaisants. </p>



<pre class="wp-block-code"><code>substitutions:
  device_name: "esp176-esp32-routeur-1r"
  friendly_name: esp176
  adress_ip: "192.168.0.176"
  time_timezone: "Europe/Paris"
  
esphome:
  name: ${device_name}
  platform: ESP32
  board: esp32dev
  project:
    name: "rem81.esp176-esp32-routeur"
    version: "1.0.0"
  on_boot:
    priority: 800
    # Force mode auto et tempok au demmarrage
    then: 
      - switch.turn_on: modeauto
      - binary_sensor.template.publish:
          id: tempok
          state: ON

wifi:
  networks:
    - ssid: !secret wifi
      password: !secret mdpwifi
  reboot_timeout: 5min

  manual_ip:
    static_ip: ${adress_ip}
    gateway: 192.168.0.254
    subnet: 255.255.255.0

# Enable logging
logger:
  baud_rate: 0
  level: DEBUG
#  logs:
#    modbus.component: INFO
# Enable Home Assistant API
api:

ota:

web_server:
  port: 80

# Protocole afficheur
i2c:
  sda: GPIO21 
  scl: GPIO22
  scan: True
  id: bus_a

# Protocole du JSK
uart:
  id: mod_bus
  tx_pin: 17
  rx_pin: 16
  baud_rate: 38400
  stop_bits: 1
#  debug:
#    direction: BOTH
#    dummy_receiver: false
#    after:
#      timeout: 150ms
#    sequence:
#      - lambda: |-
#          UARTDebug::log_string(direction, bytes);

modbus:
#flow_control_pin: 5
  #send_wait_time: 200ms
  id: modbus1

modbus_controller:
  - id: jsymk
    ## the Modbus device addr
    address: 0x1
    modbus_id: modbus1
    update_interval: 0.75s
    command_throttle: 50ms
    
    # setup_priority: -10

globals:
   - id: increment
     type: float
     restore_value: no
     initial_value: '0'
   - id: striac
     type: float
     restore_value: yes

# Sonde Temperature Dallas
dallas:
  - pin: GPIO27 #
    update_interval: 60s

# Informations supplementaires sur le WIFI
#text_sensor:
#  - platform: wifi_info
#    ip_address:
#      name: ${friendly_name}_ESP IP Address
#    ssid:
#      name: ${friendly_name}_ESP Connected SSID
#    bssid:
#      name: ${friendly_name}_ESP Connected BSSID
#    mac_address:
#      name: ${friendly_name}_ESP Mac Wifi Address
#    scan_results:
#      name: ${friendly_name}_ESP Latest Scan Results


binary_sensor:
#Etat de la connection
  - platform: status
    name: "${friendly_name}_Status"

  - platform: template
    name: "${friendly_name} Temp Ok"
    id: tempok

# Input Number
number:
  # Seuil Min/Max sortie triac
  - platform: template
    name: "${friendly_name} P Max"
    id: pmax
    optimistic: true
    restore_value: true
    mode: box
    min_value: 50
    max_value: 100
    unit_of_measurement: "%"
    step: 1

  - platform: template
    name: "${friendly_name} P Min"
    id: pmin
    optimistic: true
    restore_value: true
    mode: box
    min_value: 0
    max_value: 25
    unit_of_measurement: "%"
    step: 1

# Seuil MAX temperature
  - platform: template
    name: "${friendly_name} T Max"
    id: tmax
    optimistic: true
    restore_value: true
    mode: box
    min_value: 0
    max_value: 75
    unit_of_measurement: "C°"
    step: 0.1

# Coeff Réactivité
  - platform: template
    name: "${friendly_name} Coeff R"
    id: coeff_r
    optimistic: true
    restore_value: true
    mode: box
    min_value: 0
    max_value: 1000
    unit_of_measurement: ""
    step: 0.1


sensor:  

# tension de l'alimentation
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: Tension
    #name: "${friendly_name} Tension JSYMK"
    address: 0x0048
    unit_of_measurement: "V"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4

# Intensité traversant le tore
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: Itore
    name: "${friendly_name} I_ECS JSYMK"
    address: 0x0049
    unit_of_measurement: "A"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4

# Puissance traversant le tore
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: puecs
    name: "${friendly_name} P_ECS JSYMK"
    address: 0x004A
    unit_of_measurement: "W"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4

# Energie lue dans le tore
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: energietore
    name: "${friendly_name} Energie ECS JSYMK"
    address: 0x004B
    unit_of_measurement: "kWh"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4

# Energie lue dans le tore
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: fptore
    #name: "${friendly_name} FP Tore JSYMK"
    address: 0x004C
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4

# Energie NEG lue dans le tore
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: energietoren
    name: "${friendly_name} Energie ECS Neg JSYMK"
    address: 0x004D
    unit_of_measurement: "kWh"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001     
    register_count: 1
    response_size: 4 
# Sens du courant dans la pince
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: senspince
    #name: "${friendly_name} Sens_Pince JSYMK"
    address: 0x004E
    register_type: holding
    value_type: U_DWORD
    bitmask: 0X00010000
    filters:
      - multiply: 1
    register_count: 1
    response_size: 4
# Sens du courant dans le tore
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: senstor
    #name: "${friendly_name} Sens_Tore JSYMK"
    address: 0x004E
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 0
    bitmask: 0X01000000
    filters:
      - multiply: 1
    register_count: 1
    response_size: 4

# Fréquence de l'alimentation  
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: frequence
    #name: "${friendly_name} Frequence JSYMK"
    address: 0x004F
    unit_of_measurement: "hz"    
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
    register_count: 1
    response_size: 4

# tension de l'alimentation
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: Tension2
    #name: "${friendly_name} U_Reseau JSYMK"
    address: 0x0050
    unit_of_measurement: "V"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4
    
# Intensité lue dans la pince
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: Ireseau
    #name: "${friendly_name} I_Reseau JSYMK"
    address: 0x0051
    unit_of_measurement: "A"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4

# puissance lue dans la pince
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: pureseau
    #name: "${friendly_name} P_Reseau JSYMK"
    address: 0x0052
    unit_of_measurement: "W"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4 
    on_value:
      then:
        - lambda: |-
            if ( id(senspince).state == 1 ) {
              id(pureseau1).publish_state( id(pureseau).state *-1);
            } else {
              id(pureseau1).publish_state( id(pureseau).state );
            }
        - lambda: id(afincrement).publish_state( id(increment) );
        - script.execute: calcul_injectionv2
        - script.execute: etat_production 
        - lambda: id(afstriac).publish_state( id(striac) );
    
# Energie lue dans la pince
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: energiepince
    #name: "${friendly_name} Energie Reseau JSYMK"
    address: 0x0053
    unit_of_measurement: "kWh"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4

# Energie lue dans le tore
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: fppince
    #name: "${friendly_name} FP Pince JSYMK"
    address: 0x0054
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001
    register_count: 1
    response_size: 4

# Energie NEG lue dans le tore
  - platform: modbus_controller
    modbus_controller_id: jsymk
    id: energienegpince
    #name: "${friendly_name} Energie ECS Neg JSYMK"
    address: 0x0055
    unit_of_measurement: "kWh"
    register_type: holding
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.0001     
    register_count: 1
    response_size: 4 
    
# Informations WI_FI
  - platform: wifi_signal # Affiche le signal WiFi strength/RSSI en dB
    name: "${friendly_name} WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"

  - platform: copy # Affiche le signal WiFi strength en %
    source_id: wifi_signal_db
    name: "${friendly_name} WiFi Signal Percent"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "Signal %"
    entity_category: "diagnostic"

############### TEMPLATE  ######################"
# Affichage dans HA et sur l'afficheur
  - platform: template
    name: "${friendly_name} Pu Reseau"
    id: pureseau1
    unit_of_measurement: "W"
    state_class: "measurement"  
 
  - platform: template
    name: "${friendly_name} Increment"
    id: afincrement
    unit_of_measurement: ""
    accuracy_decimals: 2
    state_class: "measurement"

  - platform: template
    name: "${friendly_name} Sortie Triac"
    id: afstriac
    unit_of_measurement: "%"
    state_class: "measurement"  
    accuracy_decimals: 2

# Sonde Temperature radiateur
  - platform: dallas
    address: 0xeb012112e461b128
    name: "${friendly_name} Temp triac"
    id: temp_triac
    filters:
      - filter_out: NAN
    on_value:
      then:
        if:
          condition:
            lambda: 'return id(temp_triac).state &lt; id(tmax).state;'
        # Si Temp Triac inferieur au seuil alors OK
          then:
            - binary_sensor.template.publish:
                id: tempok
                state: ON
        # Sinon attendre 60s avant retour à la normal
          else:
            - binary_sensor.template.publish:
                id: tempok
                state: OFF
            - delay: 60s
 
switch:
  - platform: gpio
    name: "${friendly_name} Relais"
    pin: GPIO5
    id: relais

  - platform: template
    name: "${friendly_name} Validation Router"    
    id: val_router
    optimistic: true
    restore_mode: RESTORE_INVERTED_DEFAULT_OFF

  - platform: template
    name: "${friendly_name} Mode Auto"    
    id: modeauto
    optimistic: true
    restore_mode: always_on

  - platform: restart
    name: "${friendly_name} Restart"

output:
#LEDS --------------------------------------
  - id: led_conso
    platform: gpio
    pin: GPIO32
    
  - id: led_injec
    platform: gpio
    pin: GPIO25
# Pilotage du Dimmer ------------------------
  - platform: ac_dimmer
    id: ecs
    gate_pin: GPIO33
    method: leading
    zero_cross_pin:
      number: GPIO34 
      mode:
        input: true
      inverted: yes
    min_power: 5%

light:
  - platform: monochromatic
    name: "${friendly_name}+STriac"
    output: ecs
    id: gradateur
    default_transition_length: 50ms

# Affichage
display:
  - platform: lcd_pcf8574
    dimensions: 20x4
    address: 0x27
    update_interval: 2s
    lambda: |-
      it.printf(0,0,"Pr=%0.0fW",id(pureseau1).state);
      it.printf(10,0,"Pe=%0.0fW ",id(puecs).state);
      it.printf(0,1,"Tr=%0.1f%%",id(striac));
      it.printf(10,1,"Val:%s", id(val_router).state ? "OK" : "NOK");
      it.printf(0,2,"Tp=%0.1fc", id(temp_triac).state);
      it.printf(10,2,"Etat=%s", id(tempok).state ? "OK" : "NOK");
      it.printf(0,3,"Mode=%s", id(modeauto).state ? "Auto" : "Manu");
      it.printf(10,3,"Inc=%0.1f ",id(increment));     
#interval:

#  - interval: 0.5s
#    then:

     #  - script.execute: 

# ------------------------  Scripts
script:
# 
# ------------------------ Calcul puissance injection V2
  - id: calcul_injectionv2
    mode: single
    then:
      - lambda: |-
         id(increment) = id(pureseau1).state*id(coeff_r).state/1000*-1;
 
      - lambda: |-
         id(striac) = id(striac)+id(increment);            

      - logger.log:
          format: "Log S Triac= %f"
          args: &#091; 'id(striac)']

      - lambda: |-
          if (id(striac) &lt;= 0){
            id(striac) = 0;
          } else if(id(striac)>=id(pmax).state){
            id(striac) = id(pmax).state;
          }

      # Si mode routeur validé et mode auto et temp OK alors on active le triac et Sortie Triac superieur au mini
      - if: 
          condition:
            and:
              - switch.is_on: val_router
              - switch.is_on: modeauto
              - binary_sensor.is_on: tempok
              - lambda: 'return id(striac) >= id(pmin).state;'
          then:
              - light.turn_on:
                  id: gradateur
                  brightness: !lambda |-
                    return id(striac)/100 ;
      # Si mode routeur devalidé ou temp NOK alors on désactive le triac 
      - if:
  <a href="condition:            and:              - switch.is_on: modeauto              - or:                - switch.is_off: val_router                - binary_sensor.is_off: temperatureok">        condition:</a>
            and:
              - switch.is_on: modeauto
              - or:
                - switch.is_off: val_router
                - binary_sensor.is_off: tempok <a href="condition:            and:              - switch.is_on: modeauto              - or:                - switch.is_off: val_router                - binary_sensor.is_off: temperatureok">
                    </a>           
          then:
            - lambda: |-
                id(striac) = 0;
                id(increment) = 0;
            - light.turn_on:
                id: gradateur
                brightness: !lambda |-
                  return id(0) ;  

# -------------------------------------------  Pilotage led
  - id: etat_production
    mode: single
    then:
     - if: 
         condition:
           sensor.in_range:
              id: pureseau1
              below: 50
              above: -50
         then:
           - output.turn_on: led_conso
           - output.turn_on: led_injec
                
     - if: 
         condition:
           sensor.in_range:
             id: pureseau1
             above: 50
         then:
           - output.turn_off: led_injec
           - output.turn_on: led_conso

     - if: 
         condition:
           sensor.in_range:
             id: pureseau1
             below: -50
         then:
          - output.turn_off: led_conso
          - output.turn_on: led_injec

</code></pre>



<h2 class="wp-block-heading">Paramètres:</h2>



<p>Vous pouvez régler:</p>



<ul>
<li>La puissance maximum que peut délivrer le triac. Je l&rsquo;ai limité à 80% ce qui correspond à 2000 W dans mon cas (Ballon ECS de 300l). Pour l&rsquo;estimer au mieux, passer en mode MANUEL et augmenter progressivement la sortie triac tout en visualisant l&rsquo;intensité absorbée par l&rsquo;ECS, perso je me limite à 10/11A. Au delà le triac monte trop en température.</li>



<li>la puissance minimum: Valeur en dessous laquelle le triac ne donne rien</li>



<li>le coefficient R (réactivité): Voir explication dans « Principe de Fonctionnement ».</li>



<li>la température maximum du refroidisseur du triac: Si supérieure à ce seuil, met la sortie triac à 0%.</li>
</ul>



<p>Vous pouvez piloter:</p>



<ul>
<li>Le relais: Je ne l&rsquo;utilise pas pour l&rsquo;instant</li>



<li>La validation du routeur: dans mon cas, c&rsquo;est un automatisme qui valide la routeur quand la charge des batteries est quasi à 100%</li>



<li>Un mode Manuel/Auto: Manuel vous donne la possibilité de piloter la sortie triac.</li>



<li>Le triac.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="432" height="511" src="https://domo.rem81.com/wp-content/uploads/2023/07/image-2.png" alt="" class="wp-image-2763" srcset="https://domo.rem81.com/wp-content/uploads/2023/07/image-2.png 432w, https://domo.rem81.com/wp-content/uploads/2023/07/image-2-254x300.png 254w" sizes="(max-width: 432px) 100vw, 432px" /></figure>



<h2 class="wp-block-heading">Grandeurs physiques:</h2>



<p>Vous retrouverez:</p>



<ul>
<li>Dans mon cas j&rsquo;affiche la température de l&rsquo;ECS, mesurée avec un autre ESP.</li>



<li>La puissance soutirée ou injectée sur le réseau.</li>



<li>La puissance et l&rsquo;intensité de l&rsquo;ECS.</li>



<li>La valeur de l’incrément.</li>



<li>La sortie Triac.</li>



<li>L’énergie soutirée par l&rsquo;ECS sur le réseau.</li>



<li>L&rsquo;énergie économisée par le routeur par jour et totale. L&rsquo;énergie par jour est calculé dans une entrée HA: voir mon article <strong><a href="https://domo.rem81.com/2022/06/06/ha-compteur-de-service-utility-meter/" target="_blank" rel="noreferrer noopener">https://domo.rem81.com/2022/06/06/ha-compteur-de-service-utility-meter/</a></strong>.</li>



<li>L&rsquo;état du binary-sensor: température Ok.</li>



<li>La température du triac.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="418" height="582" src="https://domo.rem81.com/wp-content/uploads/2023/07/image-3.png" alt="" class="wp-image-2766" srcset="https://domo.rem81.com/wp-content/uploads/2023/07/image-3.png 418w, https://domo.rem81.com/wp-content/uploads/2023/07/image-3-215x300.png 215w" sizes="(max-width: 418px) 100vw, 418px" /></figure>



<h2 class="wp-block-heading">Automatisation:</h2>



<p>La validation du router dépend de votre configuration: Si votre installation solaire ne comporte pas de batteries, vous pouvez vous inspirer de cet article <a rel="noreferrer noopener" href="https://domo.rem81.com/2022/11/25/ha-gestion-eau-chaude-sanitaire/" target="_blank">https://domo.rem81.com/2022/11/25/ha-gestion-eau-chaude-sanitaire/</a>. Depuis cet article, mon installation PV a évoluée avec l&rsquo;ajout de batteries de stockage,  depuis leur mise en service je valide le routeur lorsque les batteries sont chargées.Voici le code de cette automatisation pour information:</p>



<pre class="wp-block-code"><code>alias: 01-2-4 ECS Validation Routeur sur Absorption V2
description: float alors routeur ECS Actif
trigger:
  - platform: time_pattern
    minutes: /1
condition: &#091;]
action:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.mp2_status_bus_ve
            above: 3
            below: 6
            enabled: true
          - condition: state
            entity_id: input_boolean.ecs_av_pv
            state: "off"
          - condition: numeric_state
            entity_id: sensor.mp2_pc_ac_couplet_on_l1
            above: 1000
          - condition: numeric_state
            entity_id: sensor.mp2_niveau_charge_batteries
            above: input_number.mp2_seuil_validation_routeur
            enabled: false
        sequence:
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.ecs_av_pv
          - service: switch.turn_on
            data: {}
            target:
              entity_id:
                - switch.esp176_validation_router
          - service: notify.telegram
            data:
              message: &gt;-
                Bus VE={{states('sensor.mp2_affichage_status_bus_ve')}}
                {{-"\n"-}}SOC={{states('sensor.mp2_niveau_charge_batteries')}}%
                {{-"\n"-}}{{states("sensor.date_time") }}
              title: Validation Routeur ECS
      - conditions:
          - condition: not
            conditions:
              - condition: numeric_state
                entity_id: sensor.mp2_status_bus_ve
                above: 3
                below: 6
            enabled: true
          - condition: state
            entity_id: input_boolean.ecs_av_pv
            state: "on"
          - condition: numeric_state
            entity_id: sensor.mp2_niveau_charge_batteries
            below: input_number.mp2_seuil_devalidation_routeur
            enabled: false
        sequence:
          - service: input_boolean.turn_off
            data: {}
            target:
              entity_id: input_boolean.ecs_av_pv
          - service: switch.turn_off
            data: {}
            target:
              entity_id:
                - switch.esp176_validation_router
          - service: notify.telegram
            data:
              message: &gt;-
                Bus VE={{states('sensor.mp2_affichage_status_bus_ve')}}
                {{-"\n"-}}SOC={{states('sensor.mp2_niveau_charge_batteries')}}%
                {{-"\n"-}}{{states("sensor.date_time") }}
              title: De-Validation Routeur ECS
mode: single
trace:
  stored_traces: 10
</code></pre>



<h2 class="wp-block-heading">Affichage Local:</h2>



<p>Localement j&rsquo;affiche:</p>



<ul>
<li>Pr: Puissance sur le réseau (sortie Linky)</li>



<li>Pe: Puissance Absorbée par le ballon ECS</li>



<li>Tr: Valeur pilotage triac</li>



<li>Val: Routeur Validée</li>



<li>Tp: Température triac</li>



<li>Etat: OK si Température Triac inférieur au seuil sinon NOK</li>



<li>Mode: Automatique ou Manuel</li>



<li>Inc: Valeur de l&rsquo;increment</li>



<li>LED Rouge et Jaune allumées: Puissance Réseau entre -50 et 50 W</li>



<li>LED Rouge allumée et Jaune éteinte: On rejette plus de 50 W sur le réseau</li>



<li>LED Rouge éteinte et Jaune allumée: On soutire plus de 50 W sur le réseau</li>



<li>LED Verte allumée: Coffret sous tension</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://domo.rem81.com/wp-content/uploads/2023/07/routeur_pv-1024x1024.jpg" alt="" class="wp-image-2790" srcset="https://domo.rem81.com/wp-content/uploads/2023/07/routeur_pv-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/07/routeur_pv-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/07/routeur_pv-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/07/routeur_pv-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/07/routeur_pv-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/07/routeur_pv-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Résultats:</h2>



<p>La courbe ci dessous (extraite de Graphana) illustre l&rsquo;efficacité et la réactivité du routeur. Ce jour là, à partir de 16:40 l&rsquo;ECS ne chauffe plus, il a atteint ses 70°C, conclusion: on injecter sur le réseau.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="911" height="289" src="https://domo.rem81.com/wp-content/uploads/2023/07/image-4.png" alt="" class="wp-image-2771" style="width:842px;height:267px" srcset="https://domo.rem81.com/wp-content/uploads/2023/07/image-4.png 911w, https://domo.rem81.com/wp-content/uploads/2023/07/image-4-300x95.png 300w, https://domo.rem81.com/wp-content/uploads/2023/07/image-4-768x244.png 768w" sizes="(max-width: 911px) 100vw, 911px" /></figure>



<p>Le graphique suivant illustre les économies réalisées en kWh, les jours à 0 sont dû à un faible ensoleillement, dans mon cas je privilégie la charge des batteries avant de router vers l&rsquo;ECS.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="848" height="292" src="https://domo.rem81.com/wp-content/uploads/2023/07/image-5.png" alt="" class="wp-image-2772" style="width:843px;height:290px" srcset="https://domo.rem81.com/wp-content/uploads/2023/07/image-5.png 848w, https://domo.rem81.com/wp-content/uploads/2023/07/image-5-300x103.png 300w, https://domo.rem81.com/wp-content/uploads/2023/07/image-5-768x264.png 768w" sizes="(max-width: 848px) 100vw, 848px" /></figure>



<h1 class="wp-block-heading">Liens vers des routeurs à monter soi-même:</h1>



<p>Bien entendu cette liste est non exhaustive, si vous avez d&rsquo;autres liens, n&rsquo;hésiter pas à me les transmettre, je les ajouterai.</p>



<ul>
<li><a rel="noreferrer noopener" href="https://sites.google.com/view/le-professolaire/routeur-professolaire" data-type="URL" data-id="https://sites.google.com/view/le-professolaire/routeur-professolaire" target="_blank">Le Prof&rsquo;Solaire</a>. </li>



<li><a rel="noreferrer noopener" href="https://ptiwatt.kyna.eu/post/2022/07/09/Construction-d-un-Power-Router-pas-%C3%A0-pas" data-type="URL" data-id="https://ptiwatt.kyna.eu/post/2022/07/09/Construction-d-un-Power-Router-pas-%C3%A0-pas" target="_blank">Association P&rsquo;TIWATT</a> (celui que j&rsquo;ai longtemps utilisé)</li>



<li><a rel="noreferrer noopener" href="https://pvrouteur.apper-solaire.org/" data-type="URL" data-id="https://pvrouteur.apper-solaire.org/" target="_blank">Le Routeur/Dimmer de Cyril</a></li>



<li><a href="https://github.com/bidouilleurs/routeur_solaire" data-type="URL" data-id="https://github.com/bidouilleurs/routeur_solaire" target="_blank" rel="noreferrer noopener">Les bidouilleurs Solaire</a></li>



<li><a href="http://pvrouteur.free.fr/" data-type="URL" data-id="http://pvrouteur.free.fr/" target="_blank" rel="noreferrer noopener">pvrouteur pour les nuls</a></li>



<li><a href="https://f1atb.fr/index.php/fr/2023/07/07/u-x-i-routeur-solaire-pour-gerer-la-surproduction-photovoltaique-diy/" data-type="URL" data-id="https://f1atb.fr/index.php/fr/2022/12/03/realisez-un-routeur-solaire-pour-gerer-la-surproduction/" target="_blank" rel="noreferrer noopener">F1ATB</a></li>



<li><a href="https://github.com/Jetblack31/MaxPV" data-type="URL" data-id="https://github.com/Jetblack31/MaxPV" target="_blank" rel="noreferrer noopener">MaxPv</a></li>



<li><a rel="noreferrer noopener" href="https://mk2pvrouter.co.uk/shop.html" data-type="URL" data-id="https://mk2pvrouter.co.uk/shop.html" target="_blank">Mk2PVrouter</a></li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Un routeur solaire de plus! Celui ci est complément intégré à Home Assistant, et en plus il coûte pas trop cher. N’hésitez par me faire par de vos remarques.</p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:58:"https://domo.rem81.com/2023/07/18/pv-routeur-solaire/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:2:"22";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:97:"
		
		
					
		
		
		
				
		
		
		
		
		
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:18:"HA-Routeur Solaire";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:53:"https://domo.rem81.com/2023/04/14/ha-routeur-solaire/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:62:"https://domo.rem81.com/2023/04/14/ha-routeur-solaire/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 14 Apr 2023 17:39:07 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:9:{i:0;a:5:{s:4:"data";s:9:"Domotique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:15:"Faire soi-même";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:11:"Non classé";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:15:"Photovoltaïque";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:5:"esp32";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:6;a:5:{s:4:"data";s:7:"ESP8266";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:7;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:8;a:5:{s:4:"data";s:6:"router";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"https://domo.rem81.com/?p=2601";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:231:"Intro. Dans un article précédent, j’abordais le sujet des routeurs solaires, ces systèmes qui redirige le surplus de production de votre installation photovoltaïque vers généralement un ballon eau chaude sanitaire. &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:37183:"



<h1 class="wp-block-heading">Intro.</h1>



<p>Dans un <a href="https://domo.rem81.com/2022/10/13/pv-photovoltaique/" data-type="URL" data-id="https://domo.rem81.com/2022/10/13/pv-photovoltaique/" target="_blank" rel="noreferrer noopener">article précédent</a>, j’abordais le sujet des routeurs solaires, ces systèmes qui redirige le surplus de production de votre installation photovoltaïque vers généralement un ballon eau chaude sanitaire.</p>



<p>Depuis plusieurs années, j&rsquo;utilise le modèle  <a rel="noreferrer noopener" href="https://ptiwatt.kyna.eu/post/2022/07/09/Construction-d-un-Power-Router-pas-%C3%A0-pas" data-type="URL" data-id="https://ptiwatt.kyna.eu/post/2022/07/09/Construction-d-un-Power-Router-pas-%C3%A0-pas" target="_blank">P&rsquo;TIWATT</a> qui remplit parfaitement son role mais qui malheureusement n&rsquo;offre pas la possibilité d&rsquo;envoyer des informations de monitoring vers HA par exemple.</p>



<p>Après quelques recherches, j&rsquo;ai découvert, il y a quelques mois, un routeur à monter soit même chez<a rel="noreferrer noopener" href="https://pvrouteur.apper-solaire.org/" target="_blank"> https://pvrouteur.apper-solaire.org/</a> , la particularité étant que le routeur, l&rsquo;élément qui mesure la puissance est séparé du triac, l&rsquo;élément qui fait varier la puissance aux bornes des résistances du ballon d&rsquo;ECS, ce que j&rsquo;avais trouvé sur le coup intéressant. Après quelques essais j&rsquo;ai été convaincu par la solution mais je suis resté avec mon « P&rsquo;Titwatt » le temps de la réflexion.</p>



<h1 class="wp-block-heading">Présentation du PVROUTEUR de Cyril.</h1>



<p>La mise en oeuvre est très bien expliquée dans la <a rel="noreferrer noopener" href="https://pvrouteur.apper-solaire.org/books/pv-routeur-et-dimmer-numerique" data-type="URL" data-id="https://pvrouteur.apper-solaire.org/books/pv-routeur-et-dimmer-numerique" target="_blank">documentation</a>. Le flashage initiale des ESP peut se faire depuis une interface WEB ou pour les plus aguerris, vous pouvez personnaliser et télécharger le code avec Visual Studio Code.</p>



<p>Cyril a fait un énorme boulot, il propose les circuits imprimés du routeur et du dimmer à petit prix, par le biais de son association APPER, donnant par la même occasion la possibilité d&rsquo;en déduire une partie de vos impots.</p>



<p>Vous pouvez « chainer » plusieurs dimmers, soit en parallèle, soit en cascade, quand le premier ballon est chaud, vous basculer vers le second.</p>



<p>La configuration du dimmer se fait depuis une page WEB.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="893" height="629" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-26.png" alt="" class="wp-image-2626" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-26.png 893w, https://domo.rem81.com/wp-content/uploads/2023/04/image-26-300x211.png 300w, https://domo.rem81.com/wp-content/uploads/2023/04/image-26-768x541.png 768w" sizes="(max-width: 893px) 100vw, 893px" /></figure>



<p>Enfin, la dernière version de son dimmer communique avec HA via MQTT nativement (aucune déclaration .yaml) à écrire dans HA.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="657" height="585" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-28.png" alt="" class="wp-image-2632" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-28.png 657w, https://domo.rem81.com/wp-content/uploads/2023/04/image-28-300x267.png 300w" sizes="(max-width: 657px) 100vw, 657px" /></figure>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1022" height="607" data-id="2627" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-27.png" alt="" class="wp-image-2627" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-27.png 1022w, https://domo.rem81.com/wp-content/uploads/2023/04/image-27-300x178.png 300w, https://domo.rem81.com/wp-content/uploads/2023/04/image-27-768x456.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="710" height="453" data-id="2634" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-29.png" alt="" class="wp-image-2634" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-29.png 710w, https://domo.rem81.com/wp-content/uploads/2023/04/image-29-300x191.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>
</figure>



<h1 class="wp-block-heading">Ma solution.</h1>



<p>Dernièrement, toujours aussi frustré d&rsquo;avoir un routeur seul dans son coin sans remontée d&rsquo;information, j&rsquo;ai ré-ouvert le dossier du « pvrouter » et opté pour une solution mixte.</p>



<p>Mon installation PV est équipée de panneaux PV et de micro onduleur ainsi qu&rsquo;un onduleur chargeur Victron Multiplus 2, je récupère donc très facilement la puissance injectée ou soutirée sur le réseau en interrogeant cycliquement l&rsquo;onduleur via le protocole Modbus. Il ne me restait plus qu&rsquo;a piloter le dimmer en fonction de cette puissance en lui envoyant trame URL « htpp://IP_dimmer/?POWER=xx » avec XX de 0 à 100%.</p>



<h2 class="wp-block-heading">La partie matériel:</h2>



<p> Pour le dimmer j&rsquo;utilise un module ESP12F précablé avec alimentation en 220 VCA et un module relais. J&rsquo;ai décrit ce produit dans un <a rel="noreferrer noopener" href="https://domo.rem81.com/2023/01/09/ha-platine-relais-esp8266/" data-type="URL" data-id="https://domo.rem81.com/2023/01/09/ha-platine-relais-esp8266/" target="_blank">article précédent</a>. </p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2443" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-1024x1024.jpg" alt="" class="wp-image-2443" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="823" height="558" data-id="2444" src="https://domo.rem81.com/wp-content/uploads/2023/01/image.png" alt="" class="wp-image-2444" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/image.png 823w, https://domo.rem81.com/wp-content/uploads/2023/01/image-300x203.png 300w, https://domo.rem81.com/wp-content/uploads/2023/01/image-768x521.png 768w, https://domo.rem81.com/wp-content/uploads/2023/01/image-135x93.png 135w" sizes="(max-width: 823px) 100vw, 823px" /></figure>
</figure>



<p>C&rsquo;est  compact et facile à raccorder, cependant il est indispensable de réaffecter les broches définies par défaut dans le code d&rsquo;origine en les adaptant à la carte. Pour cela il faut modifier le fichier « config.h » avec Visual Studio Code. </p>



<p>Vous trouverez ci après les lignes concernées: les lignes 32 à 40 sont à passer en commentaire et 44 à 49 sont à ajouter.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="720" height="461" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-23.png" alt="" class="wp-image-2606" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-23.png 720w, https://domo.rem81.com/wp-content/uploads/2023/04/image-23-300x192.png 300w" sizes="(max-width: 720px) 100vw, 720px" /></figure>



<p>Ce mapping vous permet de définir facilement le câblage utilisé pour le triac.</p>



<p>Avec cette solution vous avez à câbler 4 fils entre la carte et triac, alimenter la carte (220 Vca, 5V, 12V), intercaler votre triac sur la ligne d&rsquo;alimentation du ballon. Dans cet <a rel="noreferrer noopener" href="https://domo.rem81.com/2022/11/25/ha-gestion-eau-chaude-sanitaire/" data-type="URL" data-id="https://domo.rem81.com/2022/11/25/ha-gestion-eau-chaude-sanitaire/" target="_blank">article</a>, j&rsquo;explique mon approche sur le sujet mais rien n&rsquo;est figé et chacun l&rsquo;adapte à sa configuration.</p>



<p>Pour le triac j&rsquo;ai pris <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/32802025086.html?spm=a2g0o.order_list.order_list_main.290.74315e5bWSJRyY&amp;gatewayAdapt=glo2fra" data-type="URL" data-id="https://fr.aliexpress.com/item/32802025086.html?spm=a2g0o.order_list.order_list_main.290.74315e5bWSJRyY&amp;gatewayAdapt=glo2fra" target="_blank">celui-ci</a>,</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="433" height="380" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-33.png" alt="" class="wp-image-2669" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-33.png 433w, https://domo.rem81.com/wp-content/uploads/2023/04/image-33-300x263.png 300w" sizes="(max-width: 433px) 100vw, 433px" /></figure>



<p> Il existe d&rsquo;autres modèles plus ou moins performants, Cyril les présente dans sa documentation. Concernant les risques de surchauffe à haute intensité, il est prévu une sortie de commande d&rsquo;un ventilateur de refroidissement du triac, c&rsquo;est très bien, mais personnellement je préfère surdimensionner le radiateur et rester avec un refroidissement statique sans risque de panne.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2637" src="https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183017-1024x1024.jpg" alt="" class="wp-image-2637" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183017-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183017-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183017-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183017-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183017-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183017-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2636" src="https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183027-1024x1024.jpg" alt="" class="wp-image-2636" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183027-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183027-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183027-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183027-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183027-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230409_183027-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p>Provisoirement le raccordement entre le triac et la carte ESP est réalisé avec des fils Dupont. Vous remarquerez l&rsquo;ajout du gros radiateur à ailettes sur le triac et la sonde DS18B20 qui mesure la température du radiateur. A terme, je dois encapsuler le tout dans un boitier.</p>



<p>La mise en oeuvre de la sonde est décrite dans cet <a rel="noreferrer noopener" href="https://domo.rem81.com/2023/01/09/ha-platine-relais-esp8266/" data-type="URL" data-id="https://domo.rem81.com/2023/01/09/ha-platine-relais-esp8266/" target="_blank">article</a>.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2485" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-1024x1024.jpg" alt="" class="wp-image-2485" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2484" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-1024x1024.jpg" alt="" class="wp-image-2484" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<h2 class="wp-block-heading">La partie logiciel:</h2>



<p>Je souhaitais, pour des raisons pratiques implanté l&rsquo;algorithme dans HA, je me suis tourné vers<a rel="noreferrer noopener" href="https://nodered.org/" data-type="URL" data-id="https://nodered.org/" target="_blank"> Node red</a>, ce module complémentaire HA est très pratique,  puissant et facile à installer, il existe de nombreux tuto sur le net concernant la programmation Node Red. Je ne suis pas fan, mais le pour le coup, il m&rsquo;a bien rendu service, de plus, NR est universel et s&rsquo;installe sur beaucoup de systèmes.</p>



<h3 class="wp-block-heading">Code Node red.</h3>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="801" height="558" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-35.png" alt="" class="wp-image-2690" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-35.png 801w, https://domo.rem81.com/wp-content/uploads/2023/04/image-35-300x209.png 300w, https://domo.rem81.com/wp-content/uploads/2023/04/image-35-768x535.png 768w, https://domo.rem81.com/wp-content/uploads/2023/04/image-35-135x93.png 135w" sizes="(max-width: 801px) 100vw, 801px" /></figure>



<p>Il est décomposé en  6 Nodes (ou noeuds) principaux:</p>



<ul>
<li>Un Node « Modbus read » permet d&rsquo;acquérir la puissance du réseau, négative si injection, positive si soutirage. Je lis l&rsquo;information dans mon cerbo GX (le systéme central de mon installation Victron) toutes les 2 secondes.</li>



<li>Un Node « convertion » qui convertit un entier non signé en un entier signé.</li>



<li>Un Node « Etat Dimmer » qui me remonte, depuis HA, si le dimmer est en fonctionnement ou pas, dans ce cas la sortie, le compteur interne, l&rsquo;incrément sont forcés à zéro.</li>



<li>un Node « Calcul Sortie % ». C&rsquo;est ici que je calcule la sortie vers mon dimmer entre 0 et 100%. Il contient également la mise en forme de l&rsquo;URL.</li>



<li>Un Node « transfert de l&rsquo;URL »</li>



<li>Un Node « envoi de la requète HTTP » au dimmer. </li>



<li>Quelques Nodes de mise au point et d&rsquo;affichage sur le dasboard.</li>
</ul>



<p>Et c&rsquo;est tout, j&rsquo;ai quand même ajouté un Dahsborad Node Red, histoire de visualiser le résultat et de se donner la possibilité de simuler la sortie ou la puissance réseau.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-25.png" alt="" class="wp-image-2612" width="735" height="522" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-25.png 977w, https://domo.rem81.com/wp-content/uploads/2023/04/image-25-300x213.png 300w, https://domo.rem81.com/wp-content/uploads/2023/04/image-25-768x546.png 768w" sizes="(max-width: 735px) 100vw, 735px" /></figure>



<p>Pour utiliser le code que je vous propose, il faut installer ces deux palettes complémentaires dans NR:</p>



<ul>
<li>node-red-contrib-modbus</li>



<li>node-red-dashboard</li>
</ul>



<p>Vous trouver en annexe le code NR à copier/coller dans « import nodes ».</p>



<h3 class="wp-block-heading">Algorithme de régulation.</h3>



<p>J&rsquo;ai fait simple, le principe retenu est le suivant: </p>



<ul>
<li>Je compare la valeur absolue de la mesure de puissance à 7 plages de valeurs et selon la plage concernée, je donne une valeur à un incrément. Avec cette valeur, j’incrémente ou je décrémente ma sortie % du triac au rythme des lectures de puissance, cadencées à 2 secondes.</li>



<li>Plus la puissance est proche de zéro, plus l&rsquo;incrément est petit, plus la puissance s&rsquo;éloigne du zéro, plus l&rsquo;incrément est grand.</li>



<li>Les plages de puissance  et les valeurs des incréments, définies arbitrairement, sont à ajuster, j&rsquo;attends plus de production solaire pour affiner les réglages.</li>



<li>Je n&rsquo;exclue pas, si les résultats sont non satisfaisants de revoir complètement cet algorithme.</li>
</ul>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Palier</strong></td><td><strong>Pu (W)</strong></td><td><strong>Incrément</strong></td></tr><tr><td>Palier 0</td><td>0</td><td>0</td></tr><tr><td>Palier 1</td><td>10</td><td>1</td></tr><tr><td>Palier 2</td><td>50</td><td>1</td></tr><tr><td>Palier 3</td><td>100</td><td>2</td></tr><tr><td>Palier 4</td><td>200</td><td>3</td></tr><tr><td>Palier 5</td><td>300</td><td>4</td></tr><tr><td>Palier 6</td><td>600</td><td>6</td></tr><tr><td>Palier 7</td><td>900</td><td>7</td></tr></tbody></table><figcaption class="wp-element-caption">Tableau des paliers programmés dans NR</figcaption></figure>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="580" height="338" data-id="2695" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-36.png" alt="" class="wp-image-2695" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-36.png 580w, https://domo.rem81.com/wp-content/uploads/2023/04/image-36-300x175.png 300w" sizes="(max-width: 580px) 100vw, 580px" /></figure>
</figure>



<p>Un des avantages de Node Red est qu&rsquo;il vous permet de réaliser des tests en temps réels et revenir très facilement en arrière.</p>



<p>J&rsquo;ai fait quelques tentatives de régulation avec un PID, sans résultat, mais c&rsquo;est une piste que je compte explorer plus en avant.</p>



<h2 class="wp-block-heading">Courbes de résultat:</h2>



<p>A compléter quand j&rsquo;aurai d&rsquo;autres courbes significatives à montrer.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-32-1024x437.png" alt="" class="wp-image-2663" width="896" height="382" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-32-1024x437.png 1024w, https://domo.rem81.com/wp-content/uploads/2023/04/image-32-300x128.png 300w, https://domo.rem81.com/wp-content/uploads/2023/04/image-32-768x328.png 768w, https://domo.rem81.com/wp-content/uploads/2023/04/image-32.png 1308w" sizes="(max-width: 896px) 100vw, 896px" /></figure>



<h2 class="wp-block-heading">Vue HA:</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="387" height="610" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-31.png" alt="" class="wp-image-2641" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-31.png 387w, https://domo.rem81.com/wp-content/uploads/2023/04/image-31-190x300.png 190w" sizes="(max-width: 387px) 100vw, 387px" /></figure>



<h2 class="wp-block-heading">Solution alternative.</h2>



<p>Vous l&rsquo;avez compris, ma solution est simplifiée par le fait que la puissance réseau est disponible en Modbus dans mon onduleur, ce qui n&rsquo;est pas le cas le plus répandu, j&rsquo;en convient, mais vous pouvez très bien exemple vous équiper d&rsquo;un compteur de puissance communiquant en Modbus ou autre protocole, l&rsquo;important étant d&rsquo;avoir un temps de rafraîchissement de la mesure de puissance de quelques secondes (2 dans mon cas).</p>



<p>J&rsquo;anticipe la question,  non on ne peut pas utiliser le Linky qui ne délivre qu&rsquo;une puissance apparente en VA, à une cadence non maîtrisée et aux valeurs incertaines.</p>



<p>La solution avec un <a rel="noreferrer noopener" href="https://domo.rem81.com/2021/02/24/home-assistant-gestion-piscine-2_mesure-de-puissance-electrique/" data-type="URL" data-id="https://domo.rem81.com/2021/02/24/home-assistant-gestion-piscine-2_mesure-de-puissance-electrique/" target="_blank">module PZEM</a> ne convient pas non plus, la mesure est toujours positive.</p>



<h1 class="wp-block-heading">Liens vers des routeurs à monter soi-même:</h1>



<p>Bien entendu cette liste est non exhaustive, si vous avez d&rsquo;autres liens, n&rsquo;hésiter pas à me les transmettre, je les ajouterai.</p>



<ul>
<li><a rel="noreferrer noopener" href="https://sites.google.com/view/le-professolaire/routeur-professolaire" data-type="URL" data-id="https://sites.google.com/view/le-professolaire/routeur-professolaire" target="_blank">Le Prof&rsquo;Solaire</a>. </li>



<li><a rel="noreferrer noopener" href="https://ptiwatt.kyna.eu/post/2022/07/09/Construction-d-un-Power-Router-pas-%C3%A0-pas" data-type="URL" data-id="https://ptiwatt.kyna.eu/post/2022/07/09/Construction-d-un-Power-Router-pas-%C3%A0-pas" target="_blank">Association P&rsquo;TIWATT</a> (celui que j&rsquo;ai longtemps utilisé)</li>



<li><a rel="noreferrer noopener" href="https://pvrouteur.apper-solaire.org/" data-type="URL" data-id="https://pvrouteur.apper-solaire.org/" target="_blank">Le Routeur/Dimmer de Cyril</a> (celui décrit dans cet article)</li>



<li><a href="https://github.com/bidouilleurs/routeur_solaire" data-type="URL" data-id="https://github.com/bidouilleurs/routeur_solaire" target="_blank" rel="noreferrer noopener">Les bidouilleurs Solaire</a></li>



<li><a href="http://pvrouteur.free.fr/" data-type="URL" data-id="http://pvrouteur.free.fr/" target="_blank" rel="noreferrer noopener">pvrouteur pour les nuls</a></li>



<li><a href="https://f1atb.fr/index.php/fr/2022/12/03/realisez-un-routeur-solaire-pour-gerer-la-surproduction/" data-type="URL" data-id="https://f1atb.fr/index.php/fr/2022/12/03/realisez-un-routeur-solaire-pour-gerer-la-surproduction/" target="_blank" rel="noreferrer noopener">F1ATB</a> </li>



<li><a href="https://github.com/Jetblack31/MaxPV" data-type="URL" data-id="https://github.com/Jetblack31/MaxPV" target="_blank" rel="noreferrer noopener">MaxPv</a></li>



<li><a href="https://mk2pvrouter.co.uk/shop.html" data-type="URL" data-id="https://mk2pvrouter.co.uk/shop.html" target="_blank" rel="noreferrer noopener">Mk2PVrouter</a></li>
</ul>



<h1 class="wp-block-heading">Conclusion:</h1>



<p>Cette solution est destinée à ceux qui aiment bricoler, mais finalement pas tant que ça. Il existe beaucoup de routeurs prêt à l&#8217;emploi, certainement plus performant vu leur prix. Celui ci vous coûtera quelques euros, surtout si vous avez un compteur communiquant. </p>



<h1 class="wp-block-heading">Annexe:</h1>



<p>Code .JSON du Flow Node Red:</p>



<pre class="wp-block-code"><code>&#091;{"id":"99c8e0165e0d303e","type":"tab","label":"Router","disabled":false,"info":"","env":&#091;]},{"id":"d5bb5a6fbe8a8900","type":"http request","z":"99c8e0165e0d303e","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":&#091;{"keyType":"msg","keyValue":"payload","valueType":"other","valueValue":""}],"x":710,"y":100,"wires":&#091;&#091;]]},{"id":"f3351be463b175be","type":"function","z":"99c8e0165e0d303e","name":"function 1","func":"var value=msg.payload;\n\nif (value &lt; 0) {\n    value = 0;\n} else if (value &gt; 100) {\n    value = 100;\n}\n\n\nmsg.payload = \"http://192.168.0.77/?POWER=\"+value;\nreturn msg;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":&#091;],"x":300,"y":80,"wires":&#091;&#091;"5317965d8acbf016"]]},{"id":"5317965d8acbf016","type":"change","z":"99c8e0165e0d303e","name":"","rules":&#091;{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":220,"wires":&#091;&#091;"d5bb5a6fbe8a8900","efd318f8.965d28","e7032485600e2013"]]},{"id":"1ae1ff1136b1ce65","type":"debug","z":"99c8e0165e0d303e","name":"Increment","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":700,"y":380,"wires":&#091;]},{"id":"90a44f2c9d4a8c4d","type":"debug","z":"99c8e0165e0d303e","name":"PU grid","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":420,"y":360,"wires":&#091;]},{"id":"efd318f8.965d28","type":"debug","z":"99c8e0165e0d303e","name":"URL","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":160,"wires":&#091;]},{"id":"3215c48483a96014","type":"function","z":"99c8e0165e0d303e","name":"Calcul Sortie %","func":"var pu = Math.abs(msg.pu);\nvar pu_net = msg.pu;\nvar pourcentage;\nvar increment;\nvar count;\nvar Palier0 = 0;\nvar Palier1 = 10;\nvar Palier2 = 50;\nvar Palier3 = 100;\nvar Palier4 = 200;\nvar Palier5 = 350;\nvar Palier6 = 600;\nvar Palier7 = 900;\nvar etat = msg.dimmer; // Etat dimmer\n\nif (etat === \"on\") {\n\n    if (context.get('count') === undefined) {\n        context.set('count', 0);\n    }\n\n    if (pu &gt;= Palier1 &amp;&amp; pu &lt; Palier2) {\n        increment = 1;\n    }\n    else if (pu &gt;= Palier2 &amp;&amp; pu &lt; Palier3) {\n        increment = 1; \n    }\n    else if (pu &gt;= Palier3 &amp;&amp; pu &lt; Palier4) {\n        increment = 2; \n    }\n    else if (pu &gt;= Palier4 &amp;&amp; pu &lt; Palier5) {\n        increment = 3; \n    }\n    else if (pu &gt;= Palier5 &amp;&amp; pu &lt; Palier6) {\n        increment = 5;\n    }\n    else if (pu &gt;= Palier6 &amp;&amp; pu &lt; Palier7) {\n        increment = 6;\n    }\n    else if (pu &gt;= Palier7) {\n        increment = 7;\n    }\n    else {\n        increment = 0;\n    }\n\n    if (pu_net &lt; 0) {\n        count = context.get('count') + increment;\n    } else {\n        count = context.get('count') - increment;\n    }\n    context.set('count', count);\n    pourcentage = Math.trunc(Math.min(100, count));\n\n    if (context.get('count') &lt; 0) {\n        context.set('count', 0);\n        pourcentage = 0;\n    }\n    if (context.get('count') &gt; 100) {\n        context.set('count', 100);\n        pourcentage = 100;\n    }\n} else {\n    pourcentage = 0;\n    increment = 0;\n    context.set('count', 0)\n}\n\n\nmsg.payload = \"http://192.168.0.77/?POWER=\" + pourcentage;\n\nvar msg2 = { payload: increment }\nvar msg3 = { payload: pourcentage }\nreturn &#091;msg, msg2, msg3];","outputs":3,"noerr":0,"initialize":"","finalize":"","libs":&#091;],"x":440,"y":420,"wires":&#091;&#091;"5317965d8acbf016"],&#091;"1ae1ff1136b1ce65","46f7a8fd5e230c2f"],&#091;"d94c0ff96671f33a","bf0712cff0298b48"]]},{"id":"46f7a8fd5e230c2f","type":"ui_gauge","z":"99c8e0165e0d303e","name":"","group":"dedd34935ebbcdc1","order":1,"width":"3","height":"3","gtype":"gage","title":"Increment","label":"units","format":"{{value}}","min":0,"max":"20","colors":&#091;"#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","diff":false,"className":"","x":700,"y":440,"wires":&#091;]},{"id":"d94c0ff96671f33a","type":"ui_gauge","z":"99c8e0165e0d303e","name":"","group":"dedd34935ebbcdc1","order":2,"width":"3","height":"3","gtype":"gage","title":"Sortie V1","label":"units","format":"{{value}}","min":0,"max":"100","colors":&#091;"#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","diff":false,"className":"","x":700,"y":480,"wires":&#091;]},{"id":"8a52316c884dd04e","type":"modbus-read","z":"99c8e0165e0d303e","name":"Pu grid","topic":"Pu_grid","showStatusActivities":true,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"100","dataType":"HoldingRegister","adr":"820","quantity":"1","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"5","server":"af1b6fc455ed5ad2","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":true,"x":90,"y":200,"wires":&#091;&#091;"d4c7e3e3.526538"],&#091;]]},{"id":"d4c7e3e3.526538","type":"function","z":"99c8e0165e0d303e","name":"Convertion","func":"// Entrée : msg.payload (entier non signé)\n// Sortie : msg.payload (entier signé)\n\n// Récupérer la valeur de l'entier non signé\nvar unsignedInt = msg.payload;\n\n// Créer un tableau tampon (Buffer) pour stocker les données\nvar buffer = Buffer.allocUnsafe(2);\n\n// Écrire la valeur de l'entier non signé dans le tampon\nbuffer.writeUInt16BE(unsignedInt, 0);\n\n// Lire la valeur de l'entier signé depuis le tampon\nvar signedInt = buffer.readInt16BE(0);\n\n// Mettre à jour la valeur du message avec l'entier signé\nmsg.payload = signedInt;\n\n// Renvoyer le message modifié\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":&#091;],"x":130,"y":300,"wires":&#091;&#091;"90a44f2c9d4a8c4d","af31ae510b0e868b","fe46843e5a1bd030","62c4bfac1802aab7"]]},{"id":"d485d8cc726be5c8","type":"ui_slider","z":"99c8e0165e0d303e","name":"","label":"Simul Sortie","tooltip":"","group":"378299f3e47d4d20","order":2,"width":0,"height":0,"passthru":true,"outs":"all","topic":"topic","topicType":"msg","min":"0","max":"100","step":1,"className":"","x":110,"y":80,"wires":&#091;&#091;"f3351be463b175be"]]},{"id":"af31ae510b0e868b","type":"ui_chart","z":"99c8e0165e0d303e","name":"","group":"13956cf323d720cd","order":2,"width":0,"height":0,"label":"Pu Réseau","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"5","removeOlderPoints":"","removeOlderUnit":"60","cutout":0,"useOneColor":false,"useUTC":false,"colors":&#091;"#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":710,"y":280,"wires":&#091;&#091;]]},{"id":"e7032485600e2013","type":"ui_text","z":"99c8e0165e0d303e","group":"dedd34935ebbcdc1","order":4,"width":0,"height":0,"name":"","label":"Trame","format":"{{msg.payload}}","layout":"row-spread","className":"","x":690,"y":220,"wires":&#091;]},{"id":"bf0712cff0298b48","type":"ui_chart","z":"99c8e0165e0d303e","name":"","group":"dedd34935ebbcdc1","order":3,"width":0,"height":0,"label":"Sortie GV1","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"15","removeOlderPoints":"","removeOlderUnit":"60","cutout":0,"useOneColor":false,"useUTC":false,"colors":&#091;"#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":710,"y":520,"wires":&#091;&#091;]]},{"id":"b746980fc02e1b13","type":"ui_slider","z":"99c8e0165e0d303e","name":"","label":"Simul Puissance","tooltip":"","group":"378299f3e47d4d20","order":1,"width":0,"height":0,"passthru":true,"outs":"all","topic":"topic","topicType":"msg","min":"-1000","max":"1000","step":1,"className":"","x":130,"y":140,"wires":&#091;&#091;"3215c48483a96014"]]},{"id":"eb37db9b39905dbc","type":"function","z":"99c8e0165e0d303e","name":"essai","func":"var etat = msg.pu;\nvar msg1;\n\nif (etat === \"on\") {\n      msg1 = msg.payload;\n    } \n    else{\n      msg1=0;\n    }\n  \n\nmsg = { payload:etat};\n\nreturn &#091;msg];","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":&#091;],"x":490,"y":540,"wires":&#091;&#091;"621b588ed3d71afe"]]},{"id":"fe46843e5a1bd030","type":"api-current-state","z":"99c8e0165e0d303e","name":"Etat Dimmer","server":"45bc8be7.a4f0a4","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"switch.dimmer_on_off_4630","state_type":"str","blockInputOverrides":false,"outputProperties":&#091;{"property":"dimmer","propertyType":"msg","value":"","valueType":"entityState"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":130,"y":360,"wires":&#091;&#091;"be258b9d8eefcd93"]]},{"id":"be258b9d8eefcd93","type":"change","z":"99c8e0165e0d303e","name":"payload-&gt;Pu","rules":&#091;{"t":"set","p":"pu","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":210,"y":420,"wires":&#091;&#091;"eb37db9b39905dbc","ea6ab9ee1fa0e3f6","3215c48483a96014"]]},{"id":"621b588ed3d71afe","type":"debug","z":"99c8e0165e0d303e","name":"debug 5","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":700,"y":580,"wires":&#091;]},{"id":"ea6ab9ee1fa0e3f6","type":"debug","z":"99c8e0165e0d303e","name":"Pu","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":470,"y":480,"wires":&#091;]},{"id":"f531da7a37f7ebd6","type":"comment","z":"99c8e0165e0d303e","name":"Routeur PV","info":"","x":390,"y":40,"wires":&#091;]},{"id":"62c4bfac1802aab7","type":"ui_gauge","z":"99c8e0165e0d303e","name":"","group":"13956cf323d720cd","order":1,"width":"3","height":"3","gtype":"gage","title":"Pu reseau","label":"units","format":"{{value}}","min":"-1000","max":"1000","colors":&#091;"#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","diff":false,"className":"","x":710,"y":320,"wires":&#091;]},{"id":"dedd34935ebbcdc1","type":"ui_group","name":"1","tab":"35ebc542aeecc309","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"af1b6fc455ed5ad2","type":"modbus-client","name":"Victron","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"failureLogEnabled":true,"tcpHost":"192.168.0.86","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"0x3A","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true,"showWarnings":true,"showLogs":true},{"id":"378299f3e47d4d20","type":"ui_group","name":"4","tab":"35ebc542aeecc309","order":4,"disp":true,"width":"6","collapse":false,"className":""},{"id":"13956cf323d720cd","type":"ui_group","name":"2","tab":"35ebc542aeecc309","order":2,"disp":true,"width":"6","collapse":false,"className":""},{"id":"45bc8be7.a4f0a4","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true},{"id":"35ebc542aeecc309","type":"ui_tab","name":"Victron","icon":"dashboard","disabled":false,"hidden":false}]</code></pre>



<p></p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:58:"https://domo.rem81.com/2023/04/14/ha-routeur-solaire/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"9";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:100:"
		
		
					
		
		
		
				
		
		
		
		
		
		
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:24:"HA-ESP8266 sur Batterie.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:59:"https://domo.rem81.com/2023/03/25/ha-esp8266-sur-batteries/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:68:"https://domo.rem81.com/2023/03/25/ha-esp8266-sur-batteries/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 25 Mar 2023 15:45:00 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:10:{i:0;a:5:{s:4:"data";s:9:"Domotique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:15:"Faire soi-même";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:15:"Photovoltaïque";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:10:"Prototypes";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:5:"Eagle";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:6;a:5:{s:4:"data";s:7:"ESP8266";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:7;a:5:{s:4:"data";s:7:"ESPHOME";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:8;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:9;a:5:{s:4:"data";s:8:"wemos d1";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"https://domo.rem81.com/?p=2516";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:184:"Intro Dans cet article je vous propose de partager mon expérience dans la mise en oeuvre d&#8217;un ESP8266 (ou Wemos D1) alimenté par une batterie et un panneau solaire. Le &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:21933:"



<h1 class="wp-block-heading">Intro</h1>



<p>Dans cet article je vous propose de partager mon expérience dans la mise en oeuvre d&rsquo;un ESP8266 (ou Wemos D1) alimenté par une batterie et un panneau solaire. Le but est de le rendre indépendant de toute source d’alimentation, la limite étant celle du Wi-Fi. </p>



<h1 class="wp-block-heading">Partie matérielle</h1>



<p>L&rsquo;objectif de ce montage est de pouvoir relever des températures élevées dans un barbecue au gaz, c&rsquo;est pourquoi j&rsquo;ai utilisé un module thermocouple, bien évidemment vous pouvez l&rsquo;adapter avec d&rsquo;autres types de capteur, la <a href="https://esphome.io/index.html" target="_blank" rel="noreferrer noopener">bibliothèque ESPHome</a> en contient un grand nombre.</p>



<p>Je l&rsquo;ai également utilisé cet été pour mesurer la température des panneaux photovoltaïques installés sur le toit, plus de 70°C en plein soleil et en ce&nbsp;moment je surveille la température de mes plans potagés dans une petite serre.</p>



<h2 class="wp-block-heading">Liste des courses</h2>



<p>Les articles nécessaires à la réalisation de ce montage sont facilement trouvables sur le Net, je vous donne des liens Ali Express, mais Amazon vous les propose également en plus cher.</p>



<p><strong>Un panneau solaire 6V</strong> de 1 ou 2W, plus il est puissant, plus vite la batterie sera chargée, plus sa surface est importante. Vous en trouvez <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/1005002326120433.html?spm=a2g0o.productlist.main.1.6b806155bSx9B6&amp;algo_pvid=15bdb46e-f928-4606-81fc-0c9b93ec9a12&amp;aem_p4p_detail=2023040105492511102525816105520010997633&amp;algo_exp_id=15bdb46e-f928-4606-81fc-0c9b93ec9a12-0&amp;pdp_ext_f=%7B%22sku_id%22%3A%2212000020099392676%22%7D&amp;pdp_npi=3%40dis%21EUR%2110.37%215.6%21%21%21%21%21%402145288516803533657211480d0710%2112000020099392676%21sea%21FR%21833459399&amp;curPageLogUid=tsYnjJERRxaO&amp;ad_pvid=2023040105492511102525816105520010997633_1&amp;ad_pvid=2023040105492511102525816105520010997633_1" target="_blank">Ici par exemple</a></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="485" height="305" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-2.png" alt="" class="wp-image-2521" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-2.png 485w, https://domo.rem81.com/wp-content/uploads/2023/04/image-2-300x189.png 300w" sizes="(max-width: 485px) 100vw, 485px" /></figure>



<p><strong>Un module de chargeur de batterie</strong> au Lithium, Type c/Micro/Mini USB 5V 1A 18650 TP4056, carte de charge avec Protection, double fonction 1A Li-ion. Ce chargeur protège votre batterie 18650 tout en délivrant une tension de 5V à partir du 3.7V de la batterie.</p>



<p>Vous en trouvez <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/1005005114469893.html?spm=a2g0o.productlist.main.1.5dc652264bT8Ff&amp;algo_pvid=340c60cb-4a15-451b-b6af-4168b3146ef0&amp;aem_p4p_detail=202304010600064949459412040430010647505&amp;algo_exp_id=340c60cb-4a15-451b-b6af-4168b3146ef0-0&amp;pdp_ext_f=%7B%22sku_id%22%3A%2212000031966085554%22%7D&amp;pdp_npi=3%40dis%21EUR%213.08%212.86%21%21%21%21%21%402145279016803540069372618d0715%2112000031966085554%21sea%21FR%21833459399&amp;curPageLogUid=6JW2N4ixk1qT&amp;ad_pvid=202304010600064949459412040430010647505_1&amp;ad_pvid=202304010600064949459412040430010647505_1" target="_blank">ici par exemple</a> </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="379" height="305" src="https://domo.rem81.com/wp-content/uploads/2023/04/image.png" alt="" class="wp-image-2519" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image.png 379w, https://domo.rem81.com/wp-content/uploads/2023/04/image-300x241.png 300w" sizes="(max-width: 379px) 100vw, 379px" /></figure>



<p><strong>Un module Wemos D1,</strong> vous en trouvez facilement sur Amazon ou Ali Express.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="199" height="166" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-3.png" alt="" class="wp-image-2522"/></figure>



<p><strong>Un module 4 entrées analogiques</strong> ADS1115, vous en trouvez facilement sur Amazon ou Ali Express. Il n&rsquo;est pas indispensable, je m&rsquo;en sert pour remonter vers HA la tension délivrée par le panneau photovoltaïque. Vous en trouvez <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/1005001621657760.html?spm=a2g0o.productlist.main.1.a4ee19bdtEo8z2&amp;algo_pvid=455c2121-df29-4736-85ef-58b93ac3a129&amp;aem_p4p_detail=20230401061242235178593433420011056661&amp;algo_exp_id=455c2121-df29-4736-85ef-58b93ac3a129-0&amp;pdp_ext_f=%7B%22sku_id%22%3A%2212000016846178951%22%7D&amp;pdp_npi=3%40dis%21EUR%212.57%212.13%21%21%21%21%21%402100bc5c16803547621028288d0737%2112000016846178951%21sea%21FR%21833459399&amp;curPageLogUid=tXstcoW1LNf2&amp;ad_pvid=20230401061242235178593433420011056661_1&amp;ad_pvid=20230401061242235178593433420011056661_1" target="_blank">ici par exemple</a>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="195" height="209" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-4.png" alt="" class="wp-image-2524"/></figure>



<p><strong>Une batterie 18650</strong>, 3000 mAh minimum, 4500mAh est plus courant.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="398" height="203" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-7.png" alt="" class="wp-image-2529" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-7.png 398w, https://domo.rem81.com/wp-content/uploads/2023/04/image-7-300x153.png 300w" sizes="(max-width: 398px) 100vw, 398px" /></figure>



<p><strong>Un support de batterie 18650.</strong> Vous en trouverez <a href="https://fr.aliexpress.com/item/1005005207627561.html?spm=a2g0o.productlist.main.5.477f796cx02yF0&amp;algo_pvid=88c6f83a-689a-4fa6-8090-8d7004438738&amp;aem_p4p_detail=202304010944263228197501919150011300655&amp;algo_exp_id=88c6f83a-689a-4fa6-8090-8d7004438738-2&amp;pdp_ext_f=%7B%22sku_id%22%3A%2212000032170440885%22%7D&amp;pdp_npi=3%40dis%21EUR%2111.39%2111.28%21%21%21%21%21%402145279016803674664643468d0715%2112000032170440885%21sea%21FR%21833459399&amp;curPageLogUid=AeUuFLhEbrBZ&amp;ad_pvid=202304010944263228197501919150011300655_3&amp;ad_pvid=202304010944263228197501919150011300655_3" target="_blank" rel="noreferrer noopener">ici par exemple.</a></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="459" height="308" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-8.png" alt="" class="wp-image-2530" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-8.png 459w, https://domo.rem81.com/wp-content/uploads/2023/04/image-8-300x201.png 300w" sizes="(max-width: 459px) 100vw, 459px" /></figure>



<p><strong>Un module thermocouple</strong> « max31855 » 0-800°C. Vous en trouverez <a href="https://fr.aliexpress.com/item/1902975189.html?spm=a2g0o.order_list.order_list_main.5.58635e5bHXAF2q&amp;gatewayAdapt=glo2fra">ici par exemple</a></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="358" height="260" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-5.png" alt="" class="wp-image-2527" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-5.png 358w, https://domo.rem81.com/wp-content/uploads/2023/04/image-5-300x218.png 300w" sizes="(max-width: 358px) 100vw, 358px" /></figure>



<p><strong>Un bouton poussoir</strong> de réinitialisation avec un contact normalement ouvert. Pas indispensable, mais j&rsquo;en met systématiquement, cela évite d&rsquo;avoir à ouvrir le boitier pour réinitialiser le Wemos. Vous en trouverez <a href="https://fr.aliexpress.com/item/32711341102.html?spm=a2g0o.productlist.main.77.703e2af9Dj2zOi&amp;algo_pvid=3386dae9-4146-4fa2-8600-002982aba42c&amp;algo_exp_id=3386dae9-4146-4fa2-8600-002982aba42c-38&amp;pdp_ext_f=%7B%22sku_id%22%3A%2261006852655%22%7D&amp;pdp_npi=3%40dis%21EUR%212.42%212.18%21%21%21%21%21%402100b77316803565873478016d0720%2161006852655%21sea%21FR%21833459399&amp;curPageLogUid=gHlgQJkJxipe" target="_blank" rel="noreferrer noopener">ici par exemple</a>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="108" height="204" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-11.png" alt="" class="wp-image-2536"/></figure>



<h2 class="wp-block-heading">Schéma électronique</h2>



<p>Une fois le matériel acheté, vous pouvez commencer à les raccorder entre eux via le schéma suivant. Ce schéma a été élaboré avec « Eagle de Autodesk ».  </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="253" height="79" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-9.png" alt="" class="wp-image-2532"/></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-10.png" alt="" class="wp-image-2533" width="878" height="472" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-10.png 964w, https://domo.rem81.com/wp-content/uploads/2023/04/image-10-300x162.png 300w, https://domo.rem81.com/wp-content/uploads/2023/04/image-10-768x413.png 768w" sizes="(max-width: 878px) 100vw, 878px" /></figure>



<p>Le 5V+ est relié à la broche A0 du Wemos afin de mesurer sa tension d&rsquo;alimentation.</p>



<p>Le +6V du panneau PV est relié à l&rsquo;entrée A0 du module ADS1115.</p>



<h2 class="wp-block-heading">Circuit Imprimé</h2>



<p>Élaboré avec Eagle, vous pouvez sous traiter la fabrication de ce type de PCB à <a href="https://jlcpcb.com/" target="_blank" rel="noreferrer noopener">https://jlcpcb.com/</a> ça coûte que dalle, c&rsquo;est du travail de pro, il faut pas être pressé et c&rsquo;est quantité 5 minimum.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="244" height="310" data-id="2539" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-12.png" alt="" class="wp-image-2539" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-12.png 244w, https://domo.rem81.com/wp-content/uploads/2023/04/image-12-236x300.png 236w" sizes="(max-width: 244px) 100vw, 244px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="247" height="312" data-id="2540" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-13.png" alt="" class="wp-image-2540" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-13.png 247w, https://domo.rem81.com/wp-content/uploads/2023/04/image-13-238x300.png 238w" sizes="(max-width: 247px) 100vw, 247px" /></figure>
</figure>



<p>Et ça coute vraiment pas cher! 2€ pour 5 PCB.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="915" height="355" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-14.png" alt="" class="wp-image-2541" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-14.png 915w, https://domo.rem81.com/wp-content/uploads/2023/04/image-14-300x116.png 300w, https://domo.rem81.com/wp-content/uploads/2023/04/image-14-768x298.png 768w" sizes="(max-width: 915px) 100vw, 915px" /></figure>



<p>Je mets à votre disposition en téléchargement le fichier Gerber qui permet de faire fabriquer le PCB.</p>



<div class="wp-block-file"><a id="wp-block-file--media-7eaf6d71-bf64-4bb2-bebb-0a42491038e0" href="https://domo.rem81.com/wp-content/uploads/2023/04/CAMOutputs.zip">CAMOutputs</a><a href="https://domo.rem81.com/wp-content/uploads/2023/04/CAMOutputs.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-7eaf6d71-bf64-4bb2-bebb-0a42491038e0">Télécharger</a></div>



<h2 class="wp-block-heading">Mise en oeuvre</h2>



<p>J&rsquo;ai mis le PCB dans une boite plastique d’électricité 100*100, on voit sur la photo qu&rsquo;elle à vécue ainsi que le panneau mais ils tiennent le choc.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2556" src="https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163101-1024x1024.jpg" alt="" class="wp-image-2556" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163101-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163101-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163101-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163101-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163101-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163101-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2555" src="https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163127-1024x1024.jpg" alt="" class="wp-image-2555" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163127-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163127-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163127-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163127-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163127-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/04/IMG_20230401_163127-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<h1 class="wp-block-heading">Partie Logicielle</h1>



<p>C&rsquo;est sans surprise, le Wemos est codé avec ESphome. J&rsquo;ai décrit le premier flashage d&rsquo;un ESP dans cet <a rel="noreferrer noopener" href="https://domo.rem81.com/2021/03/25/" target="_blank">article</a>.</p>



<p>Rien d&rsquo;exceptionnel si ce n&rsquo;est la mise en veille de l&rsquo;ESP et la mesure VCC</p>



<h2 class="wp-block-heading">Mise en veille de l&rsquo;ESP:</h2>



<p>Il faut savoir que l&rsquo;ESP se met en veille par logiciel, mais pour le sortir de sa torpeur, la broche D0  doit être reliée à la broche RST, d&rsquo;ou la présence du cavalier, si vous l&rsquo;enlevez, il ne se réveille pas.</p>



<p>Lorsque que le Wemos est en veille, il ne communique plus donc impossible de télécharger une mise à jour par exemple, c&rsquo;est pourquoi par programme, je « bloque » sa mis en veille avec un « input_boolean.reveil_esp127_thermocouple » déclaré dans HA. Sur ON, la mise en veille est bloquée. Une fois le téléchargement de la mise à jour terminé vous le remettez sur OFF.</p>



<p>Vous pouvez déclarer l&rsquo;input_boolean dans « ../config/helpers. ».</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="707" height="504" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-16.png" alt="" class="wp-image-2548" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-16.png 707w, https://domo.rem81.com/wp-content/uploads/2023/04/image-16-300x214.png 300w" sizes="(max-width: 707px) 100vw, 707px" /></figure>



<h2 class="wp-block-heading">Mesure VCC</h2>



<p>Tout est dit dans la <a rel="noreferrer noopener" href="https://esphome.io/components/sensor/adc.html#adc-esp8266-vcc" target="_blank">documentation ESP</a>, vous mesurez au max 3.3 V bien que ce soit 5V de relier à la broche A0.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="678" height="454" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-15.png" alt="" class="wp-image-2546" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-15.png 678w, https://domo.rem81.com/wp-content/uploads/2023/04/image-15-300x201.png 300w" sizes="(max-width: 678px) 100vw, 678px" /></figure>



<p>Un exemple de la mesure de tension fluctuant avec le niveau de charge de la batterie:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-21-1024x451.png" alt="" class="wp-image-2558" width="946" height="416" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-21-1024x451.png 1024w, https://domo.rem81.com/wp-content/uploads/2023/04/image-21-300x132.png 300w, https://domo.rem81.com/wp-content/uploads/2023/04/image-21-768x338.png 768w, https://domo.rem81.com/wp-content/uploads/2023/04/image-21.png 1316w" sizes="(max-width: 946px) 100vw, 946px" /></figure>



<p>Le panneau, bien que très bon marché, produit des que le jour se lève même par temps couvert:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="549" height="453" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-22.png" alt="" class="wp-image-2560" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-22.png 549w, https://domo.rem81.com/wp-content/uploads/2023/04/image-22-300x248.png 300w" sizes="(max-width: 549px) 100vw, 549px" /></figure>



<h2 class="wp-block-heading">Code YAML</h2>



<p>Dans mon exemple, l&rsquo;ESP se « réveille » pendant 60s  (<strong>duree_reveil</strong>) toutes les 5mn (<strong>duree_sommeil</strong>). A adapter selon vos besoins dans « substitutions ».</p>



<pre class="wp-block-code"><code>substitutions:
  device_name: esp127-thermocouple
  adress_ip: "192.168.0.127"
  friendly_name: esp127
  duree_sommeil: "5min"
  duree_reveil: "60s"
  
esphome:
  name: ${device_name}
  platform: ESP8266
  board: d1_mini
  on_boot:
    then:
      - script.execute: exec_deep_sleep

wifi:
  networks:
    - ssid: !secret wifi_esp
      password: !secret mdpwifi_esp
      priority: 2
    - ssid: !secret wifi
      password: !secret mdpwifi
      priority: 0
  reboot_timeout: 5min
  
  manual_ip:
    static_ip: ${adress_ip}
    gateway: 192.168.0.254
    subnet: 255.255.255.0
    
deep_sleep:
  sleep_duration: ${duree_sommeil}
  id: control_deep_sleep
  
i2c:
  sda: GPIO4 #D2
  scl: GPIO5 #D1
  scan: true
  id: bus_a

logger:
api:
ota:
web_server:
  port: 80
  
spi:
  miso_pin: D5
  clk_pin: D8 #ex D1

ads1115:
  - address: 0x48
  
sensor:
  - platform: ads1115
    multiplexer: 'A0_GND'
    gain: 6.144
    name: "${friendly_name} U Panneau"
    update_interval: 10s
        
  - platform: max31855
    name: "${friendly_name} Temperature"
    cs_pin: D3
    update_interval: 10s
    accuracy_decimals: 2
    filters:
    - median:
        window_size: 8
        send_every: 4
        send_first_at: 1

  - platform: adc
    pin: VCC
    name: "${friendly_name} U Alim"
    update_interval: 10s

binary_sensor:
  - platform: homeassistant
    entity_id: input_boolean.reveil_esp127_thermocouple
    id: prevent_deep_sleep

  #Etat de la connection
  - platform: status
    name: "${friendly_name} Status"

script:
  - id: exec_deep_sleep
    mode: queued
    then:
      - delay: ${duree_reveil}
      - logger.log: 'execute script'
      - if:
          condition:
            binary_sensor.is_on: prevent_deep_sleep
          then:
            - logger.log: 'Eviter la mise en sommeil par prevent_deep_sleep'
            -  deep_sleep.prevent: control_deep_sleep
          else:
            - logger.log: 'Autorise la mise en sommeil par deep_sleep_enter'
            - deep_sleep.enter: 
                id: control_deep_sleep
                sleep_duration: ${duree_sommeil}
      - script.execute: exec_deep_sleep

</code></pre>



<h2 class="wp-block-heading">Quelques vues d&rsquo;exemple:</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="445" height="316" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-20.png" alt="" class="wp-image-2553" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-20.png 445w, https://domo.rem81.com/wp-content/uploads/2023/04/image-20-300x213.png 300w" sizes="(max-width: 445px) 100vw, 445px" /></figure>



<pre class="wp-block-code"><code>type: entities
entities:
  - entity: sensor.esp127_temperature
    secondary_info: last-updated
  - entity: sensor.esp127_u_alim
    secondary_info: last-updated
  - entity: sensor.esp127_u_panneau
    secondary_info: last-updated
  - entity: input_boolean.reveil_esp127_thermocouple
  - entity: binary_sensor.esp127_status
    secondary_info: last-updated
title: Esp127-thermocouple
</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="452" height="339" src="https://domo.rem81.com/wp-content/uploads/2023/04/image-19.png" alt="" class="wp-image-2552" srcset="https://domo.rem81.com/wp-content/uploads/2023/04/image-19.png 452w, https://domo.rem81.com/wp-content/uploads/2023/04/image-19-300x225.png 300w" sizes="(max-width: 452px) 100vw, 452px" /></figure>



<pre class="wp-block-code"><code>type: history-graph
entities:
  - entity: sensor.esp127_u_alim
    name: Alim
  - entity: sensor.esp127_u_panneau
    name: Panneau
title: ESP127
hours_to_show: 12</code></pre>



<h1 class="wp-block-heading">Conclusion:</h1>



<p>Tuto tout simple qui, je l’espère, vous aidera à résoudre vos problèmes d&rsquo;ESP Isolé à l&rsquo;extérieur.</p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:64:"https://domo.rem81.com/2023/03/25/ha-esp8266-sur-batteries/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"8";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:88:"
		
		
					
		
		
		
				
		
		
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:26:"HA-Platines Relais ESP8266";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:60:"https://domo.rem81.com/2023/01/09/ha-platine-relais-esp8266/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:68:"https://domo.rem81.com/2023/01/09/ha-platine-relais-esp8266/#respond";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 09 Jan 2023 14:27:29 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:6:{i:0;a:5:{s:4:"data";s:9:"Domotique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:15:"Faire soi-même";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:7:"ESP8266";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:7:"ESPHOME";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"https://domo.rem81.com/?p=2441";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:181:"Intro Je vous propose de découvrir la mise en oeuvre de platine relais à base ESP8266 équipée de 1 (ou plusieurs relais) sur ESPHOME. Liste des courses Un module relais &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:23316:"



<h1 class="wp-block-heading">Intro</h1>



<p>Je vous propose de découvrir la mise en oeuvre de platine relais à base ESP8266 équipée de 1 (ou plusieurs relais) sur ESPHOME.</p>



<h1 class="wp-block-heading">Liste des courses</h1>



<p>Un module relais ESP8266 directement alimenté en 220 Vca ou en courant conctinu de 7 à 12 VCC ou en 5 VCC par prise USB acheté <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/1005004645865800.html?spm=a2g0o.order_list.order_list_main.17.21ef5e5bfOS9hp&amp;gatewayAdapt=glo2fra" data-type="URL" data-id="https://fr.aliexpress.com/item/1005004645865800.html?spm=a2g0o.order_list.order_list_main.17.21ef5e5bfOS9hp&amp;gatewayAdapt=glo2fra" target="_blank">ici</a>.</p>



<p>Ce module est très pratique puisqu&rsquo;il suffit de le configurer, l&rsquo;alimenter et le coupler à HA.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-1024x1024.jpg" alt="" class="wp-image-2443" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_082612-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Les modules commandés sont livrés avec les broches à souder et un pont nécessaire à la première programmation. Peut être pourriez vous en trouver avec les broches déjà soudées. Si c&rsquo;est le cas, merci de laisser le lien en commentaire.</p>



<h1 class="wp-block-heading">Présentation du Module</h1>



<p>Vous trouverez ci après une rapide présentation du module</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="823" height="558" src="https://domo.rem81.com/wp-content/uploads/2023/01/image.png" alt="" class="wp-image-2444" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/image.png 823w, https://domo.rem81.com/wp-content/uploads/2023/01/image-300x203.png 300w, https://domo.rem81.com/wp-content/uploads/2023/01/image-768x521.png 768w, https://domo.rem81.com/wp-content/uploads/2023/01/image-135x93.png 135w" sizes="(max-width: 823px) 100vw, 823px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="578" height="399" src="https://domo.rem81.com/wp-content/uploads/2023/01/image-1.png" alt="" class="wp-image-2445" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/image-1.png 578w, https://domo.rem81.com/wp-content/uploads/2023/01/image-1-300x207.png 300w, https://domo.rem81.com/wp-content/uploads/2023/01/image-1-135x93.png 135w" sizes="(max-width: 578px) 100vw, 578px" /></figure>



<p><strong>Descriptif du Module</strong></p>



<p></p>



<ul>
<li>1.L, N: alimentation AC90-250V</li>



<li>2.AC90-250V à DC5V alimentation à découpage (lors de l&rsquo;utilisation de l&rsquo;alimentation secteur, veuillez ne pas le toucher directement avec vos mains!!)</li>



<li>3.VCC, GND: alimentation DC7-12V;</li>



<li>4.Micro USB: alimentation USB DC5V;</li>



<li>5.Bouton 5.6X6mm: bouton de réinitialisation ESP8266;</li>



<li>6. port de téléchargement du programme UART: GND, RX, Tx, 5V .</li>



<li>7.  Broches accessibles, voir détail ci après.</li>



<li>8. Contacts du relais:Normalement ouvert et Normalement Fermé.</li>



<li>9. Indicateur d&rsquo;alimentation LED;</li>



<li>10. LED Programmable;</li>



<li>11. Témoin de relais LED: s&rsquo;allume quand il est fermé.</li>
</ul>



<p><strong>Descriptif des Broches surlignées en 7 (de gauche à droite):</strong></p>



<p>Ces broches permettent d’étendre les possibilités de la carte.</p>



<ul>
<li>1.GND: 0 Volt ou GND</li>



<li>2.Relais: le relais est par défaut connecté au GPIO5. Pour piloter le relais avec un autre GPIO, il faut supprimer R14 puis brancher le relais sur le GPIO souhaité avec un <a href="https://fr.aliexpress.com/item/4000203371860.html?spm=a2g0o.order_list.order_list_main.173.24e05e5b3wWmm4&amp;gatewayAdapt=glo2fra" data-type="URL" data-id="https://fr.aliexpress.com/item/4000203371860.html?spm=a2g0o.order_list.order_list_main.173.24e05e5b3wWmm4&amp;gatewayAdapt=glo2fra" target="_blank" rel="noreferrer noopener">cable Dupont</a> par exemple.</li>



<li>3.IO2: GPIO2: UARTI-TXD</li>



<li>4.IO4: GPIO4</li>



<li>5.RX: UARTO-RXD: GPIO3</li>



<li>6.3V3: alimentation 3.3V</li>



<li>7. SCLK: horloge</li>



<li>8.IO15: GPIO15: MTDO; HSPICS; UARTO-RTS</li>



<li>9.IO0: GPIO0</li>



<li>10.IO5: GPIO5</li>



<li>11.TX: UARTO-TXD; GPIO1</li>



<li>12.5V: alimentation 5V</li>



<li>13.IO10: GPIO10</li>



<li>14.MISO: sortie esclave et entrée hôte</li>



<li>15.IO13: GPIO13; HSPI-MOSI; UARTO-CTS</li>



<li>16.1IO14: GPIO14; HSPI-CLK</li>



<li>17. ADC: résultat de conversion a/d. Gamme de tension d&rsquo;entrée: 0 ~ 1V, gamme de valeur: 0 ~ 1024</li>



<li>18.3V3: alimentation 3.3V</li>



<li>19.MOSI: sortie hôte et entrée esclave</li>



<li>20.IO9: GPIO9</li>



<li>21. CSO: sélection de puce</li>



<li>22.IO12: GPIO12; HSPI-MISO</li>



<li>23.IO16: GPIO16</li>



<li>24.GND: 0 Volt ou GND</li>
</ul>



<h1 class="wp-block-heading">Utilisation du module</h1>



<h2 class="wp-block-heading">Premier flashage du module:</h2>



<p>Afin d&rsquo;utiliser ce module avec HA, nous devons télécharger le programme ESP HOME via son port série. Le module que j&rsquo;utilise est ce <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/4000492274243.html?spm=a2g0o.productlist.main.37.2c471f73qEqhg6&amp;algo_pvid=1ffed911-0c73-4df5-9920-ce93791a9524&amp;algo_exp_id=1ffed911-0c73-4df5-9920-ce93791a9524-18&amp;pdp_ext_f=%7B%22sku_id%22%3A%2210000002208891354%22%7D&amp;pdp_npi=2%40dis%21EUR%211.91%211.68%21%21%21%21%21%402100b76616732599821855166d06ba%2110000002208891354%21sea&amp;curPageLogUid=800oAxGbCbzg" data-type="URL" data-id="https://fr.aliexpress.com/item/4000492274243.html?spm=a2g0o.productlist.main.37.2c471f73qEqhg6&amp;algo_pvid=1ffed911-0c73-4df5-9920-ce93791a9524&amp;algo_exp_id=1ffed911-0c73-4df5-9920-ce93791a9524-18&amp;pdp_ext_f=%7B%22sku_id%22%3A%2210000002208891354%22%7D&amp;pdp_npi=2%40dis%21EUR%211.91%211.68%21%21%21%21%21%402100b76616732599821855166d06ba%2110000002208891354%21sea&amp;curPageLogUid=800oAxGbCbzg" target="_blank">type de module.</a>, c&rsquo;est un convertisseur USB&lt;-&gt;Port série.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="504" height="365" src="https://domo.rem81.com/wp-content/uploads/2023/01/image-3.png" alt="" class="wp-image-2451" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/image-3.png 504w, https://domo.rem81.com/wp-content/uploads/2023/01/image-3-300x217.png 300w" sizes="(max-width: 504px) 100vw, 504px" /></figure>



<p>Vous devez le brancher à votre carte selon le mapping suivant (utilisation des <a href="https://fr.aliexpress.com/item/4000203371860.html?spm=a2g0o.order_list.order_list_main.173.24e05e5b3wWmm4&amp;gatewayAdapt=glo2fra" data-type="URL" data-id="https://fr.aliexpress.com/item/4000203371860.html?spm=a2g0o.order_list.order_list_main.173.24e05e5b3wWmm4&amp;gatewayAdapt=glo2fra" target="_blank" rel="noreferrer noopener">câbles Dupont</a>):</p>



<ul>
<li><strong>Carte relais (connecteur P3 en 6 ci dessus)&lt;-&gt; Convertisseur</strong>
<ul>
<li>GND &lt;-&gt; GND</li>



<li>Tx &lt;-&gt; Rx</li>



<li>Rx &lt;-&gt; Tx</li>



<li>5 V &lt;-&gt; Vcc</li>
</ul>
</li>



<li>Nota 1: Sur la carte relais, Il faut ponter les broches GND et I00 (uniquement pour ce premier flashage)</li>



<li>Nota 2: Sur le convertisseur, positionner un cavalier sur le 5V.</li>
</ul>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-8 is-layout-flex wp-block-gallery-is-layout-flex"></figure>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-9 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2453" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083454-1024x1024.jpg" alt="" class="wp-image-2453" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083454-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083454-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083454-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083454-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083454-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083454-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2455" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083405-1024x1024.jpg" alt="" class="wp-image-2455" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083405-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083405-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083405-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083405-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083405-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_083405-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p>Le téléchargement est décrit dans mon article <a rel="noreferrer noopener" href="https://domo.rem81.com/2021/03/25/home-assistant_esp-home/" target="_blank"> </a><a rel="noreferrer noopener" href="https://domo.rem81.com/2021/03/25/home-assistant_esp-home/" data-type="URL" data-id="https://domo.rem81.com/2021/03/25/home-assistant_esp-home/" target="_blank">https://domo.rem81.com/2021/03/25/home-assistant_esp-home/</a></p>



<p>Une fois le premier flashage réalisée avec succés, vous devez débrancher le convertisseur, retirer le cavalier entre GND et GPIO00, puis alimenter votre module, vous avez le choix entre le 240 VCA, du courant continu 5VCC ou de 7 à 12 VCC.</p>



<p>Une fois ce code chargé, l&rsquo;intégration validée dans HA, la communication est établie et la led GPIO10 est éteinte.</p>



<h2 class="wp-block-heading">Programme ESPHOME</h2>



<p>Je vous propose ci après un programme à télécharger, libre à vous de le modifier, dans ce programme j&rsquo;ai configuré:</p>



<ul>
<li>Une adresse IP fixe (c&rsquo;est un choix personnel)</li>



<li>Le status de communication sur la led programmable (GPIO16) qui clignote s&rsquo;il y a des avertissements (lent) ou des erreurs (rapide)</li>



<li>Trois entrés logiques sur les GPIO10, GPIO13 et GPIO14: A relier au GND pour devenir « On »</li>



<li>Une entrée « OnWire » sur le GPIO02 (voir ci après le chapitre dédié)</li>



<li>Le relais sur le GPIO5: Relais normalement au repos.</li>
</ul>



<pre class="wp-block-code"><code>substitutions:
  device_name: esp172-esp8266-1-relais-1
  friendly_name: esp172
  adress_ip: "192.168.0.172"
  time_timezone: "Europe/Paris"
  
esphome:
  name: ${device_name}
  platform: ESP8266
  board: d1_mini
  
wifi:
  networks:
    - ssid: !secret wifi_esp
      password: !secret mdpwifi_esp
      priority: 1
    - ssid: !secret wifi
      password: !secret mdpwifi
      priority: 0
  reboot_timeout: 5min

  manual_ip:
    static_ip: ${adress_ip}
    gateway: 192.168.0.254
    subnet: 255.255.255.0


# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

web_server:
  port: 80

# Configuration Dallas
dallas:
  - pin: GPIO2 
    update_interval: 10s

# Utilisez la LED bleue de l'appareil comme LED d'état, qui clignotera s'il y a des avertissements (lent) ou des erreurs (rapide)
status_led:
  pin:
    number: GPIO16
    inverted: true

binary_sensor:
  # 3 Entrées logiques permettant de lire des contacts ou des BP
  - platform: gpio
    pin:
      number: GPIO10
      inverted: True
      mode:
        input: true
        pullup: true
    name: "${friendly_name}_bp1"
  - platform: gpio
    pin:
      number: GPIO13
      inverted: True
      mode:
        input: true
        pullup: true
    name: "${friendly_name}_bp2"
  - platform: gpio
    pin:
      number: GPIO14
      inverted: True
      mode:
        input: true
        pullup: true
    name: "${friendly_name}_bp3"

#Etat de la connection
  - platform: status
    name: "${friendly_name}_Status"

sensor:
    # DS18B20 15/12/2021
  - platform: dallas
    address: 0xab0321117f919d28
    name: "${friendly_name} Temperature"
    id: temp
    
  - platform: wifi_signal
    name: "${friendly_name} WiFi Signal Sensor"
    update_interval: 60s

  - platform: uptime
    name: "${friendly_name} Uptime Sensor"
    update_interval: 60s
    
switch:
  # Pilotage du relais
  - platform: gpio
    name: "${friendly_name} Relais"
    pin: GPIO5
    id: relay
    
  - platform: restart
    name: "${friendly_name} Restart"
</code></pre>



<p>Une fois la communication établie, vous avez accès à la page Web embarquée:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="343" src="https://domo.rem81.com/wp-content/uploads/2023/01/image-5-1024x343.png" alt="" class="wp-image-2480" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/image-5-1024x343.png 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/image-5-300x100.png 300w, https://domo.rem81.com/wp-content/uploads/2023/01/image-5-768x257.png 768w, https://domo.rem81.com/wp-content/uploads/2023/01/image-5-1536x514.png 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/image-5.png 1554w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Vous pouvez tester votre relais</p>



<p>Vous avez également accès depuis l&rsquo;intégration ESPHOME dans HA:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="584" src="https://domo.rem81.com/wp-content/uploads/2023/01/image-6-1024x584.png" alt="" class="wp-image-2482" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/image-6-1024x584.png 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/image-6-300x171.png 300w, https://domo.rem81.com/wp-content/uploads/2023/01/image-6-768x438.png 768w, https://domo.rem81.com/wp-content/uploads/2023/01/image-6.png 1310w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Exemple d&rsquo;utilisation:</p>



<p>Comme décrit précédemment, j&rsquo;ai choisi d&rsquo;ajouter une sonde de température Dallas <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> </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="407" height="407" src="https://domo.rem81.com/wp-content/uploads/2023/01/image-7.png" alt="" class="wp-image-2486" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/image-7.png 407w, https://domo.rem81.com/wp-content/uploads/2023/01/image-7-300x300.png 300w, https://domo.rem81.com/wp-content/uploads/2023/01/image-7-150x150.png 150w" sizes="(max-width: 407px) 100vw, 407px" /></figure>



<p> Ces sondes communiquent avec le bus WireOne. Le cablage est simple:</p>



<ul>
<li>Fil rouge: Alim 3.3 V</li>



<li>Fil jaune: GPIO</li>



<li>Fil Noir: GND</li>



<li>Il faut également souder une résistance de 4.7 kOhm entre le fil rouge et le fil jaune.</li>
</ul>



<p>Vous pouvez en mettre plusieurs sur un même GPIO. Il suffit de relier les raccorder en parallèle.</p>



<p>Pour cette mise en oeuvre, j&rsquo;ai utilisé un connecteur à souder à plugger directement sur la carte. J&rsquo;utilise le GPIO2 situé entre GND et 3.3V.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-10 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2485" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-1024x1024.jpg" alt="" class="wp-image-2485" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124506-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2484" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-1024x1024.jpg" alt="" class="wp-image-2484" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_124434-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<h1 class="wp-block-heading">Autres cartes:</h1>



<p>J&rsquo;ai testé d&rsquo;autres cartes, achetées <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/1005003582666158.html?spm=a2g0o.order_list.order_list_main.28.24e05e5b3wWmm4&amp;gatewayAdapt=glo2fra" data-type="URL" data-id="https://fr.aliexpress.com/item/1005003582666158.html?spm=a2g0o.order_list.order_list_main.28.24e05e5b3wWmm4&amp;gatewayAdapt=glo2fra" target="_blank">ici</a>. Perso, je préfére celle équipées d&rsquo;une alimentation en courant alternatif, elles sont plus faciles à mettre en oeuvre.</p>



<p>Le principe de programmation est toujours le même, mais cependant elles ont quelques particularités:</p>



<h2 class="wp-block-heading">Un relais mais pas d&rsquo;alim Courant Alternatif.</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="1024" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150022_Bokeh-768x1024.jpg" alt="" class="wp-image-2488" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150022_Bokeh-768x1024.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150022_Bokeh-225x300.jpg 225w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150022_Bokeh-1152x1536.jpg 1152w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150022_Bokeh-1536x2048.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150022_Bokeh-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<h2 class="wp-block-heading">Deux relais mais pas d&rsquo;alim Courant Alternatif.</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150100_Bokeh-1024x768.jpg" alt="" class="wp-image-2489" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150100_Bokeh-1024x768.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150100_Bokeh-300x225.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150100_Bokeh-768x576.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150100_Bokeh-1536x1152.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150100_Bokeh-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Les relais doivent être associés au GPIO par des cavaliers, voir le code ci-dessous à ajouter dans les switch:</p>



<pre class="wp-block-code"><code>switch:
  - platform: gpio
    name: "${friendly_name} Relais1"
    pin: GPIO4
    id: relais1
  - platform: gpio
    name: "${friendly_name} Relais2"
    pin: GPIO5
    id: relais2</code></pre>



<h2 class="wp-block-heading">Quatre relais avec alim Courant Alternatif.</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150202_Bokeh-1024x768.jpg" alt="" class="wp-image-2491" srcset="https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150202_Bokeh-1024x768.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150202_Bokeh-300x225.jpg 300w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150202_Bokeh-768x576.jpg 768w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150202_Bokeh-1536x1152.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2023/01/IMG_20230109_150202_Bokeh-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Attention lors de la première programmation, il faut mettre le cavalier du convertisseur sur le 3.3V  et non 5V, sinon ça plante.</strong></p>



<p>Comme pour la 2 relais, les relais doivent être associés au GPIO par des cavaliers, voir le code ci-dessous à ajouter dans les switch:</p>



<pre class="wp-block-code"><code>switch:
  - platform: gpio
    name: "${friendly_name} Relais1"
    pin: GPIO16
    id: relais1
  - platform: gpio
    name: "${friendly_name} Relais2"
    pin: GPIO14
    id: relais2
  - platform: gpio
    name: "${friendly_name} Relais3"
    pin: GPIO12
    id: relais3
  - platform: gpio
    name: "${friendly_name} Relais4"
    pin: GPIO13
    id: relais4</code></pre>



<h1 class="wp-block-heading">Conclusion</h1>



<p>Dans cet article, il y a des éléments qui paraîtrons basiques ou évidents pour certain, j&rsquo;en convient mais il s’adresse aux moins expérimentés qui souhaitent mettre un peu les mains dans le pâté en s&rsquo;équipant de module presque prêts à l&#8217;emploi tout en offrant un maximum de possibilités pour quelques euros.</p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:65:"https://domo.rem81.com/2023/01/09/ha-platine-relais-esp8266/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:94:"
		
		
					
		
		
		
				
		
		
		
		
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:31:"HA-Gestion Eau Chaude Sanitaire";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:66:"https://domo.rem81.com/2022/11/25/ha-gestion-eau-chaude-sanitaire/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:75:"https://domo.rem81.com/2022/11/25/ha-gestion-eau-chaude-sanitaire/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 25 Nov 2022 16:51:29 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:8:{i:0;a:5:{s:4:"data";s:9:"Domotique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:15:"Faire soi-même";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:7:"ESPHOME";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:5:"Linky";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:6;a:5:{s:4:"data";s:8:"lovelace";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:7;a:5:{s:4:"data";s:10:"routeur pv";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"https://domo.rem81.com/?p=2359";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:197:"Intro Lorsque la production d&#8217;Eau Chaude Sanitaire est comme chez moi produite par un ballon eau chaude électrique classique , elle peut être très énergivore et coûter un max si &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:26451:"



<h1 class="wp-block-heading">Intro</h1>



<p>Lorsque la production d&rsquo;Eau Chaude Sanitaire est comme chez moi produite par un ballon eau chaude électrique classique , elle peut être très énergivore et coûter un max  si elle n&rsquo;est pas maîtrisée.</p>



<p>C&rsquo;est pourquoi je tente de la réduire au minimum, pour ce faire, j&rsquo;utilise au mieux le surplus de production générée par mon installation photovoltaïque décrite 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ème domotique préféré <strong>Home Assistant</strong>.</p>



<h1 class="wp-block-heading">Terminologie:</h1>



<p>Commençons par décrire les termes communément employés dans cet article:</p>



<ul>
<li>HA: Home Assistant</li>



<li>PV: photoVoltaique</li>



<li>RPV: Routeur PhotoVoltaique</li>



<li>BECS: Ballon Eau Chaude sanitaire</li>



<li>RPE: Réseau Electrique Public, réseau Enedis (anciennement réseau EDF).</li>
</ul>



<h1 class="wp-block-heading">Solution proposée</h1>



<h2 class="wp-block-heading">Mis en oeuvre d&rsquo;un routeur photovoltaïque. </h2>



<p>Un RPV est un système électronique par lequel transite l’alimentation de votre BECS (on dit qu&rsquo;il est raccordé en série). Ce système module la puissance du signal électrique transmise au BECS en fonction du surplus de puissance injecté dans le RPE. Des que le système détecte une injection supérieure à un seuil généralement paramétrable, il calcul la puissance du signal de sortie du RPV dans une fourchette Min/Max les deux étant aussi généralement paramétrable: Min = 0%, Max est fonction de la puissance du BECS et du RPV. De ce fait la consommation va augmenter jusqu’à ce le RPV calcul un soutirage dans le RPE, il adapte ainsi en permanence la puissance appliqué au BECS.</p>



<p>Vous trouverez dans cet article publié 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éhensible que la mienne.</p>



<p>Cet d&rsquo;ailleurs ce routeur que j&rsquo;utilise mais j&rsquo;y reviendrai dans un article spécifique.</p>



<h2 class="wp-block-heading">Modifications électriques du tableau principal</h2>



<p>Comme je n&rsquo;aime pas mélanger les sources électriques, j&rsquo;ai modifié alimentation de mon BECS comme suit:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="688" height="509" src="https://domo.rem81.com/wp-content/uploads/2022/11/image-1.png" alt="" class="wp-image-2364" srcset="https://domo.rem81.com/wp-content/uploads/2022/11/image-1.png 688w, https://domo.rem81.com/wp-content/uploads/2022/11/image-1-300x222.png 300w" sizes="(max-width: 688px) 100vw, 688px" /></figure>



<p>le disjoncteur Q23 protège électriquement le BECS, le disjoncteur Q28 protège électriquement le circuit de mesure tension du routeur et le circuit de commande des contacteurs. J&rsquo;aurai également tout alimenter depuis le Q23 mais mon Q28 était disponible!.</p>



<p>Les contacteur PV et Réseau sont des contacteurs type chauffe-eau avec le mode Arret/Auto/Marche, pratique si la domotique est hors service.</p>



<p>Ils sont commandés par HA via un module Wago mais ce peut être bien entendu n&rsquo;importe quel « switch » de puissance pilotés par HA.</p>



<p>Vous avez compris que le contacteur PV alimente le BECS via le routeur et que le contacteur « Réseau » l&rsquo;alimente en direct depuis le réseau.</p>



<h2 class="wp-block-heading">Modification électrique du ballon</h2>



<h3 class="wp-block-heading">Thermostat électromécanique</h3>



<p>Si votre ballon est équipé d&rsquo;un thermostat électromécanique comme le mien, il n&rsquo;y a rien à faire et surtout il faut garder le thermostat opérationnel sous risque de le transformer en cocote minute si HA venait à déconner.</p>



<h3 class="wp-block-heading">Thermostat électronique</h3>



<p>Si votre ballon est équipé d&rsquo;un thermostat Electronique, c&rsquo;est plus compliqué, il faudra dissocier l&rsquo;alimentation électrique de l’électronique du thermostat, de l&rsquo;alimentation électrique des résistances. La première devra toujours etre alimenté directement depuis le réseau, la deuxième pourra transiter par le RPV. Là encore il faut garder le thermostat opérationnel.</p>



<h3 class="wp-block-heading">Ballon Thermodynamique</h3>



<p>Dans ce cas c&rsquo;est plus compliqué car vous ne pouvez pas l&rsquo;alimenter électriquement directement via le RPV sans effectuer de modifications, vous risquez tout simplement de le cramer.</p>



<p>Malheureusement, je ne saurai pas vous aider sur ce coup, mais GOOGLE est votre ami, il vous apportera certainement la solution.</p>



<h2 class="wp-block-heading">Mesure de température de l&rsquo;eau</h2>



<h3 class="wp-block-heading">Solution</h3>



<p>De mon point de vue il est intéressant de connaitre la température de l&rsquo;eau à l&rsquo;intérieur du BECS. Mon ballon n&rsquo;étant pas équipé d&rsquo;une sonde ni même d&rsquo;un emplacement pour y loger une sonde, j&rsquo;ai utilisé 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 à mi-hauteur dans l’enveloppe extérieur du ballon et j&rsquo;ai glissé ma sonde dans l&rsquo;isolant au contact de la cuve métallique contenant l&rsquo;eau chaude. J&rsquo;ai étalonné la chaîne de mesure avec la température 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é prêt. </p>



<h3 class="wp-block-heading">Schéma Electronique</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://domo.rem81.com/wp-content/uploads/2022/11/image-3-1024x576.png" alt="" class="wp-image-2372" srcset="https://domo.rem81.com/wp-content/uploads/2022/11/image-3-1024x576.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/11/image-3-300x169.png 300w, https://domo.rem81.com/wp-content/uploads/2022/11/image-3-768x432.png 768w, https://domo.rem81.com/wp-content/uploads/2022/11/image-3.png 1074w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Les sondes peuvent se mettre en parallèle, j&rsquo;en ai prévu trois dans mon schéma. La led n&rsquo;est pas obligatoire</p>



<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="(max-width: 382px) 100vw, 382px" /><figcaption class="wp-element-caption">Exemple de circuit imprimé conçu avec EAGLE</figcaption></figure>



<p>Vous pouvez sous traiter la fabrication de ce type de PCB à https://jlcpcb.com/ ça coûte que dalle, c&rsquo;est du travail de pro, faut pas etre pressé et c&rsquo;est quantité 5 minimum, exemple en dessous pour ce PCB: 1.99+3.46€!!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="442" src="https://domo.rem81.com/wp-content/uploads/2022/11/image-5-1024x442.png" alt="" class="wp-image-2374" srcset="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-300x129.png 300w, https://domo.rem81.com/wp-content/uploads/2022/11/image-5-768x331.png 768w, https://domo.rem81.com/wp-content/uploads/2022/11/image-5.png 1462w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Code de l&rsquo;ESP01</h3>



<pre class="wp-block-code"><code>substitutions:
  device_name: esp126-temp-ecs
  friendly_name: esp126
  adress_ip: "192.168.0.126"
  time_timezone: "Europe/Paris"

esphome:
  name: ${device_name}
  platform: ESP8266
  board: esp01_1m  
  
wifi:
  networks:
    - ssid: !secret wifi_mi4
      password: !secret mdpwifi_mi4
      priority: 2    
    - ssid: !secret wifi_esp
      password: !secret mdpwifi_esp
      priority: 1
    - ssid: !secret wifi
      password: !secret mdpwifi
      priority: 0
  reboot_timeout: 5min
    

  manual_ip:
    static_ip: ${adress_ip}
    gateway: 192.168.0.254
    subnet: 255.255.255.0

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

web_server:
  port: 80

# Configuration Dalas
dallas:
  - pin: GPIO0

#Etat de la connection
binary_sensor:
  - platform: status
    name: "${friendly_name} Status"

switch:    

  - platform: restart
    name: "${friendly_name} Restart"
    
        
sensor:

  - platform: dallas
    address: 0xCA00AA2D00000328
    name: "${friendly_name} temp_ecs"
    filters:
      - offset: 8.0
    
  - platform: wifi_signal
    name: "${friendly_name} WiFi Signal Sensor"
    update_interval: 60s

  - platform: uptime
    name: "${friendly_name} Uptime Sensor"
    update_interval: 60s

text_sensor:
  # IP address #
  - platform: wifi_info
    ip_address:
      name: "${friendly_name} IP address"
      icon: "mdi:network-outline"
    ssid:
      name: "${friendly_name} Connected SSID"
    bssid:
      name: "${friendly_name} Connected BSSID"
</code></pre>



<h2 class="wp-block-heading">Automatismes</h2>



<h3 class="wp-block-heading">Cahier des charges:</h3>



<ul>
<li>Rester maître du système en pilotant depuis HA et non depuis le Linky</li>



<li>Privilégier la charge des batteries PhotoVoltaique, puis la chauffe du ballon: Lorsque les batteries seront pleines et si production PV supérieure à Conso, alors on va injecter dans le réseau et le router PV réagira en conséquence.</li>



<li>Chauffer le ballon la nuit en heure creuse si pas assez chaud par manque d’ensoleillement dans les jours précédents.</li>



<li>Avoir un mode secours si la production PV n&rsquo;est pas suffisante sur le long terme.</li>



<li>Trois modes de fonctionnement:
<ul>
<li>Auto (Automatique)</li>



<li>Arret (Arret Forcé)</li>



<li>Marche (Marche forcée).</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading">Mode Automatique:</h3>



<p>Dans ce mode, je distingue le jour et la nuit, le jour est réservé à l&rsquo;utilisation du routeur, la nuit, uniquement en mode secours, si l&rsquo;eau n&rsquo;est pas assez chaude.</p>



<p>La nuit, choix 1:</p>



<ul>
<li>si ECS est en mode automatique</li>



<li>si nous sommes après le couché du soleil et avant le levé du soleil</li>



<li>si la température du BECS descend en dessous du seuil température basse</li>



<li>si le linky est en heure Creuse
<ul>
<li><strong>Alors j&rsquo;enclenche le relais ECS_Réseau donc, je chauffe plein pot.</strong></li>
</ul>
</li>
</ul>



<p>La nuit, choix 2:</p>



<ul>
<li>si nous sommes après le coucher du soleil et avant le levé du soleil
<ul>
<li><strong>ET</strong></li>
</ul>
</li>



<li>si la température du BECS monte au dessus du seuil température haute
<ul>
<li><strong>OU</strong></li>
</ul>
</li>



<li>si le linky passe en heure pleine
<ul>
<li><strong>Alors je coupe le relais ECS_Réseau, j&rsquo;arrete de chauffer.</strong></li>
</ul>
</li>
</ul>



<p>Le jour, choix 3:</p>



<ul>
<li>si ECS est en mode automatique</li>



<li>si nous sommes après le levé du soleil et avant le couché du soleil</li>



<li>si le input.boolean « validation du routeur PV » est sur ON</li>
</ul>



<p>Le jour, choix 4:</p>



<ul>
<li>si le input.boolean « validation du routeur PV » passe de ON à OFF
<ul>
<li><strong>Alors je coupe le relais ECS_PV</strong></li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading">Mode Arrêt Forcé:</h3>



<p>Dans ce mode, je coupe les relais ECS_Réseau et ECS_PV.</p>



<h3 class="wp-block-heading">Mode Marche Forcé:</h3>



<p>Dans ce mode, je coupe le relais ECS_PV et j&rsquo;active le relais ECS_Réseau, je force le chauffage via le réseau avec bien sur le thermostat électromécanique intégré au BECS en sécurité.</p>



<h2 class="wp-block-heading">Script gestion relais</h2>



<p>Afin d’éviter un chevauchement des relais PV et Réseau, j&rsquo;ai créé trois scripts que je lance depuis les automatismes ou depuis le tableau de bord:</p>



<ul>
<li>ECS_OFF: les deux relais sont sur Off</li>



<li>ECS_PV: Désactivation du relais ECS_PV, délai 2s, activation du relais ECS_Réseau</li>



<li>ECS_Réseau: Désactivation du relais ECS_réseau, délai 2s, activation du relais ECS_PV</li>
</ul>



<h2 class="wp-block-heading">Code de l&rsquo;automatisme:</h2>



<pre class="wp-block-code"><code>alias: 1_2_3 ECS Automatismes
description: ""
trigger:
  - platform: state
    entity_id:
      - input_select.ecs_ssol
  - platform: sun
    event: sunrise
    offset: 0
    id: levee_soleil
  - platform: sun
    event: sunset
    offset: 0
    id: couche_soleil
  - platform: state
    entity_id:
      - sensor.linky_ptec
    from: HC..
    to: HP..
    id: HC-HP
  - platform: state
    entity_id:
      - sensor.linky_ptec
    from: HP..
    to: HC..
    id: HP-HC
  - platform: numeric_state
    entity_id: sensor.esp126_temp_ecs
    id: t_bas
    below: 40
  - platform: numeric_state
    entity_id: sensor.esp126_temp_ecs
    above: 45
    id: t_haut
  - platform: state
    entity_id:
      - input_boolean.ecs_av_pv
    from: "on"
    to: "off"
    id: arret_pv_routeur
  - platform: state
    entity_id:
      - input_boolean.ecs_av_pv
    from: "off"
    to: "on"
    id: avect_pv_routeur
condition: &#091;]
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_select.ecs_ssol
            state: Auto
          - condition: sun
            before: sunrise
            after: sunset
          - condition: numeric_state
            entity_id: sensor.esp126_temp_ecs
            below: 40
          - condition: state
            entity_id: sensor.linky_ptec
            state: HC..
        sequence:
          - service: script.ecs_on
            data: {}
      - conditions:
          - condition: state
            entity_id: input_select.ecs_ssol
            state: Auto
          - condition: or
            conditions:
              - condition: trigger
                id: HC-HP
              - condition: numeric_state
                entity_id: sensor.esp126_temp_ecs
                above: 45
          - condition: sun
            before: sunrise
            after: sunset
        sequence:
          - service: script.ecs_off_off
            data: {}
      - conditions:
          - condition: state
            entity_id: input_select.ecs_ssol
            state: Auto
          - condition: sun
            before: sunset
            after: sunrise
          - condition: state
            entity_id: input_boolean.ecs_av_pv
            state: "on"
        sequence:
          - service: script.ecs_off
            data: {}
      - conditions:
          - condition: trigger
            id: arret_pv_routeur
          - condition: state
            entity_id: input_select.ecs_ssol
            state: Auto
        sequence:
          - service: script.ecs_off_off
            data: {}
      - conditions:
          - condition: state
            entity_id: input_select.ecs_ssol
            state: At Forcé
        sequence:
          - service: script.ecs_off_off
            data: {}
      - conditions:
          - condition: state
            entity_id: input_select.ecs_ssol
            state: Ma Forcée
        sequence:
          - service: script.ecs_on
            data: {}
    default: &#091;]
mode: single
</code></pre>



<h1 class="wp-block-heading">Tableau de bord:</h1>



<h2 class="wp-block-heading">Exemple de carte</h2>



<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.png" alt="" class="wp-image-2407" srcset="https://domo.rem81.com/wp-content/uploads/2022/11/image-9.png 436w, https://domo.rem81.com/wp-content/uploads/2022/11/image-9-229x300.png 229w" sizes="(max-width: 436px) 100vw, 436px" /></figure>



<h2 class="wp-block-heading">Code de la carte</h2>



<pre class="wp-block-code"><code>type: entities
entities:
  - entities:
      - entity: input_select.ecs_ssol
        name: Mode
      - entity: input_boolean.ecs_av_pv
        name: Roteur PV
    entity: input_select.ecs_ssol
    icon: mdi:flash
    name: Fonctionnement
    show_state: false
    type: custom:multiple-entity-row
  - entities:
      - entity: sensor.ecocompteur_ecs
        name: Pu
      - entity: sensor.mp2_charge_batteries
        name: Ch Bat
    entity: sensor.ecocompteur_ecs
    icon: mdi:flash
    name: Puissance
    show_state: false
    type: custom:multiple-entity-row
  - entities:
      - entity: sensor.energie_ecs_jour
        name: Res+PV
      - entity: sensor.energie_ecs_reseau_jour
        name: Reseau
      - entity: sensor.energie_ecs_pv_jour
        name: PV
    entity: sensor.energie_ecs_jour
    icon: mdi:flash
    name: Conso Jour
    show_state: false
    type: custom:multiple-entity-row
  - entities:
      - entity: sensor.esp126_temp_ecs
        name: T°
      - entity: sensor.ecs_chauffage_ce_jour
        name: Tps Ch
    entity: sensor.energie_ecs_jour
    icon: mdi:temperature-celsius
    name: Temp
    show_state: false
    type: custom:multiple-entity-row
  - entities:
      - entity: binary_sensor.ecs_chauffe
        name: Chauffage
      - entity: switch.cde_relais_ecs
        name: Rel ECS
      - entity: switch.cde_relais_ecs_router_pv
        name: Rel PV
    entity: switch.cde_relais_ecs
    icon: mdi:water-boiler
    name: Cde
    show_state: false
    type: custom:multiple-entity-row
  - entities:
      - entity: switch.cde_relais_ecs
        name: Relais ECS
      - entity: switch.cde_relais_ecs_router_pv
        name: Relais Routeur PV
      - entity: script.ecs_reseau
      - entity: script.ecs_pv
      - entity: script.ecs_off
    head:
      label: Commandes
      type: section
    padding: 0
    type: custom:fold-entity-row
how_header_toggle: false
show_header_toggle: false
</code></pre>



<h2 class="wp-block-heading">Déclaration de entités:</h2>



<ul>
<li>sensor.ecocompteur_ecs: est le sensor de mesure de puissance du BECS</li>
</ul>



<pre class="wp-block-code"><code>####################################################
#                                                  #
#              EAU CHAUDE SANITAIRE                #
#                                                  #
####################################################

input_select:
  ecs_ssol:
    name: Ecs_SSol
    icon: mdi:water-boiler
    options:
      - Auto
      - At Forcé
      - Ma Forcée

input_boolean:
  ecs_av_pv:
    name: Ecs PV(=1 avec Routeur PV)
  
sensor:
# Affichage du temps de fonctionnement ce jour
  - platform: history_stats
    name: ECS Chauffage ce jour
    entity_id: binary_sensor.ecs_chauffe
    state: 'on'
    type: time
    start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
    end: '{{ now() }}'


template:
####################################
# Si puissance superieur à 500w = ECS en Marche
  - binary_sensor:
    - name: "ecs_chauffe"
      unique_id: "ecs_chauffe"
      device_class: heat
      state: &gt;-
          {% set a=states('sensor.ecocompteur_ecs')|float(default=0) %}
          {{ a &gt; 500 }}

# 
  - sensor:

############################################ 21/12/2022
# sensor.ecocompteur_ecs:
# Si switch.cde_relais_ecs-&gt;
#   template: sensor.puissance_ecs_reseau_w-&gt;
#     template: sensor.puissance_ecs_reseau_kw
#     Integration en kW: sensor.energie_ecs_reseau-&gt;
#       utility_meter: energy_ecs_reseau_usage_daily-&gt;
#          sensor.energy_ecs_reseau_usage_daily_hp
#          sensor.energy_ecs_reseau_usage_daily_hc 

# Si switch.cde_relais_ecs_router_pv-&gt;
#   template: sensor.puissance_ecs_pv_w-&gt;
#     template: sensor.puissance_ecs_pv_kw
#     Integration en kW: sensor.energie_ecs_pv-&gt;
#       utility_meter: energy_ecs_pv_usage_daily-&gt;
#          sensor.energy_ecs_pv_usage_daily_hp
#          sensor.energy_ecs_pv_usage_daily_hc 

# Calcul puissance ECS si mode réseau
# L'integrale de rieumman et les utily_meter sont déclarés dans "/config/helpers"
    - name: puissance_ecs_reseau_w
      unique_id: "puissance_ecs_reseau_w"
      device_class: "power"
      state_class: "measurement"    
      unit_of_measurement: "W"
      state: &gt;-
        {% set pu_ecs=states('sensor.ecocompteur_ecs')|float(default=0) %}
        {% set rel_ecs=states('switch.cde_relais_ecs')%}
        {% if (pu_ecs&gt;0) and (rel_ecs=="on")%}          
          {{ pu_ecs }}
        {%else%}
          0
        {%endif%}

    - name: puissance_ecs_reseau_kw
      unique_id: "puissance_ecs_reseau_kw"
      device_class: "power"
      state_class: "measurement"    
      unit_of_measurement: "kW"
      state: &gt;-
        {% set p=states('sensor.puissance_ecs_reseau_w')|float(default=0) %}
        {{ p/1000 }}

    - name: "energie ecs reseau jour"
      unique_id: "energie_ecs_reseau_jour"
      state: &gt;-
        {% set p = states('sensor.energy_ecs_reseau_usage_daily_hp') | float(default=0) | round(2) %}
        {% set o = states('sensor.energy_ecs_reseau_usage_daily_hc') | float(default=0) | round(2) %}
        {{ (o + p) | round(2) }}
      unit_of_measurement: "kWh"
      device_class: "energy"
      state_class: "total"

# Calcul puissance ECS si mode PV
    - name: puissance_ecs_pv_w
      unique_id: "puissance_ecs_pv_w"
      device_class: "power"
      state_class: "measurement"    
      unit_of_measurement: "W"
      state: &gt;-
        {% set pu_ecs=states('sensor.ecocompteur_ecs')|float(default=0) %}
        {% set rel_ecs=states('switch.cde_relais_ecs_router_pv')%}
        {% if (pu_ecs&gt;0) and (rel_ecs=="on")%}          
          {{ pu_ecs }}
        {%else%}
          0
        {%endif%}
        
    - name: puissance_ecs_pv_kw
      unique_id: "puissance_ecs_pv_kw"
      device_class: "power"
      state_class: "measurement"    
      unit_of_measurement: "kW"
      state: &gt;-
        {% set p=states('sensor.puissance_ecs_pv_w')|float(default=0) %}
        {{ p/1000 }}

    - name: "Energie ecs pv jour"
      unique_id: "energie_ecs_pv_jour"
      state: &gt;-
        {% set p = states('sensor.energy_ecs_pv_usage_daily_hp') | float(default=0) | round(2) %}
        {% set o = states('sensor.energy_ecs_pv_usage_daily_hc') | float(default=0) | round(2) %}
        {{ (o + p) | round(2) }}
      unit_of_measurement: "kWh"
      device_class: "energy"
      state_class: "total"

# Cumul de Energie ECS Reseau et PV
    - name: "Energie ECS Jour"
      unique_id: "energie_ecs_jour"
      state: &gt;-
        {% set p = states('sensor.energie_ecs_reseau_jour') | float(default=0) | round(2) %}
        {% set o = states('sensor.energie_ecs_pv_jour') | float(default=0) | round(2) %}
        {{ (o + p) | round(2) }}
      unit_of_measurement: "kWh"
      device_class: "energy"
      state_class: "total"  


###########################################################


# Puissance produite en surplus et injectée dans l'ECS en mode PV en W 
    - name: puissance_ecs_surplus_injectee_w
      unique_id: "puissance_ecs_surplus_injectee_w"
      device_class: "power"
      state_class: "measurement"    
      unit_of_measurement: "W"
      state: &gt;-
        {% set pu_ecs=states('sensor.ecocompteur_ecs')|float(default=0) %}
        {% set prod=states('sensor.envoy_122103023124_current_power_production')|float(default=0) %}
        {% set rel_ecs=states('switch.cde_relais_ecs_router_pv')%}
        {% if (pu_ecs&gt;0) and (prod&gt;10) and (rel_ecs=="on")%}          
          {{ pu_ecs }}
        {%else%}
          0
        {%endif%}


# Puissance produite en surplus et injectée dans l'ECS en mode PV en kW 

    - name: puissance_ecs_surplus_injectee
      unique_id: "puissance_ecs_surplus_injectee"
      device_class: "power"
      state_class: "measurement"    
      unit_of_measurement: "kW"
      state: &gt;-
        {% set a=states('sensor.puissance_ecs_surplus_injectee_w')|float(default=0) %}
        {% if (a&gt;0) %}          
          {{ a/1000 }}
        {%else%}
          0
        {%endif%}

# Puissance disponible sans routeur ecs
# Utilisé dans esp141-affichage_pv
    - name: puissance_dispo_sans ecs
      unique_id: "puissance_dispo_sans_ecs"
      device_class: "power"
      state_class: "measurement"    
      unit_of_measurement: "W"
      state: &gt;-
        {% set pu_ecs=states('sensor.ecocompteur_ecs')|float(default=0) %}
        {% set prod=states('sensor.envoy_122103023124_current_power_production')|float(default=0) %}
        {% set conso = states('sensor.envoy_122103023124_today_s_energy_consumption') | float(default=0) | round(2) %}        
        {% set rel_ecs=states('switch.cde_relais_ecs_router_pv')%}
        {% if (prod&gt;conso) and (pu_ecs&gt;0) and (rel_ecs=="on")%}          
          {{ prod-conso+pu_ecs }}
        {%else%}
          0
        {%endif%}



</code></pre>



<h1 class="wp-block-heading">Conclusion:</h1>



<p>Ca peut paraître un peu compliqué pour certain, mais tout n&rsquo;est pas à prendre, surtout si vous n&rsquo;avez pas de batteries, dans ce cas il faut modifier l&rsquo;automatisme</p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:71:"https://domo.rem81.com/2022/11/25/ha-gestion-eau-chaude-sanitaire/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"8";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:88:"
		
		
					
		
		
		
				
		
		
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:17:"PV-Photovoltaique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:52:"https://domo.rem81.com/2022/10/13/pv-photovoltaique/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:60:"https://domo.rem81.com/2022/10/13/pv-photovoltaique/#respond";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 13 Oct 2022 10:57:57 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:6:{i:0;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:15:"Photovoltaïque";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:14:"Micro Onduleur";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:25:"Panneaux Photovoltaîques";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:2:"PV";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"https://domo.rem81.com/?p=2318";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:221:"Intro Je commence avec cet article une nouvelle série sur le Photovoltaïque. Après une description de mon installation, je continuerai vers une série d&#8217;articles décrivant mes solutions mises en oeuvre. &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:11425:"



<h1 class="wp-block-heading">Intro</h1>



<p>Je commence avec cet article une nouvelle série sur le Photovoltaïque. Après une description de mon installation, je continuerai vers une série d&rsquo;articles décrivant mes solutions mises en oeuvre. Bien entendu HA est toujours de la partie.</p>



<h1 class="wp-block-heading">Terminologie</h1>



<p>Commençons par décrire les termes communement employés dans ce domaine:</p>



<ul>
<li>MO:  Micro Onduleurs. ils convertissent le courant continu des PV en courant alternatif compatible avec votre installation électrique domestique en tension et en fréquence,</li>



<li>Onduleur: Même fonctions que les MO, mais il centralise la production des PV.  Il peut, selon les configurations, y en avoir plusieurs sur une installation,</li>



<li>PV: Panneaux Photovoltaïques,</li>



<li>CA: Courant Alternatif (typiquement en sortie de onduleurs et MO),</li>



<li>CC: Courant Continu (typiquement en sortie de vos panneaux ou/et batteries),</li>



<li>VJ: Couleur Vert jaune des fils de mise à la terre,</li>



<li>TI: Transformateur d&rsquo;Intensité,</li>



<li>kWh: Puissance électrique intégrée sur 1 heure. Un consommateur de 1000 W soutire 1 kWh en une heure. C&rsquo;est l&rsquo;unité utilisée sur vos facture d&rsquo;électricité,</li>



<li>Wc: Watt Crète. Unité de la puissance crête. C’est la puissance maximale que peut atteindre un panneau solaire à un instant T. La puissance crête (Wc) vous sert à comparer plusieurs capteurs photovoltaïques entre eux,</li>



<li>Production: Exprimée en kWh, c&rsquo;est l&rsquo;énergie produite par votre installation,</li>



<li>Soutirage: Exprimée en kWh, c&rsquo;est l&rsquo;énergie soutirée sur le réseau, </li>



<li>Injection: Exprimée en kWh, c&rsquo;est l&rsquo;énergie produite par votre installation et injectée sur le réseau (gratuitement si en autoconsommation).</li>
</ul>



<h1 class="wp-block-heading">Descriptif de mon installation</h1>



<p>Commencée en mai 2021, la première phase de mon installation comprend:</p>



<ul>
<li>6 panneaux photovoltaïques Trina Solar de 375 Wc</li>



<li>Un ensemble de fixation en toiture système ESDEC</li>



<li>6 micro onduleurs Enphase IQ7+</li>



<li>1 Passerelle Enphase Metered S</li>



<li>1 coffret CA comprenant entre autres le relais de découplage QRelais obligatoire et  indispensable à la sécurisation de l&rsquo;installation. voir schéma ci-après.</li>



<li>Les démarches administratives auprès de la Mairie et Enedis. Pas de consuel à ce stade, une simple déclaration sur l&rsquo;honneur suffi.
<ul>
<li></li>
</ul>
</li>
</ul>



<p><strong>Schéma électrique du coffret.</strong></p>



<div data-wp-interactive="" class="wp-block-file"><object data-wp-bind--hidden="!selectors.core.file.hasPdfPreview" hidden class="wp-block-file__embed" data="https://domo.rem81.com/wp-content/uploads/2022/11/M_CAQM1-coffret-AC-Mono-1-Qrelais_1Wiland.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Contenu embarqué M_CAQM1-coffret-AC-Mono-1-Qrelais_1Wiland."></object><a id="wp-block-file--media-68a416c0-ed24-49ca-8036-c5d80ec1c946" href="https://domo.rem81.com/wp-content/uploads/2022/11/M_CAQM1-coffret-AC-Mono-1-Qrelais_1Wiland.pdf">M_CAQM1-coffret-AC-Mono-1-Qrelais_1Wiland</a><a href="https://domo.rem81.com/wp-content/uploads/2022/11/M_CAQM1-coffret-AC-Mono-1-Qrelais_1Wiland.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-68a416c0-ed24-49ca-8036-c5d80ec1c946">Télécharger</a></div>



<p>Le matériel a été commandé chez Oscaro Power, à l&rsquo;époque pas de problème de délai. </p>



<p><strong>Détail du matériel utilisé</strong>.</p>



<div data-wp-interactive="" class="wp-block-file"><object data-wp-bind--hidden="!selectors.core.file.hasPdfPreview" hidden class="wp-block-file__embed" data="https://domo.rem81.com/wp-content/uploads/2022/11/2021-001294-2.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Contenu embarqué 2021-001294-2."></object><a id="wp-block-file--media-9316b7cb-e529-4698-8ac0-d0336f3c4804" href="https://domo.rem81.com/wp-content/uploads/2022/11/2021-001294-2.pdf">2021-001294-2</a><a href="https://domo.rem81.com/wp-content/uploads/2022/11/2021-001294-2.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-9316b7cb-e529-4698-8ac0-d0336f3c4804">Télécharger</a></div>



<h2 class="wp-block-heading">Choix des micro onduleurs</h2>



<h3 class="wp-block-heading">Points positifs:</h3>



<p>Pourquoi des MO? </p>



<p>En premier lieu, la configuration de ma toiture fait que je dispose de 4 pans exposés plein Sud et Sud Ouest. Sur chaque pans je peux installé 6 PV max. Donc avec  un onduleur centrale, il m&rsquo;aurait fallu 2 puis 4 entrées MPPT (en prévision des extensions), la modularité des MO est précieuse dans ce cas.</p>



<p>En deux, par souci de simplicité, en effet la mise en oeuvre électrique est simplifiée au maximum:</p>



<ul>
<li>Les MO se montent sous les panneaux (1 par PV chez Enphase), vous connectez dessus le + et le &#8211; du panneau.</li>



<li>Vous connectez le câble CA sur le MO. Vous aurez au préalable commandé ce câble avec le nombre de connecteurs correspondant au nombre de MO (6 dans mon cas).</li>



<li>Une mise à la terre des structures support avec 1 cable 6mm2 vert/jaune. La mise à la terre des PV se fait par une griffe encliquetée dans le rail support (Gratter la peinture du PV à cet endroit afin de favoriser la connexion).</li>



<li>Ces deux cables sont connectés au niveau du coffret CA.</li>



<li>Le coffret CA est raccordé sous un disjoncteur 20A de votre tableau électrique (disjoncteur de production).</li>



<li>La passerelle Web Envoys S Metered est alimentée en 230 AC depuis le coffre CA (ou votre tableau électrique). Ses deux TI mesurent pour l&rsquo;un l&rsquo;intensité soutirée au réseau, donc à placer directement sous le disjoncteur principal sur le cable de la phase, et pour l&rsquo;autre le TI mesure la production de installation solaire, à placer sous le disjoncteur 20A de production.</li>
</ul>



<p>En trois, pas de configuration compliquée, vous branchez, vous enclenchez les disjoncteurs et ça produit (si soleil, bien entendu), à ce stade la passerelle n&rsquo;est pas obligatoire.</p>



<p>En quatre, la possibilité d&rsquo;extension du système, j&rsquo;ai ajouté par la suite six PV (voir ci-après)</p>



<p>J&rsquo;ai choisi la Marque Enphase car la fiabilité de ses produits est mondialement reconnue,  une garantie de 25 ans, et enfin il existe une<a rel="noreferrer noopener" href="https://www.home-assistant.io/integrations/enphase_envoy" target="_blank"> intégration Envoy</a> officielle Home Assistant.</p>



<h3 class="wp-block-heading">Points négatifs:</h3>



<p>Tous n&rsquo;est pas tout rose dans cette solution, il y a également des points négatifs:</p>



<ul>
<li>En un, le coût, un MO c&rsquo;est environ 150€, un onduleur centralisé des 3 kWc, il en existe à partir de 500€, le calcul est vite fait.</li>



<li>En deux, la puissance limitée des MO, 290 VA pour un IQ7+, les IQ7A sont plus puissants et donc plus chers, à venir les IQ8 (début 2023 semble-t&rsquo;il).</li>



<li>En trois si problème sur un MO, il faut déposer le panneau.</li>



<li>En quatre, la configuration de la passerelle, il faut créer un compte installateur et un compte utilisateur, simple à posteriori, mais il faut d&rsquo;abord comprendre la philosophie Enphase.</li>
</ul>



<h3 class="wp-block-heading">Remarques sur les MO:</h3>



<p>La législation oblige la déconnexion du réseau de votre installation Photovoltaïque et ce pour éviter de renvoyer du courant sur la réseau en cas de perte de celui ci et surtout si intervention des techniciens Enedis. Les onduleurs centraux répondant à la norme Française intègre cette fonctionalité, dans notre cas, c&rsquo;est le relais Qrelais qui remplit ce rôle, donc vous ne pouvez et surtout ne devez pas en faire l&rsquo;économie. C&rsquo;est d&rsquo;ailleurs le certificat de conformité de ce relais que vous devez fournir à Enedis lors de déclaration.</p>



<p>Remarque: La garantie de 25 ans ne s&rsquo;applique que si le système est supervisé par une passerelle Metered. A ce propos, deux types de passerelle sont commercialisées:</p>



<ul>
<li>la passerelle WEB Envoy S Standard permet de superviser uniquement la production.</li>



<li>la passerelle WEB Envoy S Metered permet de superviser la production et le soutirage sur réseau</li>
</ul>



<h1 class="wp-block-heading">Extension Août 2022</h1>



<p>Comme évoqué précédemment, j&rsquo;ai installé en Août 2022, 6 PV de 395 Wc supplémentaires, sur un deuxième pan de la toiture, orienté différemment par rapport au premier, d&rsquo;ou l&rsquo;avantage des MO.</p>



<p>Installation identique à la précédente, mise à part:</p>



<ul>
<li>La puissance des panneaux, 395 Wc, inutile avec mes MO car bridés à 290 VA mais j&rsquo;envisage un remodelage complet de mon installation. Nous y reviendrons dans un autre article.</li>



<li>Le système de fixation, ESDEC dans la premiere phase, K2 dans celle-ci. Plutôt déçu car pas très adapté à mes tuiles. Pour faire simple, avec l&rsquo;ESDEC, vous avez un support crochet qui vient prendre en sandwich le littau et la tuile, vous le positionnez dans le creux de la tuile, vous serrez (au couple), réglez la hauteur et c&rsquo;est OK. Sur le K2, les supports sont à fixés sur les chevrons de la charpente (fermette dans mon cas), malgré une possibilité de réglage en latitude, il m&rsquo;a fallu ajouté des bouts de chevrons, etc.. Je pense les remplacer par la suite quand les ESDEC seront de nouveau disponibles.</li>
</ul>



<p>J&rsquo;ai donc acheté ce coup-ci les PV, les MO, un cable CA six MO, le systeme K2 et c&rsquo;est tout. La passerelle Envoy, le coffret CA étaient compatibles.</p>



<p>Liste du matériel acheté:</p>



<div data-wp-interactive="" class="wp-block-file"><object data-wp-bind--hidden="!selectors.core.file.hasPdfPreview" hidden class="wp-block-file__embed" data="https://domo.rem81.com/wp-content/uploads/2022/11/2022-007478.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Contenu embarqué 2022-007478."></object><a id="wp-block-file--media-83a8cb0d-7bf5-4fdb-ba67-bd869343c126" href="https://domo.rem81.com/wp-content/uploads/2022/11/2022-007478.pdf">2022-007478</a><a href="https://domo.rem81.com/wp-content/uploads/2022/11/2022-007478.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-83a8cb0d-7bf5-4fdb-ba67-bd869343c126">Télécharger</a></div>



<p>Le câble CA de cette deuxième série est raccordé en parallèle sur le premier.  Attention, mettre hors tension le coffret CA avant d&rsquo;intervenir.</p>



<p>Vous remettez sous tension, attendre la synchronisation des MO et ça produit.</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>Voici une présentation simplifiée de mon installation. </p>



<p>Avec le mauvais temps qui arrive, je vais avoir plus de disponibilité pour écrire quelques articles.</p>



<p>Les prochains aborderont, l&rsquo;intégration dans HA, les routeurs solaires, Etc.. </p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:57:"https://domo.rem81.com/2022/10/13/pv-photovoltaique/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:82:"
		
		
					
		
		
		
				
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:30:"HA-ESP HOME-Flashage WT01-ETH0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:65:"https://domo.rem81.com/2022/09/06/ha-esp-home-flashage-wt01-eth0/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:74:"https://domo.rem81.com/2022/09/06/ha-esp-home-flashage-wt01-eth0/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 06 Sep 2022 07:55:06 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:4:{i:0;a:5:{s:4:"data";s:9:"Domotique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:5:"esp32";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"https://domo.rem81.com/?p=2260";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:217:"Intro J&#8217;utilise depuis longtemps des ESP32 ou ESP01 flashés avec ESP HOME. Ces petites bestioles sont très pratiques pour des petites conceptions DIY. Cependant celles-ci sont dépendantes du WIFI qui &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:19113:"



<h1 class="wp-block-heading">Intro</h1>



<p>J&rsquo;utilise depuis longtemps des ESP32 ou ESP01 flashés avec ESP HOME. Ces petites bestioles sont très pratiques pour des petites conceptions DIY. Cependant celles-ci sont dépendantes du WIFI qui en terme de fiabilité et de disponibilité peut faire mieux.</p>



<p>Dernièrement j&rsquo;ai utilisé un <a href="https://fr.aliexpress.com/item/1005001930750808.html?spm=a2g0o.order_list.0.0.17125e5bv824H8&amp;gatewayAdapt=glo2fra" target="_blank" rel="noreferrer noopener">WT32-ETH01</a> qui permet de connecter l&rsquo;ESP à un réseau ethernet câblé, pas en POE mais c&rsquo;est déjà un premier pas vers la fiabilisation.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="500" height="500" src="https://domo.rem81.com/wp-content/uploads/2022/09/module-de-reseau-sans-fil-mcu-esp32-wt32-eth01-port-serie-integre-ethernet-wifi-combo-gateway-partie-reseau-carte-2081151343_L.jpg" alt="" class="wp-image-2290" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/module-de-reseau-sans-fil-mcu-esp32-wt32-eth01-port-serie-integre-ethernet-wifi-combo-gateway-partie-reseau-carte-2081151343_L.jpg 500w, https://domo.rem81.com/wp-content/uploads/2022/09/module-de-reseau-sans-fil-mcu-esp32-wt32-eth01-port-serie-integre-ethernet-wifi-combo-gateway-partie-reseau-carte-2081151343_L-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2022/09/module-de-reseau-sans-fil-mcu-esp32-wt32-eth01-port-serie-integre-ethernet-wifi-combo-gateway-partie-reseau-carte-2081151343_L-150x150.jpg 150w" sizes="(max-width: 500px) 100vw, 500px" /></figure>



<p>L&rsquo;inconvénient, c&rsquo;est qu&rsquo;il n&#8217;embarque pas de port USB permettant de le flasher la première fois, il faut donc passer par un convertisseur USB/Port Série.</p>



<p>Autre inconvénient, le nom de pin utilisable est limité car beaucoup sont réservées au port Ethernet (en gris ci-dessous).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="787" height="787" src="https://domo.rem81.com/wp-content/uploads/2022/09/6174af8800167.jpg" alt="" class="wp-image-2288" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/6174af8800167.jpg 787w, https://domo.rem81.com/wp-content/uploads/2022/09/6174af8800167-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2022/09/6174af8800167-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2022/09/6174af8800167-768x768.jpg 768w" sizes="(max-width: 787px) 100vw, 787px" /></figure>



<h1 class="wp-block-heading">Premier Flashage</h1>



<p>Il faut utiliser un convertisseur USB/Port série, perso j’utilise un FTDI232, le même que pour mes ESP01, je vous mets le lien vers<a rel="noreferrer noopener" href="https://www.amazon.fr/AZDelivery-Adaptateur-FT232RL-s%C3%A9rie-book/dp/B088C4FN56" target="_blank"> Amazon</a> ou <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/32460118879.html?spm=a2g0o.productlist.0.0.72791f73TAFyHX&amp;algo_pvid=ac1983db-9869-406d-abc5-51637d14ad0e&amp;algo_exp_id=ac1983db-9869-406d-abc5-51637d14ad0e-1&amp;pdp_ext_f=%7B%22sku_id%22%3A%2257041576669%22%7D&amp;pdp_npi=2%40dis%21EUR%211.65%211.46%21%21%211.51%21%21%402100bde316624519439081388edffd%2157041576669%21sea&amp;curPageLogUid=LR0yvLildngZ" target="_blank">Aliexpress</a> mais Google peut vous aider: mot clef « FTDI232 ».</p>



<p>Il faut maintenant le raccorder au WT32.</p>



<ul>
<li><strong>FTDI232                &lt;&#8212;-&gt;            WT32</strong></li>



<li>GND                         &lt;&#8212;-&gt;            GND</li>



<li>VCC                         &lt;&#8212;-&gt;            +5v</li>



<li>TX                             &lt;&#8212;-&gt;            RX0 la pin à coté de I00</li>



<li>RX                             &lt;&#8212;-&gt;            TX0 la pin à coté de RX0</li>



<li></li>



<li>Faire un pont sur le WT32 entre I00 et un GND</li>



<li>Positionner le cavalier du FDTI 232 sur 5V</li>
</ul>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-11 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2264" src="https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085812-1024x1024.jpg" alt="" class="wp-image-2264" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085812-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085812-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085812-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085812-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085812-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085812-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2265" src="https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085826-1024x1024.jpg" alt="" class="wp-image-2265" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085826-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085826-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085826-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085826-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085826-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085826-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2263" src="https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085837-1024x1024.jpg" alt="" class="wp-image-2263" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085837-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085837-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085837-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085837-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085837-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2022/09/IMG_20220906_085837-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p>Puis Il faut vous rendre sur ESPHOME et déclarer votre WT32.</p>



<p>Vous trouverez ci-après un code en exemple (mesure de niveau d&rsquo;eau dans un puit).</p>



<p>J&rsquo;utilise ce type de <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/32950057764.html?spm=a2g0o.order_list.order_list_main.220.6b1c5e5bKrRHBZ&amp;gatewayAdapt=glo2fra" data-type="URL" data-id="https://fr.aliexpress.com/item/32950057764.html?spm=a2g0o.order_list.order_list_main.220.6b1c5e5bKrRHBZ&amp;gatewayAdapt=glo2fra" target="_blank">capteur à ultrason commandé sur Ali</a>. Pas cher et efficace.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="451" height="540" src="https://domo.rem81.com/wp-content/uploads/2023/05/image-2.png" alt="" class="wp-image-2711" srcset="https://domo.rem81.com/wp-content/uploads/2023/05/image-2.png 451w, https://domo.rem81.com/wp-content/uploads/2023/05/image-2-251x300.png 251w" sizes="(max-width: 451px) 100vw, 451px" /></figure>



<p>A vous de le personnaliser « device_name, adresse ip,..). Ne pas modifier la partie « Ethernet » </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="177" height="111" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-8.png" alt="" class="wp-image-2283"/></figure>



<p>Voici le code.</p>



<pre class="wp-block-code"><code>substitutions:
  device_name: esp144-test-wt32-eth01
  adress_ip: "192.168.0.144"
  friendly_name: esp144
  time_timezone: "Europe/Paris"
  
esphome:
  name: ${device_name}
  platform: ESP32
  board: esp-wrover-kit

# Enable logging
logger:

# Enable Home Assistant API
api:

web_server:
  port: 80


ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO0_IN
  phy_addr: 1
  power_pin: GPIO16
  
  manual_ip:
    static_ip: ${adress_ip}
    gateway: 192.168.0.254
    subnet: 255.255.255.0

sensor:
  - platform: ultrasonic
    trigger_pin: GPIO2
    echo_pin: GPIO4
    name: "niveau puit"
    accuracy_decimals: 2
    id: niveau_eau
    update_interval: 60s
    filters:
      - lambda: return 3.5 - x;
      - sliding_window_moving_average:
          window_size: 5 # moyenne sur x lectures
          send_every: 5 # envoi toutes les x lectures
          send_first_at: 1 # envoi à la premiere lecture

# Calcul du niveau d'eau H total
# longueur du tube=2.3 m
# hauteur total puit=5.8 m
# d'ou 5.80-2.3=3.5

############### TEMPLATE  ######################"
# Calcul volume eau
  - platform: template
    name: "volume_puit"
    id: volume
    icon: mdi:flash
    unit_of_measurement: "m3"
    accuracy_decimals: 2
    lambda: |-
      return (id(niveau_eau).state*0.6*0.6*3.14159);



#Etat de la connection
binary_sensor:
  - platform: status
    name: "${friendly_name} Status"

switch:   
  - platform: restart
    name: "${friendly_name} Restart"
    

    </code></pre>



<p>Apres avoir connecté votre FTDI232 à votre PC HA avec le cordon USB qui va bien, vous lancer « install »:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="479" src="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-09-28-13-1024x479.png" alt="" class="wp-image-2271" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-09-28-13-1024x479.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-09-28-13-300x140.png 300w, https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-09-28-13-768x359.png 768w, https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-09-28-13.png 1279w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dans mon cas je choisis l&rsquo;option 3 « Plug into the computer running ESPHome Dashboard »:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="454" height="425" src="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-56-15.png" alt="" class="wp-image-2268" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-56-15.png 454w, https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-56-15-300x281.png 300w" sizes="(max-width: 454px) 100vw, 454px" /></figure>



<p>Sélectionner le port USB correspondant à votre FDTI232, <strong>FT232R USB UART</strong> dans mon cas:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="448" height="350" src="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-56-35.png" alt="" class="wp-image-2270" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-56-35.png 448w, https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-56-35-300x234.png 300w" sizes="(max-width: 448px) 100vw, 448px" /></figure>



<p>ESP HOME compile puis transfert vert le FTDI232:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="468" src="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-57-39-1024x468.png" alt="" class="wp-image-2269" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-57-39-1024x468.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-57-39-300x137.png 300w, https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-57-39-768x351.png 768w, https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-57-39.png 1229w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Et voila c&rsquo;est terminé.</p>



<h1 class="wp-block-heading">Exploitation</h1>



<p>Il suffit maintenant de débrancher le WT232, le connecter au réseau cablé et de l&rsquo;alimenter en 5 ou 3.2 VCC.</p>



<p>Sur ESP HOME, si il est reconnu sur votre réseau, il est déclaré « ONLINE »:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="429" height="134" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-1.png" alt="" class="wp-image-2274" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/image-1.png 429w, https://domo.rem81.com/wp-content/uploads/2022/09/image-1-300x94.png 300w" sizes="(max-width: 429px) 100vw, 429px" /></figure>



<h1 class="wp-block-heading">Intégration dans HA</h1>



<p>Normalement HA doit vous le proposer comme une nouvelle intégration </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="910" height="638" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-3.png" alt="" class="wp-image-2276" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/image-3.png 910w, https://domo.rem81.com/wp-content/uploads/2022/09/image-3-300x210.png 300w, https://domo.rem81.com/wp-content/uploads/2022/09/image-3-768x538.png 768w" sizes="(max-width: 910px) 100vw, 910px" /></figure>



<p>Cliquer sur configurer</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="648" height="199" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-4.png" alt="" class="wp-image-2277" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/image-4.png 648w, https://domo.rem81.com/wp-content/uploads/2022/09/image-4-300x92.png 300w" sizes="(max-width: 648px) 100vw, 648px" /></figure>



<p>Cliquer sur « Soumettre »</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="405" height="315" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-5.png" alt="" class="wp-image-2278" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/image-5.png 405w, https://domo.rem81.com/wp-content/uploads/2022/09/image-5-300x233.png 300w" sizes="(max-width: 405px) 100vw, 405px" /></figure>



<p>Choisir une pièce, c&rsquo;est facultatif mais recommandé.</p>



<p>Vous le retrouver dans les intégrations/appareils.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="597" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-6-1024x597.png" alt="" class="wp-image-2279" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/image-6-1024x597.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/09/image-6-300x175.png 300w, https://domo.rem81.com/wp-content/uploads/2022/09/image-6-768x448.png 768w, https://domo.rem81.com/wp-content/uploads/2022/09/image-6.png 1205w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Une fois intégré dans HA, vous pouvez visualiser les logs ou la page WEB embarquée.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="488" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-2-1024x488.png" alt="" class="wp-image-2275" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/image-2-1024x488.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/09/image-2-300x143.png 300w, https://domo.rem81.com/wp-content/uploads/2022/09/image-2-768x366.png 768w, https://domo.rem81.com/wp-content/uploads/2022/09/image-2.png 1271w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>ou bien la page WEB embarquée</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="415" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-7-1024x415.png" alt="" class="wp-image-2281" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/image-7-1024x415.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/09/image-7-300x122.png 300w, https://domo.rem81.com/wp-content/uploads/2022/09/image-7-768x311.png 768w, https://domo.rem81.com/wp-content/uploads/2022/09/image-7-1536x623.png 1536w, https://domo.rem81.com/wp-content/uploads/2022/09/image-7.png 1549w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Si pas découvert automatiquement par HA, essayer de l&rsquo;intégrer manuellement:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="434" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-9-1024x434.png" alt="" class="wp-image-2294" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/image-9-1024x434.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/09/image-9-300x127.png 300w, https://domo.rem81.com/wp-content/uploads/2022/09/image-9-768x326.png 768w, https://domo.rem81.com/wp-content/uploads/2022/09/image-9-1536x651.png 1536w, https://domo.rem81.com/wp-content/uploads/2022/09/image-9.png 1580w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Cliquer sur « <strong>+ Ajouter intégration</strong>« :</p>



<p>Chercher « ESPHOME », saisir l&rsquo;adresse IP puis soumettre:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="502" height="316" src="https://domo.rem81.com/wp-content/uploads/2022/09/image-10.png" alt="" class="wp-image-2295" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/image-10.png 502w, https://domo.rem81.com/wp-content/uploads/2022/09/image-10-300x189.png 300w" sizes="(max-width: 502px) 100vw, 502px" /></figure>



<p>Cela devrait fonctionner, la cas échéant, vérifier votre adresse IP.</p>



<h1 class="wp-block-heading">Mise à Jour</h1>



<p>Une fois connecté à votre réseau, plus besoin d&rsquo;utiliser le FTDI232, la mise à jour est à transférer comme d’habitude, via la « Wirelessly ».</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="454" height="425" src="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-56-15.png" alt="" class="wp-image-2268" srcset="https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-56-15.png 454w, https://domo.rem81.com/wp-content/uploads/2022/09/Capture-decran-du-2022-09-06-08-56-15-300x281.png 300w" sizes="(max-width: 454px) 100vw, 454px" /></figure>



<h1 class="wp-block-heading">Conclusion</h1>



<p>J&rsquo;en utilise un depuis quelque semaines et rien à signaler, il tourne comme une horloge. </p>



<p>N&rsquo;hésitez par me faire part de vos commentaires.</p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:70:"https://domo.rem81.com/2022/09/06/ha-esp-home-flashage-wt01-eth0/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"4";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:88:"
		
		
					
		
		
		
				
		
		
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:39:"HA-Modification statistiques long terme";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:74:"https://domo.rem81.com/2022/06/20/ha-modification-statistiques-long-terme/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:83:"https://domo.rem81.com/2022/06/20/ha-modification-statistiques-long-terme/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 20 Jun 2022 09:04:01 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:6:{i:0;a:5:{s:4:"data";s:9:"Domotique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:5:"mysql";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:10:"phpmyadmin";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:3:"sql";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"https://domo.rem81.com/?p=2193";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:214:"Intro J&#8217;ai récemment eu la désagréable surprise de constater une valeur anormalement élevée dans mon tableau « energy », en effet la conso totale jour HP était supérieure à 10000 kWh bien &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:14446:"



<h1 class="wp-block-heading">Intro</h1>



<p>J&rsquo;ai récemment eu la désagréable surprise de constater une valeur anormalement élevée dans mon tableau « energy », en effet la conso totale jour HP était supérieure à 10000 kWh bien loin des valeurs habituelles.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="324" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-29-1024x324.png" alt="" class="wp-image-2201" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-29-1024x324.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-29-300x95.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-29-768x243.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-29.png 1344w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h1 class="wp-block-heading">Méthodologie apres 2022-04</h1>



<p>Depuis la version 2022-04,  HA offre la possibilité de modifier simplement les statistiques « longue durée ». Il faut vous rendre dans « outils de développement/statistiques ».</p>



<p>Vous cherchez votre entité corrompue avec la loupe</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="209" src="https://domo.rem81.com/wp-content/uploads/2022/11/image-11-1024x209.png" alt="" class="wp-image-2421" srcset="https://domo.rem81.com/wp-content/uploads/2022/11/image-11-1024x209.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/11/image-11-300x61.png 300w, https://domo.rem81.com/wp-content/uploads/2022/11/image-11-768x157.png 768w, https://domo.rem81.com/wp-content/uploads/2022/11/image-11.png 1332w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Vous cliquez sur l&rsquo;icone de droite:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="485" height="614" src="https://domo.rem81.com/wp-content/uploads/2022/11/image-12.png" alt="" class="wp-image-2422" srcset="https://domo.rem81.com/wp-content/uploads/2022/11/image-12.png 485w, https://domo.rem81.com/wp-content/uploads/2022/11/image-12-237x300.png 237w" sizes="(max-width: 485px) 100vw, 485px" /></figure>



<p>Vous sélectionnez la date, l&rsquo;heure, vous cliquez sur la flèche correspondante à la valeur à rectifier:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="421" height="350" src="https://domo.rem81.com/wp-content/uploads/2022/11/image-13.png" alt="" class="wp-image-2423" srcset="https://domo.rem81.com/wp-content/uploads/2022/11/image-13.png 421w, https://domo.rem81.com/wp-content/uploads/2022/11/image-13-300x249.png 300w" sizes="(max-width: 421px) 100vw, 421px" /></figure>



<p>Vous saisissez la nouvelle valeur et c&rsquo;est terminé!</p>



<p>Merci HA, c&rsquo;est quand même plus simple.</p>



<h1 class="wp-block-heading">Modifications des données avant 2022-04</h1>



<p><strong>Méthode OBSOLETE</strong></p>



<p>A ma connaissance, la seule méthode permettant de corriger les données est d&rsquo;intervenir directement dans la base de données.</p>



<h2 class="wp-block-heading">Prè requis pour ce tuto</h2>



<ul>
<li>Utiliser mysql comme base de données (voir mon <a rel="noreferrer noopener" href="https://domo.rem81.com/2020/12/17/home-assistant-deporter-la-base-de-donnees/" data-type="URL" data-id="https://domo.rem81.com/2020/12/17/home-assistant-deporter-la-base-de-donnees/" target="_blank">article</a> sur le sujet)</li>



<li>Avoir installer l&rsquo;addon « phpMyadmin », c&rsquo;est beaucoup plus simple et sécure de l&rsquo;utiliser que de saisir les commandes avec le terminal!!</li>
</ul>



<h2 class="wp-block-heading">Avertissements</h2>



<ul>
<li>Ce tuto applique à des utility-meter, il peut être différents pour d&rsquo;autres type d&rsquo;entités, mais j&rsquo;ai pas testé. En effet le mode de calcul du « sum » est différent d&rsquo;un type d&rsquo;entité à l&rsquo;autre.</li>



<li>Faites une sauvegarde de votre base de données, des modifications avec une requête SQL peuvent être dévastatrices et il n&rsquo;y a pas de possibilité de retour en arrière.</li>
</ul>



<h2 class="wp-block-heading">Mode opératoire</h2>



<ul>
<li>1- recherche de l&rsquo;ID de l&rsquo;entité concerné</li>



<li>2-modification de la table « statistics »</li>



<li>3-modification de la table « statistics_short_term »</li>
</ul>



<h3 class="wp-block-heading">Recherche de l&rsquo;ID de l&rsquo;entité concerné</h3>



<p>Pour rappel, les entités éligibles aux « <a rel="noreferrer noopener" href="https://data.home-assistant.io/docs/statistics" data-type="URL" data-id="https://data.home-assistant.io/docs/statistics" target="_blank">statistiques au long terme</a> » sont stockées dans des tables spécifiques indépendamment des statistiques « temps réels » purgées par défaut tous les 10 jours.</p>



<p>Toutes les heures, les entités sont calculées et stockées dans une table « statistics ».  Dans cette table chaque entité est identifiée par un « id » que vous allez récupérerez dans la table « statistics-meta »</p>



<p>Dans mon exemple, je cherche le « sensor.energy_total_usage_dayly_hp », vous sélectionnez la table « statistics-meta » , onglet « rechercher », saisir le nom de votre sensor dans le champ « statistic_id », vous pouvez utilisez le signe % comme générique.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="554" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-25-1024x554.png" alt="" class="wp-image-2194" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-25-1024x554.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-25-300x162.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-25-768x415.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-25.png 1045w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Exécuter (en bas à gauche).</p>



<p>Si pas d’erreur de saisie vous retrouverez l&rsquo;ID de votre sensor.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="550" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-26-1024x550.png" alt="" class="wp-image-2196" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-26-1024x550.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-26-300x161.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-26-768x413.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-26.png 1126w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dans mon cas, je note ID=28</p>



<h3 class="wp-block-heading">Modification de la table « statistics »</h3>



<p>Dans la table « statistics » vous « recherchez » les enregistrements relatifs à votre id.</p>



<p>Dans le champ « metada-id » vous saisissez l' »id » de votre sensor, 28 dans mon cas.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="992" height="711" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-30.png" alt="" class="wp-image-2203" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-30.png 992w, https://domo.rem81.com/wp-content/uploads/2022/06/image-30-300x215.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-30-768x550.png 768w" sizes="(max-width: 992px) 100vw, 992px" /></figure>



<p>Vous délimitez le champ de recherche avec la date de création en sélectionnant dans le champ « created », « between », vous saisissez vos dates min/max, ajuster l&rsquo;heure.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1018" height="625" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-27.png" alt="" class="wp-image-2197" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-27.png 1018w, https://domo.rem81.com/wp-content/uploads/2022/06/image-27-300x184.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-27-768x472.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-27-348x215.png 348w" sizes="(max-width: 1018px) 100vw, 1018px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1016" height="685" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-28.png" alt="" class="wp-image-2198" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-28.png 1016w, https://domo.rem81.com/wp-content/uploads/2022/06/image-28-300x202.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-28-768x518.png 768w" sizes="(max-width: 1016px) 100vw, 1016px" /></figure>



<p>Exécuter (en bas à gauche).</p>



<p>Vous devriez voir apparaître votre « anomalie » dans les colonnes « state » et « sum »  10103 et 14451 dans mon cas, ce sont ces valeurs qu&rsquo;il faut rectifier.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="255" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-31-1024x255.png" alt="" class="wp-image-2205" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-31-1024x255.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-31-300x75.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-31-768x191.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-31.png 1308w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Pour modifier c&rsquo;est pas compliqué, vous cliquez sur « Editer » de la ligne concernée. </p>



<p>Vous mettez à jour « state » et/ou « sum » avec  vos valeur et vous « exécuter ». </p>



<p>Remarque: Pour « state », inspirez vous des valeurs des lignes environnantes pour vous donner une idée de la consommation à l’instant T.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="598" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-32-1024x598.png" alt="" class="wp-image-2207" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-32-1024x598.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-32-300x175.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-32-768x448.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-32.png 1155w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Remarque:  pour « sum » vous additionner votre « state » à la « sum » de la ligne précédente. </p>



<p>Vous constaterez que les « sum » postérieures à cette erreur sont toutes créditées d&rsquo;un surplus de consommation. Vous pouvez les modifier à la main, ligne par ligne, en soustrayant le surplus à la « sum ». Cela peut être long et fastidieux si comme moi vous avez mis trop de temps à réagir. </p>



<h3 class="wp-block-heading">Requete SQL:</h3>



<p>L&rsquo;autre solution est d’exécuter une requête SQL.</p>



<p>Attention à ce que vous faites, prenez bien soi de vérifier votre requête avant de l’exécuter, sauvegarder votre base de données.</p>



<p>Ce que nous voulons, dans la table « statistics », c&rsquo;est soustraire une valeur, par exemple 10101, pour le sensor dont l&rsquo;ID=28, aux valeurs de la colonne « sum » et partir d&rsquo;un certaine date et si sum&gt;10000, la requête SQL est dans ce cas:</p>



<pre class="wp-block-code"><code>UPDATE statistics SET sum = sum - '10006.0' WHERE metadata_id = '29' AND created &gt;= '2022-06-18 00:00:00.0' AND SUM&gt;'10000';</code></pre>



<p>Cette requête est à saisir dans l&rsquo;onglet « SQL » après avoir sélectionner la table « statistics ».</p>



<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/06/image-34-1024x499.png" alt="" class="wp-image-2215" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-34-1024x499.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-34-300x146.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-34-768x374.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-34.png 1282w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Vous pouvez simuler la requête avant exécution, pratique pour s&rsquo;assurer du résultat avant application définitive (pas de possibilité de retour en arrière!).</p>



<p>Si les résultats vous conviennent, vérifier notamment si le nombre de ligne concernée par la modification est cohérent, vous « exécuter ».</p>



<p>Visualiser le résultat de vos modifications dans le tableau « energy ».</p>



<h2 class="wp-block-heading">Modification de la table « statistics_short_term »</h2>



<p>Cette table est utiliser pour calculer les statistiques long terme, elle est purgée sur une période que vous avez défini dans votre configuration avec « purge_keep_days », le cas échéant c&rsquo;est 10 jours par défaut.</p>



<p>Il faut donc également rectifier les « sum » et les « state »  de cette table. Soit à la mano, soit avec une requête SQL du genre:</p>



<pre class="wp-block-code"><code>UPDATE statistics_short_term SET sum = sum - '10006.0' WHERE metadata_id = '28' AND created &gt;= '2022-06-18 00:00:00.0' AND SUM&gt;'10000';</code></pre>



<pre class="wp-block-code"><code>UPDATE statistics_short_term SET state = state - '10006.0' WHERE metadata_id = '28' AND created &gt;= '2022-06-18 00:00:00.0' AND state&gt;'10000';</code></pre>



<p>C&rsquo;est exactement le même principe que la table « statistics »</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>Je ne vous cache pas que c&rsquo;est un peu galère, notamment dans le calcul du « sum » qui est un cumul du « sum » précédent avec le « state « en cours, donc normalement le « sum » doit toujours croître, sinon vous retrouverez une conso négative.</p>



<p>PhpMyadmin est très puissant et permet de manipuler facilement les données, donc à utiliser avec prudence.</p>



<p>Si ce tuto n&rsquo;est pas assez explicite, n&rsquo;hésitez pas à me le faire remonter dans les commentaires.</p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:79:"https://domo.rem81.com/2022/06/20/ha-modification-statistiques-long-terme/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"8";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:85:"
		
		
					
		
		
		
				
		
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:38:"HA-Compteur de service (utility meter)";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:71:"https://domo.rem81.com/2022/06/06/ha-compteur-de-service-utility-meter/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:80:"https://domo.rem81.com/2022/06/06/ha-compteur-de-service-utility-meter/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 06 Jun 2022 16:09:44 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:5:{i:0;a:5:{s:4:"data";s:9:"Domotique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:3:"kWh";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:5:"Linky";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"https://domo.rem81.com/?p=2098";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:252:"Intro Le comptage d&#8217;énergie est souvent évoqué sur les réseaux sociaux, qu&#8217;il s&#8217;agisse de kWh ou autres grandeurs physiques et semble être l&#8217;objet d&#8217;interrogations récurrentes. Récemment HA, dans sa version &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:20922:"



<h1 class="wp-block-heading">Intro</h1>



<p>Le comptage d&rsquo;énergie est souvent évoqué sur les réseaux sociaux, qu&rsquo;il s&rsquo;agisse de kWh ou autres grandeurs physiques et semble être l&rsquo;objet d&rsquo;interrogations récurrentes.</p>



<p>Récemment HA, dans sa version <a rel="noreferrer noopener" href="https://www.home-assistant.io/blog/2022/04/06/release-20224/#now-available-in-the-ui-groups" data-type="URL" data-id="https://www.home-assistant.io/blog/2022/04/06/release-20224/#now-available-in-the-ui-groups" target="_blank">2022-04</a> a ajouté des intégrations directement configurables depuis l&rsquo;interface utilisateur, simplifiant de fait leur déclaration, c&rsquo;est ce que je vous invite à découvrir dans cet article. J&rsquo;ai déjà abordé le sujet avec l&rsquo;intégration <a rel="noreferrer noopener" href="https://www.home-assistant.io/integrations/threshold" target="_blank">«&nbsp;entrées threshold&nbsp;»</a> dans cet <a rel="noreferrer noopener" href="https://domo.rem81.com/2022/04/02/ha-asservissement-des-volets-a-la-position-du-soleil/" data-type="URL" data-id="https://domo.rem81.com/2022/04/02/ha-asservissement-des-volets-a-la-position-du-soleil/" target="_blank">article</a> .</p>



<p>Un des avantages est qu&rsquo;il n&rsquo;est besoin de rebooter le système pour leur prise en compte.</p>



<p>Un des inconvénients, est qu&rsquo;une fois créé et c&rsquo;est regrettable, tous les paramètres ne sont pas modifiables et à ma connaissance la seul solution est de les supprimer puis de recréer une entité avec le même nom, de fait vous ne perdrez pas l&rsquo;historique.</p>



<h1 class="wp-block-heading">Conversion de la puissance en énergie</h1>



<p>Comme pré requis il faut commencer par déclarer l&rsquo;entité que vous souhaitez comptabiliser. En général nous nous intéressons au kWh mais c&rsquo;est également valable pour des m3 d&rsquo;eau ou de gaz.</p>



<p>Rappelons qu&rsquo;un kilo watt heure correspond à une consommation de 1000 W ou 1 kW pendant 1 heure, il s&rsquo;agit d&rsquo;une énergie et non d&rsquo;une puissance. Si votre capteur fournit uniquement une puissance en  W ou kW, vous devez convertir la convertir en Wh ou kWh avec l&rsquo;une des deux méthodes suivantes:</p>



<h2 class="wp-block-heading">Methode de Riemann</h2>



<p>HA dispose d&rsquo;une intégration « <a rel="noreferrer noopener" href="https://www.home-assistant.io/integrations/integration" target="_blank">intégration par le </a><a rel="noreferrer noopener" href="https://www.home-assistant.io/integrations/integration" target="_blank">méthode de</a><a rel="noreferrer noopener" href="https://www.home-assistant.io/integrations/integration" target="_blank"> Riemann</a> » configurable depuis une interface utilisateur.</p>



<p>Pour cela vous allez  dans « paramètres/appareils et service/entrées » puis « Ajouter un capteur d&rsquo;intégrale de Riemann ».</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="693" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-14-1024x693.png" alt="" class="wp-image-2105" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-14-1024x693.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-14-300x203.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-14-768x520.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-14.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container">
<p>Vous saisissez:</p>



<ul>
<li>le nom que vous souhaitez donner à l&rsquo;entité</li>



<li>le capteur qui vous délivre des W.</li>



<li>la méthode de calcul de l&rsquo;intégrale:
<ul>
<li>Trapézoïdal si la grandeur physique mesurée évolue régulièrement dans le temps.</li>



<li>Left ou right  si votre grandeur évolue avec des alternance de pics de puissance et de valeurs plus faibles voir nulles, une machine à laver par exemple.</li>
</ul>
</li>



<li>la précision</li>



<li>le préfixe métrique (k en général)</li>



<li>l&rsquo;unité de temps (h en général).</li>
</ul>
</div></div>



<p>HA définit automatiquement les attributs de l&rsquo;entité indispensable à sa classification (state_class, device_class,..)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="575" height="580" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-15.png" alt="" class="wp-image-2109" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-15.png 575w, https://domo.rem81.com/wp-content/uploads/2022/06/image-15-297x300.png 297w, https://domo.rem81.com/wp-content/uploads/2022/06/image-15-150x150.png 150w" sizes="(max-width: 575px) 100vw, 575px" /></figure>



<h2 class="wp-block-heading">Autre méthode de calcul</h2>



<p>Vous trouverez dans <a rel="noreferrer noopener" href="https://github.com/gb53smith/Hass/blob/master/python_scripts/energy.py" target="_blank">ce lien</a>, un script python, qui d’après l&rsquo;auteur calcule plus précisément les kWh,. J&rsquo;ai testé, il fonctionne, mais plus compliqué à mettre en oeuvre, perso je ne cours pas après le kWh au 100 eme pret.</p>



<h1 class="wp-block-heading">Configuration des compteurs de service.</h1>



<p>Votre entité en kWh (ou Wh) est maintenant créée, vous pouvez configurer votre compteur de service via une interface utilisateur.</p>



<p>Pour ce faire, allez dans « paramètres/appareils et service/entrées », puis ajouter « un compteur de services publics (eau, gaz, électricité…) ».</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="604" height="723" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-17.png" alt="" class="wp-image-2128" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-17.png 604w, https://domo.rem81.com/wp-content/uploads/2022/06/image-17-251x300.png 251w" sizes="(max-width: 604px) 100vw, 604px" /></figure>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container">
<p>Vous saisissez:</p>



<ul>
<li>le nom que vous souhaitez donner à l&rsquo;entité</li>



<li>le capteur que vous souhaitez comptabiliser (celui calculé avec l&rsquo;intégrale de rieuman par ex)</li>



<li>le cycle de remise à zéro (15 mn, heure, semaine,mois,..)</li>



<li>le décalage de remise à zéro (laisser zéro par défaut sauf cas particulier)</li>



<li>les tarifs pris en charge, laisser vide si un seul tarif, sinon saisissez « hc » et hp » par exemple, ceux sont ces tarifs que vous utiliserez dans l&rsquo;automatisme.</li>



<li>cocher « consommation nette » si la valeur évolue en positif/négatif</li>



<li>cocher « valeur delta » si les valeurs de la source sont des valeurs delta depuis la dernière lecture au lieu de valeurs absolues, Lorsque cette option est activée, chaque nouvelle valeur reçue sera ajoutée telle quelle au compteur au lieu d&rsquo;ajouter la&nbsp;<em>différence</em>&nbsp;entre la nouvelle valeur et la valeur précédente. Par exemple, vous devez l&rsquo;activer lorsque le capteur source renvoie des lectures telles que «&nbsp;1&nbsp;», «&nbsp;0,5&nbsp;», «&nbsp;0,75&nbsp;» contre «&nbsp;1&nbsp;», «&nbsp;1,5&nbsp;», «&nbsp;2,25&nbsp;»</li>
</ul>
</div></div>



<p>Vous obtiendrez des informations complémentaires sur « utility meter » dans <a rel="noreferrer noopener" href="https://www.home-assistant.io/integrations/utility_meter" target="_blank">ce lien</a>.</p>



<p>HA définit automatiquement les attributs de l&rsquo;entité indispensable à sa classification (state_class, device_class,..)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="435" height="618" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-19.png" alt="" class="wp-image-2141" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-19.png 435w, https://domo.rem81.com/wp-content/uploads/2022/06/image-19-211x300.png 211w" sizes="(max-width: 435px) 100vw, 435px" /></figure>



<p>A noter que vous devez déclarer autant de compteur que de cycles de remise à zéro (jour, semaine, mois année, ..) nécessaires.</p>



<h1 class="wp-block-heading">Exploitation des compteurs</h1>



<p>Une fois créé, HA ajoute une entité par compteur, par ex « linky » et, si vous les avez déclaré, une entité supplémentaire par tarif , « linky_hc » et « linky_hp ».</p>



<p>Si vous avez un seul tarif, vous n&rsquo;avez rien à faire de plus, votre compteur sera remis à zéro en fonction de votre unité de temps (jour, semaine,..).</p>



<p>Si vous avez un double tarif, vous devez indiquer au compteur quel tarif est en cours, pour ce faire vous pouvez utiliser un automatisme.</p>



<p>Les déclencheurs peuvent être des plages horaires ou encore mieux le tarif en cours dans votre linky par exemple.</p>



<h2 class="wp-block-heading">Selon une plage horaire fixe</h2>



<p>Il faut créer un automatisme:</p>



<p>Les options « hc » et « hp » correspondent à celles que vous avez déclarées dans le compteur de service.</p>



<pre class="wp-block-code"><code>alias: 6_1_0 Energie Changement HP&lt;-&gt;HC (Dupliquer)
description: ''
trigger:
  - platform: time
    id: tarif_hc
    at: '01:00:00'
  - platform: time
    id: tarif_hp
    at: '02:00:00'
condition: &#091;]
action:
  - choose:
      - conditions:
          - condition: trigger
            id: tarif_hc
        sequence:
          - service: select.select_option
            data:
              option: hc
            target:
              entity_id:
                - select.linky_energie_jour
      - conditions:
          - condition: trigger
            id: tarif_hp
        sequence:
          - service: select.select_option
            data:
              option: hp
            target:
              entity_id:
                - select.linky_energie_jour
    default: &#091;]
mode: single
</code></pre>



<p>Si vous avez déclaré plusieurs compteurs avec les mêmes tarifs, vous les ajoutez les entités dans les <strong>« target: entity_id »</strong>.</p>



<h2 class="wp-block-heading">Selon plusieurs plages horaires fixes</h2>



<pre class="wp-block-code"><code>alias: 6_1_0 Energie Changement HP&lt;-&gt;HC (Dupliquer)
description: ''
trigger:
  - platform: time
    id: tarif_hc1
    at: '01:00:00'
  - platform: time
    id: tarif_hp2
    at: '02:00:00'
  - platform: time
    at: '05:00:00'
    id: tarif_hc2
  - platform: time
    at: '06:00:00'
    id: tarif_hp2
condition: &#091;]
action:
  - choose:
      - conditions:
          - condition: trigger
            id: tarif_hc1
          - condition: trigger
            id: tarif_hc2

        sequence:
          - service: select.select_option
            data:
              option: hc
            target:
              entity_id:
                - select.linky_energie_jour
                - select.linky_energie_mois
      - conditions:
          - condition: trigger
            id: tarif_hp1
          - condition: trigger
            id: tarif_hp2
        sequence:
          - service: select.select_option
            data:
              option: hp
            target:
              entity_id:
                - select.linky_energie_jour
                - select.linky_energie_mois
    default: &#091;]
mode: single</code></pre>



<h2 class="wp-block-heading">Selon une plage horaire paramétrable</h2>



<p>Commencer par créer le deux « input_datetime » qui vont définir le début et la fin de la plage horaire des heures creuses.</p>



<p>Pour ce faire, allez dans « paramètres/appareils et service/entrées », puis ajouter « une date et/ou heure »:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="726" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-23-1024x726.png" alt="" class="wp-image-2168" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-23-1024x726.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-23-300x213.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-23-768x545.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-23.png 1028w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Saisir</p>



<ul>
<li>Le nom de l&rsquo;entité que vous souhaitez</li>



<li>Cocher « heure »</li>
</ul>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container">
<p>J&rsquo;ai ainsi créé deux entités:</p>



<ul>
<li>input_datetime.debut_heure_creuse</li>



<li>input_datetime.fin_heure_creuse</li>
</ul>
</div></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="428" height="211" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-21.png" alt="" class="wp-image-2158" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-21.png 428w, https://domo.rem81.com/wp-content/uploads/2022/06/image-21-300x148.png 300w" sizes="(max-width: 428px) 100vw, 428px" /></figure>



<p>que l&rsquo;on va pouvoir exploiter dans un automatisme:</p>



<p>Les options « hc » et « hp » correspondent à celles que vous avez déclarées dans le compteur de service.</p>



<p>Si vous avez déclaré plusieurs compteurs avec les mêmes tarifs, vous ajoutez les entités dans les <strong>« target: entity_id »</strong>.</p>



<pre class="wp-block-code"><code>alias: 6_1_0 Energie Changement HP&lt;-&gt;HC
description: ''
trigger:
  - platform: time
    id: tarif_hc
    at: input_datetime.debut_heure_creuse
  - platform: time
    id: tarif_hp
    at: input_datetime.fin_heure_creuse
condition: &#091;]
action:
  - choose:
      - conditions:
          - condition: trigger
            id: tarif_hc
        sequence:
          - service: select.select_option
            data:
              option: hc
            target:
              entity_id:
                - select.linky_energie_jour
      - conditions:
          - condition: trigger
            id: tarif_hp
        sequence:
          - service: select.select_option
            data:
              option: hp
            target:
              entity_id:
                - select.linky_energie_jour
    default: &#091;]
mode: single
</code></pre>



<h2 class="wp-block-heading">Avec l&rsquo;information HP/HC du Linky</h2>



<p>L&rsquo;automatisme est déclenché par une information délivrée par le Linky, qui, rappelons le, peux fonctionner sous 2 modes:</p>



<ul>
<li>En mode historique (mode par défaut):
<ul>
<li> voir mon article <a rel="noreferrer noopener" href="https://domo.rem81.com/2022/01/03/ha-teleinformation-linky-mode-historique/" target="_blank">https://domo.rem81.com/2022/01/03/ha-teleinformation-linky-mode-historique/</a></li>



<li>C&rsquo;est le « sensor.linky_ptec » qui prend la valeur « HC.. » ou « HP.. » et qu&rsquo;il faut tester</li>
</ul>
</li>



<li><a rel="noreferrer noopener" href="https://domo.rem81.com/2022/01/03/ha-teleinformation-linky-mode-historique/" target="_blank"> </a>En mode standard (en faire la demande au fournisseur d&rsquo;énergie)
<ul>
<li><a rel="noreferrer noopener" href="https://domo.rem81.com/2022/01/12/ha-teleinformation-linky-mode-standard/" target="_blank">https://domo.rem81.com/2022/01/12/ha-teleinformation-linky-mode-standard/</a></li>



<li>C&rsquo;est le « sensor.linky_n_tarif » qui prend la valeur 1 en HC et 2 en HP.</li>



<li>Il peut également valoir 3 et plus selon votre abonnement tarifaire auprès de votre fournisseur d&rsquo;énergie.</li>
</ul>
</li>
</ul>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container"></div></div>



<p>Les options « hc » et « hp » correspondent à celles que vous avez déclarées dans le compteur de service</p>



<p>Si vous avez déclaré plusieurs compteurs avec les mêmes tarifs, vous ajoutez les entités dans les <strong>« target: entity_id »</strong>.</p>



<pre class="wp-block-code"><code>alias: 6_1_0 Energie Changement HP&lt;-&gt;HC
description: ''
trigger:
  - platform: state
    entity_id: sensor.linky_n_tarif
    id: tarif_hc
    from: '2'
    to: '1'
  - platform: state
    entity_id: sensor.linky_n_tarif
    from: '1'
    id: tarif_hp
    to: '2'
condition: &#091;]
action:
  - choose:
      - conditions:
          - condition: trigger
            id: tarif_hc
        sequence:
          - service: select.select_option
            data:
              option: hc
            target:
              entity_id:
                - select.linky_energie_jour
                  
      - conditions:
          - condition: trigger
            id: tarif_hp
        sequence:
          - service: select.select_option
            data:
              option: hp
            target:
              entity_id:
                - select.linky_energie_jour
                 
    default: &#091;]
mode: single
</code></pre>



<h2 class="wp-block-heading">Calcul du cout de l&rsquo;énergie</h2>



<p>Il faut commencer par créer deux inputs permettant des saisir le prix du kWh HP et HC</p>



<pre class="wp-block-code"><code>input_number:
  # Calcul des coûts journaliers
  cout_kwh_hp:
    name: Cout du Kwh HP
    min: 0
    max: 10
    unit_of_measurement: €
    icon: mdi:currency-eur
    step: 0.00001
    mode: box

  cout_kwh_hc:
    name: Cout du Kwh HC
    min: 0
    max: 10
    unit_of_measurement: €
    icon: mdi:currency-eur
    step: 0.00001
    mode: box
</code></pre>



<p>Puis utiliser trois templates pour le calcul: HP+HC, HP, HC.</p>



<pre class="wp-block-code"><code>template:
  - sensor:
# Cout de l'Energie


    - name: "Cout Energy Total Jour HPHC"
      state: &gt;-
        {% set hp = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}
        {% set hc = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}
        {% set chp = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}
        {% set chc = states('input_number.cout_kwh_hc') | float(default=0) | round(5) %}
        {{((hc*chc) + (hp*chp)) | round(2) }}
      unit_of_measurement: "€"
      device_class: "monetary"
      state_class: "total"  
      unique_id: "cout_energy_total_jour_hphc"

    - name: "Cout Energy Total Jour HP"
      state: &gt;-
        {% set hp = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}
        {% set chp = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}
        {{(hp*chp) | round(2) }}
      unit_of_measurement: "€"
      device_class: "monetary"
      state_class: "total"  
      unique_id: "cout_energy_total_jour_hp"
      
    - name: "Cout Energy Total Jour HC"
      state: &gt;-
        {% set hc = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}
        {% set chc = states('input_number.cout_kwh_hc') | float(default=0) | round(5) %}
        {{(hc*chc) | round(2) }}
      unit_of_measurement: "€"
      device_class: "monetary"
      state_class: "total"  
      unique_id: "cout_energy_total_jour_hc"</code></pre>



<h1 class="wp-block-heading">Tableau de bord</h1>



<p>Exemple avec l&rsquo;excellente intégration « <a rel="noreferrer noopener" href="https://github.com/kalkih/mini-graph-card" target="_blank">mini-graph-card</a> » disponible dans HACS.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="434" height="245" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-24.png" alt="" class="wp-image-2171" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-24.png 434w, https://domo.rem81.com/wp-content/uploads/2022/06/image-24-300x169.png 300w" sizes="(max-width: 434px) 100vw, 434px" /></figure>



<pre class="wp-block-code"><code>type: custom:mini-graph-card
entities:
  - entity: sensor.linky_energie_jour_hp
    name: HP
    show_state: true
  - entity: sensor.linky_energie_jour_hc
    name: HC
    show_state: true
name: Conso Linky 7j
hours_to_show: 168
aggregate_func: max
group_by: date
show:
  graph: bar
icon: mdi:flash
</code></pre>



<p>Vous trouverez d&rsquo;autres exemples dans mon article <a rel="noreferrer noopener" href="https://domo.rem81.com/2022/01/12/ha-teleinformation-linky-mode-standard/" target="_blank">https://domo.rem81.com/2022/01/12/ha-teleinformation-linky-mode-standard/</a> .</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>Tuto tout simple qui, je l’espère, vous aidera à définir vos compteurs.</p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:76:"https://domo.rem81.com/2022/06/06/ha-compteur-de-service-utility-meter/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"9";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:91:"
		
		
					
		
		
		
				
		
		
		
		
		
		
		

					
										
					
					
			
		
		
			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:47:"HA-Mesure Qualité de l’air PM1.0-PM2.5-M10.0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:78:"https://domo.rem81.com/2022/06/03/ha-mesure-qualite-de-lair-pm1-0-pm2-5-m10-0/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:87:"https://domo.rem81.com/2022/06/03/ha-mesure-qualite-de-lair-pm1-0-pm2-5-m10-0/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 03 Jun 2022 06:00:59 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:7:{i:0;a:5:{s:4:"data";s:9:"Domotique";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:15:"Faire soi-même";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:14:"Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:3:"CO2";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:7:"ESPHOME";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:2:"HA";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:6;a:5:{s:4:"data";s:5:"PM2.5";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:29:"https://domo.rem81.com/?p=984";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:232:"Intro Dans un article précédent, j&#8217;abordais le détournement du boitier de mesure de qualité de l&#8217;air Vindriktning commercialisé par IKEA. Celui ci est équipé d&#8217;un capteur Pm2.5 pm1006 qui fonctionne &#8230; ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"rem81";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:29464:"



<h1 class="wp-block-heading">Intro</h1>



<p>Dans <a href="https://domo.rem81.com/2021/11/01/ha-mesure-de-la-qualite-de-lair-co2-et-pm2-5/" target="_blank" rel="noreferrer noopener">un article précédent</a>, j&rsquo;abordais le détournement du boitier de mesure de qualité de l&rsquo;air <a rel="noreferrer noopener" href="https://www.ikea.com/fr/fr/p/vindriktning-capteur-qualite-de-lair-70498242/" target="_blank">Vindriktning</a> commercialisé par IKEA. Celui ci est équipé d&rsquo;un capteur Pm2.5 <a rel="noreferrer noopener" href="https://esphome.io/components/sensor/pm1006.html" target="_blank">pm1006</a> qui fonctionne correctement mais  la gamme de mesure se limite au PM2.5 et la précision semble t&rsquo;il n&rsquo;est pas au rendez vous.</p>



<p>En parcourant les sensors « Air Quality » de EspHome, j&rsquo;ai découvert le PMS5003 qui propose lui une étendue de mesures bien supérieure pour un prix raisonnable. J&rsquo;en ai profité pour y associer un MHZ-19B qui lui mesure le taux de CO2 plus un afficheur local et un bandeau de 8 leds.</p>



<p>L&rsquo;ensemble est raccordé à un ESP32 Mini qui assure une puissance de traitement supérieure à un ESP8266.</p>



<p>Enfin j&rsquo;ai intégré le tout sur un joli circuit imprimé dont j&rsquo;ai sous traité la fabrication à <a rel="noreferrer noopener" href="https://jlcpcb.com/" target="_blank">https://jlcpcb.com/</a> pour un rapport qualité prix très attrayant.</p>



<h1 class="wp-block-heading">Descriptif matériel</h1>



<h2 class="wp-block-heading">Capteur de particules PMS 5003</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="292" height="293" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-12.png" alt="" class="wp-image-2095" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-12.png 292w, https://domo.rem81.com/wp-content/uploads/2022/06/image-12-150x150.png 150w" sizes="(max-width: 292px) 100vw, 292px" /></figure>



<p>Mesure fiable et en temps réel des concentrations de poussières PM2,5 ! Ce capteur utilise la diffusion laser pour rayonner les particules en suspension dans l&rsquo;air, puis recueille la lumière diffusée pour obtenir la courbe de la variation de la lumière diffusée dans le temps. Le microprocesseur calcule le diamètre équivalent des particules et le nombre de particules de diamètre différent par unité de volume.</p>



<p>&nbsp;&nbsp;&nbsp; Concentrations de PM1,0, PM2,5 et PM10,0 dans les unités standard et environnementales<br>&nbsp;&nbsp;&nbsp; Particules par 0,1 L d&rsquo;air, classées en bacs de 0,3 um, 0,5 um, 1,0 um, 2,5 um, 5,0 um et 10 um.</p>



<p>&nbsp;&nbsp; Plage de mesure : 0,3~1,0；1.0~2,5；2.5~10 μ m<br>&nbsp;&nbsp;&nbsp; Portée effective : 0~500 μ g/m³<br>&nbsp;&nbsp;&nbsp; Portée maximale : * ≥1000 μ g/m³<br>&nbsp;&nbsp;&nbsp; Résolution : 1 μ g/m³<br>&nbsp;&nbsp;&nbsp; Volume standard : 0.1L<br>&nbsp;&nbsp;&nbsp; Alimentation en courant continu : Typ:5.0 / Min:4.5 / Max : 5.5V<br>&nbsp;&nbsp;&nbsp; Courant actif : ≤100 mA<br>&nbsp;&nbsp;&nbsp; Courant de veille : ≤200 μ μ A<br>&nbsp;&nbsp;&nbsp; Plage de température de fonctionnement : -10~+60 ℃<br>&nbsp;&nbsp;&nbsp; Plage d&rsquo;humidité de travail : 0~99%<br>&nbsp;&nbsp;&nbsp; Plage de température de stockage : -40~+80 ℃<br>&nbsp;&nbsp;&nbsp; Dimensions du module capteur : 50 × 38 × 21mm<br>&nbsp;&nbsp;&nbsp; Poids (câble et adaptateur inclus) : 42.2g</p>



<p><strong>Fiche technique</strong></p>



<div data-wp-interactive="" class="wp-block-file"><object data-wp-bind--hidden="!selectors.core.file.hasPdfPreview" hidden class="wp-block-file__embed" data="https://domo.rem81.com/wp-content/uploads/2022/06/pms5003-english-v2.3.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Contenu embarqué pms5003-english-v2.3."></object><a id="wp-block-file--media-0c61b3a7-fb7f-4569-8d3a-0761442540e6" href="https://domo.rem81.com/wp-content/uploads/2022/06/pms5003-english-v2.3.pdf">pms5003-english-v2.3</a><a href="https://domo.rem81.com/wp-content/uploads/2022/06/pms5003-english-v2.3.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-0c61b3a7-fb7f-4569-8d3a-0761442540e6">Télécharger</a></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="595" height="538" src="https://domo.rem81.com/wp-content/uploads/2022/01/image-20.png" alt="" class="wp-image-1387" srcset="https://domo.rem81.com/wp-content/uploads/2022/01/image-20.png 595w, https://domo.rem81.com/wp-content/uploads/2022/01/image-20-300x271.png 300w" sizes="(max-width: 595px) 100vw, 595px" /></figure>



<ul id="block-423fadce-5872-4cc5-a139-19a8eb0ff517">
<li>Sur le PMS-5003:
<ul>
<li><strong>PMS-5003 &lt;&#8211;&gt; ESP32 Mini</strong></li>



<li>Validation <strong>&lt;&#8211;&gt;</strong> SET (IO27)</li>



<li>TX <strong>&lt;&#8211;&gt;</strong> RX (IO25)</li>



<li>GND <strong>&lt;&#8211;&gt;</strong> GND </li>



<li>VCC (+5v) <strong>&lt;&#8211;&gt;</strong> VCC</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Capteur de Co2</h2>



<p>Le capteur Co2 est un <a rel="noreferrer noopener" href="https://fr.aliexpress.com/item/1005002125913199.html?spm=a2g0s.9042311.0.0.715e6c37KAOSxq" target="_blank">MH-Z19B</a> qui mesure la teneur de CO2 sur une échelle de 400 à 10000 ppm et communique en UART.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="869" height="567" src="https://domo.rem81.com/wp-content/uploads/2021/12/image.png" alt="" class="wp-image-1110" srcset="https://domo.rem81.com/wp-content/uploads/2021/12/image.png 869w, https://domo.rem81.com/wp-content/uploads/2021/12/image-300x196.png 300w, https://domo.rem81.com/wp-content/uploads/2021/12/image-768x501.png 768w" sizes="(max-width: 869px) 100vw, 869px" /></figure>



<ul id="block-4162a44b-54ca-4048-ad07-102079155d7a">
<li>Sur le MH-Z19:
<ul>
<li><strong>MH-Z19 &lt;&#8211;&gt; ESP32 Mini</strong></li>



<li>TX <strong>&lt;&#8211;&gt;</strong> RX (IO16)</li>



<li>RX <strong>&lt;&#8211;&gt;</strong> TX (IO17)</li>



<li>GND <strong>&lt;&#8211;&gt;</strong> GND </li>



<li>VCC (+5v) <strong>&lt;&#8211;&gt;</strong> VCC</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">ESP32 Mini</h2>



<p>J&rsquo;ai choisi un <a href="https://www.amazon.fr/gp/product/B08TBPBJGV/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&amp;psc=1" data-type="URL" target="_blank" rel="noreferrer noopener">ESP32 Mini</a>, car l&rsquo;ESP8266 est trop juste en puissance de calcul si on utilise l&rsquo;intégration  ESPHOME plus un afficheur plus un bandeau Led, j&rsquo;ai galéré avec, je ne le recommande pas.</p>



<h2 class="wp-block-heading">Afficheur Oled</h2>



<p>Vous en trouverez sans problème sur <a rel="noreferrer noopener" href="https://www.amazon.fr/AZDelivery-128x64-Arduino-Raspberry-microcontr%C3%B4leur/dp/B074N9VLZX/ref=pd_day0fbt_img_sccl_1/260-2074638-0290232?pd_rd_w=mpOgy&amp;content-id=amzn1.sym.eb575755-8305-4dca-a190-ccf98a29b2c2&amp;pf_rd_p=eb575755-8305-4dca-a190-ccf98a29b2c2&amp;pf_rd_r=QZ9PGK7FZSZCJ270F8P3&amp;pd_rd_wg=PuT1Y&amp;pd_rd_r=37d75cc4-096b-4efb-aa99-ff2d765e0773&amp;pd_rd_i=B074N9VLZX&amp;th=1" target="_blank">Amazon</a> ou en chine</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="381" height="264" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-10.png" alt="" class="wp-image-2089" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-10.png 381w, https://domo.rem81.com/wp-content/uploads/2022/06/image-10-300x208.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-10-135x93.png 135w" sizes="(max-width: 381px) 100vw, 381px" /></figure>



<p>L&rsquo;afficheur utilise une police de caractère « Arial », vous pouvez télécharger 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érer dans un dossier « fonts » de votre « /config/esphome ».  Bien entendu vous pouvez utiliser une autre police de caractéres, « size » détermine la taille des caractères.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="314" height="655" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-6.png" alt="" class="wp-image-2076" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-6.png 314w, https://domo.rem81.com/wp-content/uploads/2022/06/image-6-144x300.png 144w" sizes="(max-width: 314px) 100vw, 314px" /></figure>



<h2 class="wp-block-heading">Bandeau led</h2>



<p>Il n&rsquo;est pas indispensable mais il permet de visualiser rapidement d&rsquo;un simple coup d’œil le niveau de pollution.</p>



<p>Stick NeoPixel RGB 8 leds</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="600" height="600" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-7.png" alt="" class="wp-image-2078" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-7.png 600w, https://domo.rem81.com/wp-content/uploads/2022/06/image-7-300x300.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-7-150x150.png 150w" sizes="(max-width: 600px) 100vw, 600px" /></figure>



<h1 class="wp-block-heading">Mise en oeuvre</h1>



<p>j&rsquo;utilise le logiciel Eagle d&rsquo;Autodesk pour la création des circuits imprimé, puis je sous traite la fabrication chez   <a rel="noreferrer noopener" href="https://jlcpcb.com/" target="_blank">https://jlcpcb.com/</a> pour un rapport qualité prix très attrayant et un rendu « professionnel »</p>



<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/06/IMG_20220603_085326-1024x1024.jpg" alt="" class="wp-image-2070" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_085326-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_085326-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_085326-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_085326-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_085326-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_085326-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Schéma Electronique</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="574" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-3-1024x574.png" alt="" class="wp-image-2068" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-3-1024x574.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-3-300x168.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-3-768x430.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-3.png 1103w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Circuit imprimé</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="365" height="634" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-4.png" alt="" class="wp-image-2069" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-4.png 365w, https://domo.rem81.com/wp-content/uploads/2022/06/image-4-173x300.png 173w" sizes="(max-width: 365px) 100vw, 365px" /></figure>



<h2 class="wp-block-heading">Mise en boitier</h2>



<p>Ca reste à faire, je cherche le boitier idéal!</p>



<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/06/IMG_20220603_091932-1024x1024.jpg" alt="" class="wp-image-2082" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_091932-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_091932-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_091932-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_091932-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_091932-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_091932-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h1 class="wp-block-heading">Logiciel</h1>



<p>J&rsquo;ai raccordé un bouton poussoir me permettant ainsi de faire défiler différentes pages de mesure sur l&rsquo;ecran Oled.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-12 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2081" src="https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092001-1024x1024.jpg" alt="" class="wp-image-2081" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092001-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092001-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092001-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092001-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092001-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092001-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" data-id="2080" src="https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092008-1024x1024.jpg" alt="" class="wp-image-2080" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092008-1024x1024.jpg 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092008-300x300.jpg 300w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092008-150x150.jpg 150w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092008-768x768.jpg 768w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092008-1536x1536.jpg 1536w, https://domo.rem81.com/wp-content/uploads/2022/06/IMG_20220603_092008-2048x2048.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<h2 class="wp-block-heading">Code ESP Home</h2>



<pre class="wp-block-code"><code>substitutions:
  device_name: esp138-qualite-air
  adress_ip: "192.168.0.138"
  friendly_name: esp138
  time_timezone: "Europe/Paris"
  
esphome:
  name: ${device_name}
  platform: ESP32
  board: mhetesp32minikit
  #board: wemos_d1_mini32
  
  platformio_options:
    lib_deps: NeoPixelBus@2.6.0
  on_boot:
    then:
      - light.control:
          id: rgb_led
          brightness: 0.25
          state: on
wifi:
  networks:
    - ssid: !secret wifi_mi4
      password: !secret mdpwifi_mi4
      priority: 2   

    - ssid: !secret wifi_esp
      password: !secret mdpwifi_esp
      priority: 1
      
    - ssid: !secret wifi
      password: !secret mdpwifi
      priority: 0
  reboot_timeout: 5min

  manual_ip:
    static_ip: ${adress_ip}
    gateway: 192.168.0.1
    subnet: 255.255.255.0

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:

ota:

web_server:
  port: 80
  
font:
  - file: "fonts/arial.ttf"
    id: arial
    size: 15

# Led WS2812 RGB  
light:

  - platform: neopixelbus
    num_leds: 8 
    pin: GPIO4 #gpio0
    name: "RGB strip"
    variant: ws2812
    id: rgb_led
    default_transition_length: 0s  

    
i2c:
  sda: GPIO21 #
  scl: GPIO22 #
  scan: True
  id: bus_a
  
uart:
  - id: uart_a
    rx_pin: GPIO25 #
    baud_rate: 9600

  - id: uart_b
    rx_pin: GPIO16 # GPIO16
    tx_pin: GPIO17 # GPIO17
    baud_rate: 9600
#    debug:
#      direction: BOTH
    
globals:
  - id: bp_mode
    type: int
    initial_value: '1'
    
sensor:
  - platform: pmsx003
    uart_id: uart_a
    type: PMSX003
    pm_1_0:
      name: "Concentration de particules &lt;1.0µm"
      id: pm1_0
      accuracy_decimals: 0
      filters:
        - sliding_window_moving_average:
            window_size: 15
            send_every: 10
            send_first_at: 1

    pm_2_5:
      name: "Concentration de particules &lt;2.5µm"
      id: pm2_5
      accuracy_decimals: 0
      filters:
        - sliding_window_moving_average:
            window_size: 15
            send_every: 10
            send_first_at: 1

      on_value:
  # de 0 à 7 / 8 leds    
  # Led 0
          - if:
              condition:
                sensor.in_range:
                  id: pm2_5
                  below: 25
              then: 
                - light.addressable_set:
                    id: rgb_led
                    range_from: 0
                    range_to: 0
                    red: 0%
                    green: 100%
                    blue: 0%
                    color_brightness: 100%
                - light.addressable_set:
                    id: rgb_led
                    range_from: 1
                    range_to: 7
                    red: 0%
                    green: 0%
                    blue: 0%
                    color_brightness: 0%  
  # led 1                  
          - if:
              condition:
                sensor.in_range:
                  id: pm2_5
                  above: 25 
                  below: 35 
              then: 
                - light.addressable_set:
                    id: rgb_led
                    range_from: 0
                    range_to: 1
                    red: 0%
                    green: 100%
                    blue: 0%
                    color_brightness: 100%
                - light.addressable_set:
                    id: rgb_led
                    range_from: 2
                    range_to: 7
                    red: 0%
                    green: 0%
                    blue: 0%
                    color_brightness: 0%  
  # Led 2              
          - if:
              condition:
                sensor.in_range:
                  id: pm2_5
                  above: 35
                  below: 45
              then: 
                - light.addressable_set:
                    id: rgb_led
                    range_from: 0
                    range_to: 2
                    red: 0%
                    green: 100%
                    blue: 0%
                    color_brightness: 100%
                - light.addressable_set:
                    id: rgb_led
                    range_from: 3
                    range_to: 7
                    red: 0%
                    green: 0%
                    blue: 0%
                    color_brightness: 0%     
  # led 3                  
          - if:
              condition:
                sensor.in_range:
                  id: pm2_5
                  above: 45
                  below: 55
              then: 
                - light.addressable_set:
                    id: rgb_led
                    range_from: 0
                    range_to: 3
                    red: 75%
                    green: 75%
                    blue: 0%
                    color_brightness: 100%
                - light.addressable_set:
                    id: rgb_led
                    range_from: 4
                    range_to: 7
                    red: 0%
                    green: 0%
                    blue: 0%
                    color_brightness: 0%     
  # led 4
          - if:
              condition:
                sensor.in_range:
                  id: pm2_5
                  above: 55
                  below: 65
              then: 
                - light.addressable_set:
                    id: rgb_led
                    range_from: 0
                    range_to: 4
                    red: 75%
                    green: 75%
                    blue: 0%
                    color_brightness: 100%
                - light.addressable_set:
                    id: rgb_led
                    range_from: 5
                    range_to: 7
                    red: 0%
                    green: 0%
                    blue: 0%
                    color_brightness: 0%  
  # led 5
          - if:
              condition:
                sensor.in_range:
                  id: pm2_5
                  above: 65
                  below: 75
              then: 
                - light.addressable_set:
                    id: rgb_led
                    range_from: 0
                    range_to: 5
                    red: 100%
                    green: 0%
                    blue: 0%
                    color_brightness: 100%
                - light.addressable_set:
                    id: rgb_led
                    range_from: 6
                    range_to: 7
                    red: 0%
                    green: 0%
                    blue: 0%
                    color_brightness: 0%      
  # led 6
          - if:
              condition:
                sensor.in_range:
                  id: pm2_5
                  above: 75
                  below: 85
              then: 
                - light.addressable_set:
                    id: rgb_led
                    range_from: 0
                    range_to: 6
                    red: 100%
                    green: 0%
                    blue: 0%
                    color_brightness: 100%
                - light.addressable_set:
                    id: rgb_led
                    range_from: 7
                    range_to: 7
                    red: 0%
                    green: 0%
                    blue: 0%
                    color_brightness: 0%    
  # Led 7
          - if:
              condition:
                sensor.in_range:
                  id: pm2_5
                  above: 85
              then: 
                - light.addressable_set:
                    id: rgb_led
                    range_from: 0
                    range_to: 7
                    red: 100%
                    green: 0%
                    blue: 0%
                    color_brightness: 100%

    pm_10_0:
      name: "Concentration de particules &lt;10.0µm"
      id: pm10_0
      accuracy_decimals: 0
      filters:
        - sliding_window_moving_average:
            window_size: 15
            send_every: 10
            send_first_at: 1
            
    pm_0_3um:
      name: "Nb de particules &gt;0.3"
      id: pm_03_um
      unit_of_measurement: "ppd" 
      accuracy_decimals: 0

    pm_0_5um:
      name: "Nb de particules &gt;0.5"
      id: pm_05_um
      unit_of_measurement: "ppd" 
      accuracy_decimals: 0

    pm_1_0um:
      name: "Nb de particules &gt;1.0"
      id: pm_10_um
      unit_of_measurement: "ppd" 
      accuracy_decimals: 0

    pm_2_5um:
      name: "Nb de particules &gt;2.5"
      id: pm_25_um
      unit_of_measurement: "ppd" 
      accuracy_decimals: 0

    pm_5_0um:
      name: "Nb de particules &gt;5.0"
      id: pm_50_um
      unit_of_measurement: "ppd" 
      accuracy_decimals: 0

    pm_10_0um:
      name: "Nb de particules &gt;10.0"
      id: pm_100_um
      unit_of_measurement: "ppd"
      accuracy_decimals: 0

      
  - platform: wifi_signal
    name: "${friendly_name} WiFi Signal Sensor"
    update_interval: 60s

  - platform: uptime
    name: "${friendly_name} Uptime Sensor"
    update_interval: 60s
    
  - platform: mhz19
    uart_id: uart_b
    id: mh_z19
    co2:
      name: "MH-Z19 CO2 Value"
      id: co2
      accuracy_decimals: 0
      filters:
        - sliding_window_moving_average:
            window_size: 12 # moyenne sur 12 lecture
            send_every: 6 # envoi toutes les 6 lectures
            send_first_at: 1 # envoi à la premiere lecture
            
    temperature:
      name: "MH-Z19 Temperature"
      id: temp
      filters:
        - sliding_window_moving_average:
            window_size: 24
            send_every: 12
            send_first_at: 1
            
    update_interval: 10s
    automatic_baseline_calibration: false    


# Il s'agit d'un modèle de capteur qui effectue une moyenne mobile de 30 minutes de PM2,5
# il supprime les valeurs aberrantes et de rendre le contrôle plus fluide

  - platform: template
    name: "Concentration de particules &lt;2.5µm median"
    id: pm2_5_median
    icon: mdi:chemical-weapon
    unit_of_measurement: µg/m³
    lambda: |-
      return id(pm2_5).state;
    update_interval: 60s
    filters:
      - median:
          window_size: 30
          send_every: 30
          send_first_at: 15

binary_sensor:
  - platform: gpio
    name: bp_mod
    id: button
    pin:
      number: GPIO14 # GPIO 15TMS
      inverted: true
      mode:
        input: true
        pullup: true
    on_click:
      - min_length: 25ms
        max_length: 500ms
        then:
          - lambda: |-
              if (id(bp_mode) &lt; 3) { id(bp_mode) += 1; }
              else { id(bp_mode) = 1; }
              
  - platform: gpio
    name: bp_mod2
    id: button2
    pin:
      number: GPIO13 # TCK
      inverted: true
      mode:
        input: true
        pullup: true
        
#Etat de la connection
  - platform: status
    name: "${friendly_name} Status"

interval:
  - interval: 60s
    then:
      - switch.turn_on: val_mes
      - delay: 10s
#     - switch.turn_on: val_mes
      - switch.turn_off: val_mes
      - delay: 30s

switch:   
  - platform: gpio
    pin: 
      number: GPIO27 #
    id: val_mes
    name: "${friendly_name} Validation mesure"
    
  - platform: template
    name: "Calibration zero Mh-Z19 CO2"
    turn_on_action:
      - mhz19.calibrate_zero: mh_z19
      - switch.turn_off: co2_cal
    id: co2_cal

  - platform: restart
    name: "${friendly_name} Restart"

# gestion afficheur

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    brightness: 100%
    lambda: |-
      if (id(bp_mode) == 1 )
        {
        it.printf(0,0,id(arial),"PM1.0=%.2f",id(pm1_0).state);
        it.printf(0,15,id(arial),"PM2.5=%.2f",id(pm2_5).state);
        it.printf(0,30,id(arial),"PM10.0=%.2f",id(pm10_0).state);
        it.printf(0,45,id(arial),"CO2=%.0f",id(co2).state);
        }
      else if (id(bp_mode) == 2 )
        {
        it.printf(0,0,id(arial),"0.3UM=%.1f",id(pm_03_um).state);
        it.printf(0,15,id(arial),"0.5UM=%.1f",id(pm_05_um).state);
        it.printf(0,30,id(arial),"1.0UM=%.1f",id(pm_10_um).state);
        it.printf(0,45,id(arial),"2.5UM=%.1f",id(pm_25_um).state);        
        }
      else if (id(bp_mode) == 3 )
        {
        it.printf(0,0,id(arial),"5.0UM=%.1f",id(pm_50_um).state);
        it.printf(0,15,id(arial),"10.0UM=%.1f",id(pm_100_um).state);  
        }

      </code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="493" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-8-1024x493.png" alt="" class="wp-image-2083" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-8-1024x493.png 1024w, https://domo.rem81.com/wp-content/uploads/2022/06/image-8-300x144.png 300w, https://domo.rem81.com/wp-content/uploads/2022/06/image-8-768x370.png 768w, https://domo.rem81.com/wp-content/uploads/2022/06/image-8-1536x739.png 1536w, https://domo.rem81.com/wp-content/uploads/2022/06/image-8.png 1560w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h1 class="wp-block-heading">Affichage Local</h1>



<p>Un exemple minimaliste.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="427" height="632" src="https://domo.rem81.com/wp-content/uploads/2022/06/image-5.png" alt="" class="wp-image-2075" srcset="https://domo.rem81.com/wp-content/uploads/2022/06/image-5.png 427w, https://domo.rem81.com/wp-content/uploads/2022/06/image-5-203x300.png 203w" sizes="(max-width: 427px) 100vw, 427px" /></figure>



<pre class="wp-block-code"><code>type: entities
entities:
  - entity: sensor.concentration_de_particules_1_0um
  - entity: sensor.concentration_de_particules_10_0um
  - entity: sensor.concentration_de_particules_2_5um
  - entity: sensor.concentration_de_particules_2_5um_median
  - entity: sensor.mh_z19_co2_value
  - entity: sensor.mh_z19_temperature
  - entity: sensor.nb_de_particules_0_3
  - entity: sensor.nb_de_particules_0_5
  - entity: sensor.nb_de_particules_1_0
  - entity: sensor.nb_de_particules_10_0
  - entity: sensor.nb_de_particules_2_5
  - entity: sensor.nb_de_particules_5_0
  - entity: binary_sensor.bp_mod
  - entity: binary_sensor.bp_mod2
  - entity: automation.vmc_niv0_automatismes
title: esp138-qualite-air
</code></pre>



<h1 class="wp-block-heading">Conclusion</h1>



<p>Après quelques semaines d&rsquo;expérience, les retours sont positifs, reste à valider la véracité des mesures, mais sans mesure étalon, on ne peut que faire confiance aux constructeurs.</p>



<p>J&rsquo;ai remarqué que de temps en temps, la mesure de CO2 ne varie plus, j&rsquo;active le switch « calibration zero mh-z19 ».</p>



<p>je l&rsquo;utilise pour piloter ma VMC en cas de valeur PM2.5 ou de CO2 trop élévée.</p>
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:83:"https://domo.rem81.com/2022/06/03/ha-mesure-qualite-de-lair-pm1-0-pm2-5-m10-0/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"2";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:4:"href";s:28:"https://domo.rem81.com/feed/";s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:44:"http://purl.org/rss/1.0/modules/syndication/";a:2:{s:12:"updatePeriod";a:1:{i:0;a:5:{s:4:"data";s:9:"
	hourly	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:15:"updateFrequency";a:1:{i:0;a:5:{s:4:"data";s:4:"
	1	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:12:{s:6:"server";s:9:"openresty";s:4:"date";s:29:"Sat, 03 Feb 2024 16:54:02 GMT";s:12:"content-type";s:34:"application/rss+xml; charset=UTF-8";s:14:"content-length";s:5:"57255";s:12:"x-powered-by";s:10:"PHP/8.0.28";s:13:"last-modified";s:29:"Fri, 26 Jan 2024 10:26:27 GMT";s:4:"etag";s:39:""c3b2d72b112adbfb588eb3bd1ad9389d-gzip"";s:4:"link";s:57:"<https://domo.rem81.com/wp-json/>; rel=https://api.w.org/";s:4:"vary";s:15:"Accept-Encoding";s:16:"content-encoding";s:4:"gzip";s:25:"strict-transport-security";s:25:"max-age=63072000; preload";s:11:"x-served-by";s:14:"domo.rem81.com";}s:5:"build";s:14:"20231030185604";s:5:"mtime";i:1706979242;s:3:"md5";s:32:"d6a21b576455c2037a395c3180b02cce";}