{"id":401,"date":"2021-05-11T11:26:21","date_gmt":"2021-05-11T09:26:21","guid":{"rendered":"https:\/\/domo.rem81.com\/?p=401"},"modified":"2025-05-19T15:42:31","modified_gmt":"2025-05-19T13:42:31","slug":"home-assistant-gestion-piscine-4_mesure-ph","status":"publish","type":"post","link":"https:\/\/domo.rem81.com\/index.php\/2021\/05\/11\/home-assistant-gestion-piscine-4_mesure-ph\/","title":{"rendered":"HA-Mesure du Ph d&rsquo;une piscine"},"content":{"rendered":"\n\n\n\n<h1 class=\"wp-block-heading\">Intro<\/h1>\n\n\n\n<p>Les possesseurs de piscine le savent, le pH est une composante importante dans le traitement des eaux de piscine. Un mauvais pH rendra tr\u00e8s difficile voir impossible le traitement de l&rsquo;eau. Personnellement, je cible une valeur de Ph \u00e0 7.3 .<\/p>\n\n\n\n<p>Dans le commerce vous trouvez beaucoup de r\u00e9gulateurs de pH, malheureusement \u00e0 des prix trop \u00e9lev\u00e9s \u00e0 mon gout.<\/p>\n\n\n\n<p>J&rsquo;ai d\u00e9couvert les modules EZO fabriqu\u00e9s par <strong>AtlasScientific<\/strong> au hasard du net, mais la toute r\u00e9cente int\u00e9gration du module EZO dans EspHome m&rsquo;a confort\u00e9 dans ce choix.<\/p>\n\n\n\n<p>Je commande les modules EZO chez  <a href=\"https:\/\/atlas-scientific.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/atlas-scientific.com\/<\/a><a href=\"https:\/\/www.whiteboxes.ch\/\" target=\"_blank\" rel=\"noreferrer noopener\"> <\/a>. leur boutique est bien organis\u00e9e, vous y retrouvez bon nombre de produits ainsi que la documentation tr\u00e8s fournie associ\u00e9e.<\/p>\n\n\n\n<p>Vous y trouvez notamment des modules et sondes de mesure de conductivit\u00e9, ORP, oxyg\u00e8ne dissoute, temp\u00e9rature, mesure de gaz O\u00b2 et CO\u00b2, de couleur, humidit\u00e9, pression, ainsi que divers accessoires. <\/p>\n\n\n\n<p>Nota: dans un premier temps, je ne traite dans cet article que la mesure de pH, la r\u00e9gulation avec des pompes p\u00e9ristaltiques fera l&rsquo;objet d&rsquo;une mise \u00e0 jour.  <\/p>\n\n\n\n<h1 class=\"wp-block-heading\">La partie mat\u00e9rielle<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Liste des courses<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un module mesure de ph <a href=\"https:\/\/atlas-scientific.com\/embedded-solutions\/ezo-ph-circuit\/\" target=\"_blank\" rel=\"noreferrer noopener\">EZO<\/a><\/li>\n\n\n\n<li>Une sonde pH <a href=\"https:\/\/atlas-scientific.com\/probes\/consumer-grade-ph-probe\/\" target=\"_blank\" rel=\"noreferrer noopener\">EZO<\/a>. J&rsquo;utilise celle ci mais il existe des mod\u00e8les compatibles industriels beaucoup plus chers et des mod\u00e8les chinois beaucoup moins chers, c&rsquo;est selon l&rsquo;importance et le budget que vous accorderez \u00e0 la fiabilit\u00e9 et la p\u00e9rennit\u00e9 de la mesure.<\/li>\n\n\n\n<li>Un module d&rsquo;isolation galvanique <a href=\"https:\/\/atlas-scientific.com\/carrier-boards\/electrically-isolated-ezo-carrier-board-gen-2\/\" data-type=\"URL\" data-id=\"https:\/\/atlas-scientific.com\/carrier-boards\/electrically-isolated-ezo-carrier-board-gen-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">EZO<\/a>. <\/li>\n\n\n\n<li>Un afficheur local 2 lignes de 16 caract\u00e8res . Vous en trouvez \u00e0 foison sur le net, c&rsquo;est pratique de le choisir avec une puce compatible <a href=\"https:\/\/www.esphome.io\/components\/display\/lcd_display.html\">ESPHome<\/a>.<\/li>\n\n\n\n<li>Un ESP32. J&rsquo;ai choisi ce mod\u00e8le car je pense lui confier \u00e0 terme d&rsquo;autres fonctionnalit\u00e9s d\u00e9di\u00e9es \u00e0 la piscine, cependant un esp8266 D1 ferait tr\u00e8s bien l&rsquo;affaire.<\/li>\n\n\n\n<li>Une alimentation <a href=\"https:\/\/fr.aliexpress.com\/item\/32408565688.html?spm=a2g0o.productlist.0.0.744e5d09Ab1ESz&amp;algo_pvid=c4cb2209-427b-4bd8-ab68-46b926703759&amp;algo_expid=c4cb2209-427b-4bd8-ab68-46b926703759-1&amp;btsid=2100bdd016164980212357324eef8c&amp;ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_\">220VCA-5VCC<\/a> courant continu.<\/li>\n\n\n\n<li>Quelques connecteurs et cordons JST pr\u00e9cabl\u00e9s.<\/li>\n\n\n\n<li>Divers composants et accessoires<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Sch\u00e9ma \u00e9lectronique<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"984\" height=\"548\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2023\/07\/image-1.png\" alt=\"\" class=\"wp-image-2752\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2023\/07\/image-1.png 984w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2023\/07\/image-1-300x167.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2023\/07\/image-1-768x428.png 768w\" sizes=\"auto, (max-width: 984px) 100vw, 984px\" \/><\/figure>\n\n\n\n<p>Quelques explications sur le sch\u00e9ma:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Bus I\u00b2C (pin 21,22) a quatre connecteurs: 1 pour l&rsquo;afficheur, 1 pour le module EZO, 2 pour de futures pompes p\u00e9ristaltiques (injection pH+ et pH-).<\/li>\n\n\n\n<li>Bus UART (pin 18,19): R\u00e9serve si besoin de brancher un UART<\/li>\n\n\n\n<li>Entr\u00e9es digitales (pin 16,17): Si besoin d&rsquo;une action rapide en local (Bouton poussoir Marche arr\u00eat pompe par exemple)<\/li>\n\n\n\n<li>Entr\u00e9e analogique (pin 3): Mesure de pression du filtre \u00e0 sable<\/li>\n\n\n\n<li>Entr\u00e9e analogique (pin 4): Mesure de pression refoulement (A venir)<\/li>\n\n\n\n<li>BP RAZ (Pin 2): Acc\u00e8s au \u00ab\u00a0reboot\u00a0\u00bb de l&rsquo;ESP en local.<\/li>\n<\/ul>\n\n\n\n<p>Vous constaterez l&rsquo;anticipation de quelques fonctionnalit\u00e9s compl\u00e9mentaires qui feront l&rsquo;objet d&rsquo;articles sp\u00e9cifiques.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Circuit imprim\u00e9 r\u00e9alis\u00e9 avec Eagle<\/strong><\/h2>\n\n\n\n<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\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"297\" height=\"381\" data-id=\"460\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/image-13-1.png\" alt=\"\" class=\"wp-image-460\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/image-13-1.png 297w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/image-13-1-234x300.png 234w\" sizes=\"auto, (max-width: 297px) 100vw, 297px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"560\" data-id=\"457\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/image-12.png\" alt=\"\" class=\"wp-image-457\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/image-12.png 440w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/image-12-236x300.png 236w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>J&rsquo;\u00e9vite si possible la fabrication de circuit double face, d&rsquo;o\u00f9 l&rsquo;utilisation de quelques straps (en rouge) me permettant de m&rsquo;en sortir avec un CI simple face.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">La partie logicielle<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Module EZO<\/h2>\n\n\n\n<p>Le module de mesure EZO peux communiquer selon deux protocoles: I\u00b2C ou UART. Seul le protocole I\u00b2C est disponible dans <a href=\"https:\/\/www.esphome.io\/components\/sensor\/ezo.html\">ESPHome<\/a> . Par d\u00e9faut le module est configur\u00e9 d&rsquo;usine en UART, il faut donc le basculer en I\u00b2C. C&rsquo;est tr\u00e8s simple et bien expliqu\u00e9 dans la <a href=\"https:\/\/www.atlas-scientific.com\/files\/pH_EZO_Datasheet.pdf\">documentation du module<\/a>.<\/p>\n\n\n\n<p>Deux solutions pour le changement de protocole, par logiciel ou par c\u00e2blage, c&rsquo;est celle que je pr\u00e9f\u00e8re, car plus rapide \u00e0 mettre en \u0153uvre:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Connecter TX et PGND<\/li>\n\n\n\n<li>Veiller \u00e0 ce que RX soit d\u00e9connect\u00e9<\/li>\n\n\n\n<li>Alimenter en 0-5v via GND et VCC<\/li>\n\n\n\n<li>La led passe en bleue, c&rsquo;est OK, vous \u00eates en I\u00b2C. A noter que la manipulation est identique pour le re basculer en UART.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"673\" height=\"223\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/image-3-1.png\" alt=\"\" class=\"wp-image-413\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/image-3-1.png 673w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/image-3-1-300x99.png 300w\" sizes=\"auto, (max-width: 673px) 100vw, 673px\" \/><\/figure>\n\n\n\n<p>Pour information, La led du module est verte en UART et bleue en I\u00b2C.<\/p>\n\n\n\n<p>La solution logiciel n\u00e9cessite un montage sur le port s\u00e9rie avec par exemple un Arduino et l&rsquo;utilisation du code fourni par EZO.<\/p>\n\n\n\n<p>L&rsquo;isolateur galvanique ne n\u00e9cessite pas d&rsquo;intervention.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ESP Home<\/h2>\n\n\n\n<p>Rien de particulier, vous y retrouvez les d\u00e9clarations standards ESPHome, la d\u00e9claration EZO ainsi que celle de l&rsquo;afficheur. A noter la d\u00e9claration du bus I\u00b2C sur les GPIO sp\u00e9cifiques \u00e0 l&rsquo;esp32, celle de l&rsquo;esp8266 sont diff\u00e9rentes (GPIO5-&gt;scl, GPIO4-&gt;sda). L&rsquo;option \u00ab\u00a0scan: true\u00a0\u00bb autorise l&rsquo;ESP \u00e0 scanner les esclaves i\u00b2C,  pratique pour v\u00e9rifier dans le log si l&rsquo;ESP reconnait le module EZO et l&rsquo;afficheur. L&rsquo;adresse I\u00b2C de l&rsquo;EZO et de l&rsquo;afficheur sont diff\u00e9rentes donc pas de souci de compatibilit\u00e9.<\/p>\n\n\n\n<p>Si besoin de pr\u00e9cisions sur le flashage de l&rsquo;ESP, se reporter \u00e0 mon article \u00ab\u00a0Home Assistant-ESP HOME\u00a0\u00bb.<\/p>\n\n\n\n<p>Vous y trouverez \u00e9galement le code du capteur d&rsquo;ORP et de la mesure de pression du filtre \u00e0 sable.<\/p>\n\n\n\n<p>Voici un aper\u00e7u de la configuration que j\u2019ai utilis\u00e9e. Elle est optimis\u00e9e pour mon r\u00e9seau local et mes besoins sp\u00e9cifiques.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Substitutions<\/h5>\n\n\n\n<p>Pour rendre le code plus lisible et r\u00e9utilisable, j\u2019ai d\u00e9fini quelques variables :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>device_name : esp125-piscine<\/li>\n\n\n\n<li>friendly_name : esp125<\/li>\n\n\n\n<li>adress_ip : 192.168.0.125<\/li>\n\n\n\n<li>time_timezone : Europe\/Paris<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">Base de l\u2019ESP32<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>esphome:\n  name: ${device_name}\n  platform: ESP32\n  board: lolin_d32<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Connexion WiFi<\/h5>\n\n\n\n<p>J\u2019ai configur\u00e9 plusieurs r\u00e9seaux WiFi avec des priorit\u00e9s pour garantir une connexion stable :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wifi:\n  networks:\n    - ssid: !secret wifi_mi4\n      password: !secret mdpwifi_mi4\n      priority: 2    \n    - ssid: !secret wifi_esp\n      password: !secret mdpwifi_esp\n      priority: 1\n    - ssid: !secret wifi\n      password: !secret mdpwifi\n      priority: 0\n  reboot_timeout: 5min\n  manual_ip:\n    static_ip: ${adress_ip}\n    gateway: 192.168.0.254\n    subnet: 255.255.255.0<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Capteurs<\/h5>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>pH<\/strong> : Calibr\u00e9 le 6 juillet 2022 avec une moyenne glissante sur 15 minutes<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>sensor:\n  - platform: ezo\n    id: esp125_ph_ezo\n    name: ph_ezo\n    address: 99\n    unit_of_measurement: \"pH\"\n    update_interval: 60s\n    filters:\n      - calibrate_linear:\n          - 4.44 -&gt; 4.0\n          - 7.17 -&gt; 6.86\n          - 9.41 -&gt; 9.18\n      - sliding_window_moving_average:\n          window_size: 15\n          send_every: 5<\/code><\/pre>\n\n\n\n<p><strong>ORP<\/strong> : \u00c9galement calibr\u00e9 le 6 juillet 2022.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  - platform: ezo\n    id: esp125_orp_ezo\n    name: orp_ezo\n    address: 98\n    unit_of_measurement: \"mV\"\n    update_interval: 60s\n    filters:\n      - calibrate_linear:\n          - 0 -&gt; 0\n          - 216.9 -&gt; 256\n      - sliding_window_moving_average:\n          window_size: 15\n          send_every: 5<\/code><\/pre>\n\n\n\n<p><strong>Pression du filtre<\/strong> : Connect\u00e9 \u00e0 une entr\u00e9e analogique avec une att\u00e9nuation de 11 dB<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  - platform: adc\n    pin: A0\n    id: esp125_pression_filtre\n    name: \"Pression filtre\"\n    unit_of_measurement: \"Bars\"\n    update_interval: 60s\n    filters:\n      - calibrate_linear:\n          - 0.58 -&gt; 0.0\n          - 0.82 -&gt; 0.8\n      - sliding_window_moving_average:\n          window_size: 30\n          send_every: 1<\/code><\/pre>\n\n\n\n<p><strong>Temp\u00e9rature de l\u2019eau<\/strong> : R\u00e9cup\u00e9r\u00e9e depuis Home Assistant.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  - platform: homeassistant\n    name: \"T\u00b0 Eau Piscine\"\n    id: temp_piscine\n    entity_id: sensor.temp_piscine<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Affichage LCD<\/h5>\n\n\n\n<p>Pour visualiser les donn\u00e9es directement sur le dispositif, j\u2019ai ajout\u00e9 un \u00e9cran LCD 16&#215;2 :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>display:\n  - platform: lcd_pcf8574\n    dimensions: 16x2\n    address: 0x27\n    update_interval: 5s\n    lambda: |-\n      it.printf(0,0,\"Ph=%.2f\",id(esp125_ph_ezo).state);\n      it.printf(0,1,\"Or=%.2f\",id(esp125_orp_ezo).state);\n      it.printf(8,0,\"P=%.3f\",id(esp125_pression_filtre).state);\n      it.printf(8,1,\"T=%.1f\",id(temp_piscine).state);<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Fonctionnalit\u00e9s suppl\u00e9mentaires<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Statut de connexion<\/strong> : Un binary_sensor indique si l\u2019appareil est en ligne.<\/li>\n\n\n\n<li><strong>Red\u00e9marrage \u00e0 distance<\/strong> : Une commande switch pour red\u00e9marrer l\u2019ESP32 depuis Home Assistant.<\/li>\n\n\n\n<li><strong>Logs et API<\/strong> : Activ\u00e9s pour le d\u00e9bogage et l\u2019int\u00e9gration avec Home Assistant.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Code complet<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>substitutions:\n  device_name: esp125-piscine\n  friendly_name: esp125\n  adress_ip: \"192.168.0.125\"\n  time_timezone: \"Europe\/Paris\"\n  \nesphome:\n  name: ${device_name}\n  platform: ESP32\n  board: lolin_d32\n\nwifi:\n  networks:\n    - ssid: !secret wifi_mi4\n      password: !secret mdpwifi_mi4\n      priority: 2    \n    - ssid: !secret wifi_esp\n      password: !secret mdpwifi_esp\n      priority: 1\n    - ssid: !secret wifi\n      password: !secret mdpwifi\n      priority: 0\n  reboot_timeout: 5min\n\n  manual_ip:\n    static_ip: ${adress_ip}\n    gateway: 192.168.0.254\n    subnet: 255.255.255.0\n\n\n# Enable logging\nlogger:\n\n# Enable Home Assistant API\napi:\n\nota:\n\nweb_server:\n  port: 80\n\n\n# Example configuration entry for ESP32\ni2c:\n  sda: 21\n  scl: 22\n  scan: true\n  id: bus_a\n  \n#Etat de la connection\nbinary_sensor:\n  - platform: status\n    name: \"${friendly_name}_Status\"\n\nsensor:\n\n# Mesure du pH\n  - platform: ezo\n    id: esp125_ph_ezo\n    name: ph_ezo\n    address: 99\n    unit_of_measurement: \"pH\"\n    accuracy_decimals: 2\n    update_interval: 60s\n  #  moyenne sur 15 mn-affichage toutes les 5mn\n  # Etalonn\u00e9 le 6 juillet 2022\n    filters:\n      - calibrate_linear:\n        - 4.44 -&gt; 4.0\n        - 7.17 -&gt; 6.86\n        - 9.41 -&gt; 9.18\n      - sliding_window_moving_average:\n          window_size: 15\n          send_every: 5\n          send_first_at: 1\n\n\n# Mesure de l'ORP\n# Etalonn\u00e9 le 6 juillet 2022\n  - platform: ezo\n    id: esp125_orp_ezo\n    name: orp_ezo\n    address: 98\n    unit_of_measurement: \"mV\"\n    accuracy_decimals: 1\n    update_interval: 60s\n    filters:\n#      - multiply: 10\n      - calibrate_linear:\n          - 0 -&gt; 0\n          - 216.9 -&gt; 256\n# moyenne sur 15 mn-affichage toutes les 5mn\n      - sliding_window_moving_average:\n          window_size: 15\n          send_every: 5\n          send_first_at: 1\n\n# Mesure de la pression filtre\n  - platform: adc\n    pin: A0\n    id: esp125_pression_filtre\n    name: \"Pression filtre\"\n    unit_of_measurement: \"Bars\"\n    update_interval: 60s\n    filters:\n      - calibrate_linear:\n        - 0.58 -&gt; 0.0\n        - 0.82 -&gt; 0.8\n# moyenne sur 30 mn + affichage toutes les mn\n      - sliding_window_moving_average:\n          window_size: 30\n          send_every: 1\n# Avec le 30PSI\n#    filters:\n#      - calibrate_linear:\n#        - 0.5 -&gt; 0.0\n#\"\"        - 2.21 -&gt; 0.8\n# moyenne sur 30 mn + affichage toutes les mn\n#      - sliding_window_moving_average:\n#          window_size: 30\n#          send_every: 1\n\n\n  - platform: wifi_signal\n    name: \"${friendly_name} WiFi Signal Sensor\"\n    update_interval: 60s\n\n  - platform: homeassistant\n    name: \"T\u00b0 Eau Piscine\"\n    id: temp_piscine\n    entity_id: sensor.temp_piscine\n\n\n# gestion afficheur\ndisplay:\n  - platform: lcd_pcf8574\n    dimensions: 16x2\n    address: 0x27\n    update_interval: 5s\n    lambda: |-\n      it.printf(0,0,\"Ph=%.2f\",id(esp125_ph_ezo).state);\n      it.printf(0,1,\"Or=%.2f\",id(esp125_orp_ezo).state);\n      it.printf(8,0,\"P=%.3f\",id(esp125_pression_filtre).state);\n      it.printf(8,1,\"T=%.1f\",id(temp_piscine).state);\n\n\nswitch:    \n  - platform: restart\n    name: \"${friendly_name}_Restart\"\n    \n\ntext_sensor:\n  # IP address #\n  - platform: wifi_info\n    ip_address:\n      name: \"${friendly_name} IP address\"\n      icon: \"mdi:network-outline\"\n    ssid:\n      name: \"${friendly_name} Connected SSID\"\n    bssid:\n      name: \"${friendly_name} Connected BSSID\"\n  - platform: version\n    id: text_sensor_version\n    name: \"${friendly_name} ESPHome Version\"\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Affichage local<\/h3>\n\n\n\n<p>Une fois l&rsquo;ESP flash\u00e9, aliment\u00e9 et connecte, vous retrouvez dans HA la mesure de ph et l&rsquo;affichage en local.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/10\/IMG_20211004_171904-scaled-1-1-1024x1024.jpg\" alt=\"\" class=\"wp-image-521\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/10\/IMG_20211004_171904-scaled-1-1-1024x1024.jpg 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/10\/IMG_20211004_171904-scaled-1-1-300x300.jpg 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/10\/IMG_20211004_171904-scaled-1-1-150x150.jpg 150w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/10\/IMG_20211004_171904-scaled-1-1-768x768.jpg 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/10\/IMG_20211004_171904-scaled-1-1-1536x1536.jpg 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/10\/IMG_20211004_171904-scaled-1-1-2048x2048.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Vous pouvez aussi v\u00e9rifier son fonctionnement dans la page WEB de l&rsquo;ESP.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"268\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2024\/05\/image-1024x268.png\" alt=\"\" class=\"wp-image-3192\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2024\/05\/image-1024x268.png 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2024\/05\/image-300x78.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2024\/05\/image-768x201.png 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2024\/05\/image-1536x402.png 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2024\/05\/image.png 1556w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Mise en oeuvre<\/h1>\n\n\n\n<p>Pour la mise en oeuvre, J&rsquo;utilise une <strong>chambre de mesure<\/strong> qui permet de positionner deux sondes et deux injecteurs dans le circuit hydraulique, plus un d\u00e9bitm\u00e8tre. Ne pas oublier les vannes de s\u00e9paration avant et apr\u00e8s ce qui \u00e9vite d&rsquo;avoir \u00e0 vidanger pour intervenir sur les sondes. Dans mon cas j&rsquo;ai positionner la sonde pt100 de mesure de temp\u00e9rature sur le deuxi\u00e8me emplacement. L&rsquo;injecteur est en attente de la pompe de r\u00e9gulation de pH.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/IMG_20210516_145106-scaled-1-1-1024x1024.jpg\" alt=\"\" class=\"wp-image-449\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/IMG_20210516_145106-scaled-1-1-1024x1024.jpg 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/IMG_20210516_145106-scaled-1-1-300x300.jpg 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/IMG_20210516_145106-scaled-1-1-150x150.jpg 150w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/IMG_20210516_145106-scaled-1-1-768x768.jpg 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/IMG_20210516_145106-scaled-1-1-1536x1536.jpg 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/05\/IMG_20210516_145106-scaled-1-1-2048x2048.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Affichage HA<\/h2>\n\n\n\n<p>Se reporter \u00e0 l&rsquo;article sur <a rel=\"noreferrer noopener\" href=\"https:\/\/domo.rem81.com\/home-assistant-gestion-piscine-filtration\/\" data-type=\"URL\" data-id=\"https:\/\/domo.rem81.com\/home-assistant-gestion-piscine-filtration\/\" target=\"_blank\">la filtration<\/a> pour plus de d\u00e9tail sur les cartes et les codes associ\u00e9s.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"435\" height=\"587\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-13-1.png\" alt=\"\" class=\"wp-image-1355\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-13-1.png 435w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-13-1-222x300.png 222w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Calibration du module EZO<\/h1>\n\n\n\n<p>La calibration est \u00e0 faire au moins une fois dans l&rsquo;ann\u00e9e. J&rsquo;utilise de temps en temps les bonnes veilles languettes de r\u00e9actifs afin de v\u00e9rifier si la mesure de pH est fiable. <\/p>\n\n\n\n<p>Le principe est de mesurer le Ph dans 3 solutions \u00e9talons, relever les valeurs brutes lues par le module EZO, configurer la mise \u00e0 l&rsquo;\u00e9chelle lineaire dans le programme ESP.<\/p>\n\n\n\n<p>Pr\u00e9parer 3 solutions de pH \u00e9talon dans 250 ml d&rsquo;eau distill\u00e9e: (j&rsquo;utilise des solutions \u00e9talon command\u00e9es en quantit\u00e9 chez <a href=\"https:\/\/fr.aliexpress.com\/item\/1005001642385297.html?spm=a2g0o.productlist.0.0.ae9e503d5XJPnk&amp;algo_pvid=7bedf631-53b0-4584-be44-456266653dab&amp;algo_expid=7bedf631-53b0-4584-be44-456266653dab-0&amp;btsid=0b0a187916206702851003232e0031&amp;ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_\">aliexpress<\/a>)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Basse: 4.00<\/li>\n\n\n\n<li>Milieu: 6.86<\/li>\n\n\n\n<li>Haute: 9.18<\/li>\n<\/ul>\n\n\n\n<p>Modifier le programme ESP en supprimant les eventuelles calibrations pr\u00e9c\u00e9dentes (calibrate_filter) et l'\u00a0\u00bbupdate_interval\u00a0\u00bb \u00e0 1s et t\u00e9l\u00e9charger le dans l&rsquo;ESP<\/p>\n\n\n\n<p>D\u00e9poser votre sonde, rincez la dans de l&rsquo;eau distill\u00e9e, et plonger l\u00e0 dans la solution 4.00.<\/p>\n\n\n\n<p>Attendez 4\/5 mn le temps que la mesure se stabilise.<\/p>\n\n\n\n<p>Notez la valeur lue par l&rsquo;ESP.<\/p>\n\n\n\n<p>Rincez la sonde \u00e0 l&rsquo;eau distill\u00e9e.<\/p>\n\n\n\n<p>Recommencez l&rsquo;op\u00e9ration pour les solutions 6.86 et 9.18<\/p>\n\n\n\n<p>Une fois les trois valeurs relev\u00e9es, programmer votre ESP en ins\u00e9rant \u00ab\u00a0calibrate_filter\u00a0\u00bb:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    filters:\n      - calibrate_linear:\n        - 4.44 -&gt; 4.0\n        - 7.17 -&gt; 6.86\n        - 9.41 -&gt; 9.18<\/code><\/pre>\n\n\n\n<p>Les valeurs de gauche son celles que vous avez relev\u00e9s, celle de droite les valeurs de vos solutions \u00e9talons.<\/p>\n\n\n\n<p>Remettre Mettre \u00e0 jour l'\u00a0\u00bbupdate_interval\u00a0\u00bb \u00e0 60s<\/p>\n\n\n\n<p>T\u00e9l\u00e9charger dans l&rsquo;ESP.<\/p>\n\n\n\n<p>C&rsquo;est terminer, votre mesure de pH est \u00e9talonn\u00e9e.<\/p>\n\n\n\n<p>Not\u00e9e la date d&rsquo;\u00e9talonnage dans votre programme ESP, c&rsquo;est plus simple \u00e0 retrouver.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p>Pour quelques dizaines d&rsquo;euro, un peu de bricolage, vous pouvez vous fabriquer un pH-m\u00e8tre, de bonne qualit\u00e9, \u00e9volutif  et parfaitement int\u00e9gr\u00e9 dans HA.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Liste des publications en lien avec cet article:<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Filtration avec <a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/21\/ha-gestion-complete-dune-piscine-avec-esp32-et-esphome\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/21\/ha-gestion-complete-dune-piscine-avec-esp32-et-esphome\/\" target=\"_blank\" rel=\"noreferrer noopener\">ESPHome et ESP32<\/a><\/li>\n\n\n\n<li>Filtration avec \u00ab\u00a0<a href=\"https:\/\/domo.rem81.com\/index.php\/2022\/02\/02\/ha-gestion-piscine-1-filtration-avec-appdaemon-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">AppDaemon\u00a0\u00bb<\/a><\/li>\n\n\n\n<li>Filtration avec \u00ab\u00a0<a href=\"https:\/\/domo.rem81.com\/index.php\/2021\/01\/20\/home-assistant-gestion-piscine-filtration-poolpump\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pool Pump Manager<\/a>\u00ab\u00a0<\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2021\/02\/24\/home-assistant-gestion-piscine-2_mesure-de-puissance-electrique\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mesure de puissance \u00e9lectrique<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2021\/04\/02\/home-assistant-gestion-piscine-1_mise-a-niveau-automatique\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mise \u00e0 niveau automatique<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2021\/05\/11\/home-assistant-gestion-piscine-4_mesure-ph\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mesure du pH<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2021\/08\/14\/ha-gestion-piscine-5_regulation-du-ph\/\" target=\"_blank\" rel=\"noreferrer noopener\">R\u00e9gulation du Ph<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2021\/11\/30\/ha-gestion-piscine-6_mode-hors-gel\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mise Hors Gel<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2022\/05\/13\/ha-gestion-piscine-7_mesure-de-pression\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mesure de pression<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/04\/04\/ha-mesurer-la-consommation-deau-de-ma-piscine-avec-un-esp8266-et-esphome\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/04\/04\/ha-mesurer-la-consommation-deau-de-ma-piscine-avec-un-esp8266-et-esphome\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mesure consommation d&rsquo;eau<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/04\/11\/ha-panneau-de-commande-pour-piscine-avec-un-esp32-openhasp-et-home-assistant\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/04\/11\/ha-panneau-de-commande-pour-piscine-avec-un-esp32-openhasp-et-home-assistant\/\" target=\"_blank\" rel=\"noreferrer noopener\">Panneau de contr\u00f4le avec un ESP32<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/04\/13\/ha-analyse-de-leau-de-piscine-avec-le-poollab-2-0-et-integration-dans-home-assistant\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/04\/13\/ha-analyse-de-leau-de-piscine-avec-le-poollab-2-0-et-integration-dans-home-assistant\/\" target=\"_blank\" rel=\"noreferrer noopener\">Analyse de l&rsquo;eau avec PoolLAB2.0<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Intro Les possesseurs de piscine le savent, le pH est une composante importante dans le traitement des eaux de piscine. Un mauvais pH rendra tr\u00e8s difficile voir impossible le traitement &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[13,15,17,33],"class_list":["post-401","post","type-post","status-publish","format-standard","hentry","category-homeassistant","tag-eagle","tag-esp32","tag-esphome","tag-piscine"],"_links":{"self":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/comments?post=401"}],"version-history":[{"count":16,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/401\/revisions"}],"predecessor-version":[{"id":3970,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/401\/revisions\/3970"}],"wp:attachment":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/media?parent=401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/categories?post=401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/tags?post=401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}