# Niveau de puits ou récupérateur d'eau node mcu ESP32-S et HCSR04

**URL:** <https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028>\
**Category:** Entraide Home Assistant\
**Created:** [Octobre 3, 2022, 9:40 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028 "2022-10-03T21:40:05Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 3, 2022, 9:40 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/1 "2022-10-03T21:40:06Z")

</div>

Bonjour,

Je possède un puits et un récupérateur d’eau.

Mon projet est de les équiper de capteurs de niveau d’eau , alimentés par cellule 18650.

Je compte faire un relevé toutes les 6 heures soit 4 par jour.

Donc je compte utiliser le « deep sleep » pour économiser les accus.

Pour l’instant, je fais les tests dans un bocal et les résultats sont bons.

Voici mon code (avec les formules pour le bocal et je n’ai pas intégré le deep sleep pour l’instant) :

```auto
# sensor niveau recuperateur Est trig sur pin33 et echo sur pin32
sensor:
  - platform: ultrasonic
    trigger_pin: A5
    echo_pin: A4
    id: "deltaest"
    name: "Delta"
    unit_of_measurement: "m"
    icon: "mdi:ruler"
    accuracy_decimals: 2
    update_interval: 5s
    pulse_time: 50us
  - platform: template
    name: "Niveau d'eau"
    id: niveaurecupestcm
    unit_of_measurement: 'cm'
    device_class: battery
    accuracy_decimals: 0
    icon: "mdi:waves-arrow-up"
    update_interval: 60s
    lambda: |-
      return (17-(id(deltaest).state *100));
  - platform: template
    name: "Niveau de récuperateur Est"
    id: niveaurecupestpourcent
    unit_of_measurement: '%'
    device_class: battery
    accuracy_decimals: 0
    icon: "mdi:car-coolant-level"
    update_interval: 60s
    lambda: |-
      return ((id(niveaurecupestcm).state /17*100));
  - platform: template
    name: "Litre de récuperateur Est"
    id: litrerecupest
    unit_of_measurement: 'L'
    device_class: battery
    accuracy_decimals: 1
    icon: "mdi:bottle-tonic"
    update_interval: 60s
    lambda: |-
      return (63.58*(id(niveaurecupestcm).state /1000));
  - platform: wifi_signal
    name: "RSSI recuperateur Est"
    id: rssi_recup_est
    unit_of_measurement: 'dB'
    device_class: signal_strength
    accuracy_decimals: 0
    icon: "mdi:bluetooth"
    update_interval: 60s
  - platform: adc
    pin: A7
    id: "VCC"
    internal: true
  - platform: template
    name: "Batterie Recuperateur Est"
    id: batterie_recup_est
    unit_of_measurement: '%'
    device_class: battery
    accuracy_decimals: 0
    icon: "mdi:battery"
    update_interval: 60s
    lambda: |-
      return ((id(VCC).state /0.307) * 100.00);

```

Cela fonctionne très bien sauf que si le node est éteint il met indisponible sur les valeurs.

Voici déjà la première problématique.

Donc comment faire pour qu’il remplace « indisponible » par la dernière valeur reçu ?

Merci de vos réponses.

Ps : demain, j’attaque les tests de batterie.

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 3, 2022, 11:29 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/2 "2022-10-03T23:29:35Z")

</div>

![recupeau](https://forum.hacf.fr/uploads/default/original/3X/9/d/9d41f692b3294b73923b3545817d3e992a62554f.jpeg)

Dans lovelace

---

<div class="post-metadata">

**Author:** ![AlexHass](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alexhass/32/11197_2.png) [@AlexHass](https://forum.hacf.fr/u/AlexHass)\
**Post date:** [Octobre 4, 2022, 6:23 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/3 "2022-10-04T06:23:01Z")

</div>

Salut,

Je crois que l’API de EspHome \<\> HA ne couvre pas deep sleep correctement et qu’il faudrait plutôt passer par MQTT à la place pour utiliser les options de «&nbsp;Retain&nbsp;» et «&nbsp;Last Will&nbsp;».  
Faudrait voir la doc de EspHome pour la gestion de deep sleep, s’il y a une sorte de rétention de données possible.

Autre possibilité, un peu plus bidouille mais qui devrait marcher, créer des sensors template qui prennent le valeur de ceux de ton Esp, si la valeur ne vaut pas Unavailable. Donc qui sont là en intermédiaire pour garder les dernières valeurs correctes connues.

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 4, 2022, 12:02 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/4 "2022-10-04T12:02:20Z")

</div>

Merci AlexHass de ta réponse.

Pour la fonction «&nbsp;deep sleep&nbsp;» j’ai vu que certain l’utilisé pour des projets similaire … je verrais cela en dernier.

Par contre il n’y a pas une fonction qui peut récupérer la dernière valeur (state ou autre…) ?

---

<div class="post-metadata">

**Author:** ![AlexHass](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alexhass/32/11197_2.png) [@AlexHass](https://forum.hacf.fr/u/AlexHass)\
**Post date:** [Octobre 4, 2022, 12:48 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/5 "2022-10-04T12:48:56Z")

</div>

> [@magicmathieu](#):
>
> Pour la fonction « deep sleep » j’ai vu que certain l’utilisé pour des projets similaire … je verrais cela en dernier.

Ah ok quand tu disais que le module est «&nbsp;éteint&nbsp;» dans ton premier message j’avais compris que c’était déjà en sommeil!  
Mais sinon effectivement quand un module ESPHome est éteint, il se met en indisponible et toutes les valeurs sont aussi en indispo… Je pense que ça vient de la même raison, l’API entre ESPHom et HA part du principe qu’un module doit être présent, sinon pas de valeur.

Quand je parlais de garder la dernière valeur, c’était soit en passant par une communication MQTT qui a l’option «&nbsp;retain&nbsp;» qui fait que le broker garde la dernière valeur connue et la republie si besoin dans HA.  
Autre possibilité comme je disais c’est de créer à la main des sensor template en doublons de ceux forunis par ton ESPHome… qui auraient la même valeur que ceux de l’ESP. Mais qui garderaient cette valeur si l’ESP passe en Indisponible.

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 4, 2022, 12:54 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/6 "2022-10-04T12:54:30Z")

</div>

En effet AlexHass, c’est un peu l’idée que j’ai.

J’ai juste besoin de récupérer la dernière valeur de «&nbsp;deltaest&nbsp;»

Le reste n’ai que formule de calcul avec cette valeur.

Je parcours pas mal de doc mais je trouve pas

sais tu quelle plateform je dois utiliser ?

---

<div class="post-metadata">

**Author:** ![AlexHass](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alexhass/32/11197_2.png) [@AlexHass](https://forum.hacf.fr/u/AlexHass)\
**Post date:** [Octobre 4, 2022, 1:33 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/7 "2022-10-04T13:33:37Z")

</div>

Quelque chose comme ça (que je n’ai pas testé 😉 )

```auto
  - platform: template
    sensors:
       deltaest_permanent:
          friendly_name: Delta
          unit_of_measurement: 'm'
          value_template: >
            {% if states('sensor.deltaest') == "unavailable" %}
              {{states('sensor.deltaest_permanent')}}
            {% else %}
              {{states('sensor.deltaest')}}
            {% endif %}

```

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 4, 2022, 2:13 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/8 "2022-10-04T14:13:28Z")

</div>

merci alexhass

j’ai essayé de mettre le code il fait une erreur sur «&nbsp;sensors:&nbsp;»

j’ai déjà au dessus des «&nbsp;- plateform&nbsp;», «&nbsp;sensor:&nbsp;»

j’ai donc enlever «&nbsp;sensors:&nbsp;» et il me fait une erreur sur «&nbsp;deltaest\_permanent:&nbsp;»

j’ai donc créer ce code :

```auto
- platform: template
    name: "Delta est permanent"
    id: delta_estpermanent
    unit_of_measurement: 'm'
    value_template: >
            {% if states('sensor.deltaest') == "unavailable" %}
              {{states('sensor.deltaest_permanent')}}
            {% else %}
              {{states('sensor.deltaest')}}
            {% endif %}

```

sauf que «&nbsp;value\_template:&nbsp;» n’est pas reconnu.

Je suis pas très doué en code et je te remercie de ta patience…

---

<div class="post-metadata">

**Author:** ![AlexHass](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alexhass/32/11197_2.png) [@AlexHass](https://forum.hacf.fr/u/AlexHass)\
**Post date:** [Octobre 4, 2022, 3:08 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/9 "2022-10-04T15:08:53Z")

</div>

C’est du Yaml pour HA que j’ai donné, pas pour ESPHome, on est d’accord? 🙂

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 4, 2022, 3:12 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/10 "2022-10-04T15:12:40Z")

</div>

je travaille dans le module esphome dans le fichier recupest.yaml

Me dit pas que le language est différent du yaml de ha lol

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 4, 2022, 5:05 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/11 "2022-10-04T17:05:03Z")

</div>

Je pense avoir compris ce que tu voulais m’expliquer AlexHass je dois créer un nouveau fichier yaml avec le code dedans ?

Peut-être utiliser un fichier existant …configuration.yaml ?

Désolé de ces question

---

<div class="post-metadata">

**Author:** ![AlexHass](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alexhass/32/11197_2.png) [@AlexHass](https://forum.hacf.fr/u/AlexHass)\
**Post date:** [Octobre 4, 2022, 5:39 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/12 "2022-10-04T17:39:03Z")

</div>

Oui 😉

Alors ce n’est pas forcément un nouveau fichier, mais dans le fichier configuration.yaml  
Tu as peut-être déjà une section «&nbsp;sensor&nbsp;», si non il faut un ajouter une et mettre le code après!

exemple:  
 ![image](https://forum.hacf.fr/uploads/default/original/3X/6/6/66e83c4d4b7fff5b97833dabcc8400a840476c80.png)

Et sinon le code en ESPHome et HA à la même syntaxe de base mais c’est tout de même différent, tous les champs n’existent pas et les logique perso template ne sont pas dans le même langage (ESPHom c’est des lambda en C++ et HA c’est du script Jinja2)  
Par exemple c’est quand j’ai vu ton «&nbsp;id:&nbsp;» que je remarqué que t’avais mis ça dans ESPHome.  
Il n’y a pas d’ID dans HA.

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 4, 2022, 9:16 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/13 "2022-10-04T21:16:51Z")

</div>

cela fonctionne super.

Je suis sur les formule de calcul que j’ajoute à configuration.yaml

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 5, 2022, 2:57 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/14 "2022-10-05T14:57:28Z")

</div>

Le projet avance, actuellement cela fonctionne avec 2 cellules 18650.

voici mon code sous esphome :

```auto
# sensor niveau recuperateur Est trig sur pin33 et echo sur pin32
sensor:
  - platform: ultrasonic
    trigger_pin: A5
    echo_pin: A4
    id: "deltaest"
    name: "Delta Est"
    unit_of_measurement: "m"
    icon: "mdi:ruler"
    accuracy_decimals: 2
    update_interval: 5s
    pulse_time: 50us
  - platform: wifi_signal
    name: "RSSI recuperateur Est"
    id: rssi_recup_est
    unit_of_measurement: 'dB'
    device_class: signal_strength
    accuracy_decimals: 0
    icon: "mdi:bluetooth"
    update_interval: 60s
  - platform: adc
    pin: A7
    id: "VCC"
    internal: true
  - platform: template
    name: "Batterie Recuperateur Est"
    id: batterie_recup_est
    unit_of_measurement: '%'
    device_class: battery
    accuracy_decimals: 0
    icon: "mdi:battery"
    update_interval: 60s
    lambda: |-
      return ((id(VCC).state /0.307) * 100.00);

```

Je dois améliorer le niveau de batterie

et le code actuel dans configuration.yaml

```auto
- platform: template
    sensors:
     niveau_per_recupest:
        friendly_name: niveau permanent Récup Est
        unit_of_measurement: cm
        value_template: '{{ 17 - (states("sensor.deltaest_permanent") | float * 100) | round(0) }}'
  - platform: template
    sensors:
     niveau_per_recupestl:
        friendly_name: niveau permanent Récup Est L
        unit_of_measurement: l
        value_template: '{{ ( 63.58 * (states("sensor.niveau_per_recupest") | float ) / 1000) | round(1) }}'
  - platform: template
    sensors:
     niveau_per_recupestpourcent:
        friendly_name: niveau Récup Est 
        unit_of_measurement: '%'
        value_template: '{{ (states("sensor.niveau_per_recupest") | float / 17 * 100 ) | round(0) }}'

```

quand le capteur est allumé :  
 ![recupmarche](https://forum.hacf.fr/uploads/default/original/3X/5/3/531ca8ca12eaf6ba0bf4070620ff986f62440d93.jpeg)

quand le capteur est éteint :  
 ![recupindis](https://forum.hacf.fr/uploads/default/original/3X/0/8/0893d8bf3c5d2be937a090f69d7ae580d4456a66.jpeg)

je vais me pencher maintenant sur le «&nbsp;deep sleep&nbsp;»  
peut être rajouter une date et heure du dernier relevé

---

<div class="post-metadata">

**Author:** ![roumano](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@roumano](https://forum.hacf.fr/u/roumano)\
**Post date:** [Octobre 7, 2022, 7:55 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/15 "2022-10-07T07:55:33Z")

</div>

Il faut aussi que je fasse ce type de capteur,  
tu est parti sur un `JSN-SR04T`, c’est bien ça ?

si oui, as-tu des relever fausse (comme la messure du fond de la cuve au lieu du niveau d’eau ? )

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 7, 2022, 10:27 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/16 "2022-10-07T10:27:50Z")

</div>

J’ai fait avec un HCSR04 j’ai l’impression que c’est à peu prêt la même chose.

Le date du dernier relevé tu peux l’avoir dans lovelace.

Je suis tjrs dans mon bocal.

Pour l’instant pas d’erreur.

J’ai modélisé la box hier, l’impression est bientot fini.

Je place mes éléments cet apres midi. et je fais le couvercle.

Normalement à la fin du week end c’est en place.

---

<div class="post-metadata">

**Author:** ![roumano](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/r/f14d63/32.png) [@roumano](https://forum.hacf.fr/u/roumano)\
**Post date:** [Octobre 7, 2022, 10:46 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/17 "2022-10-07T10:46:18Z")

</div>

> [@roumano](#):
>
> JSN-SR04T

niceau mesure le JSN-SR04T est la meme que le HCSR04, par contre le HCSR04 n’est pas waterproof, donc j’ai un peut peur de sa durée de vie dans un puits ou récupérateur d’eau, ou je me trompe ?

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 7, 2022, 10:50 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/18 "2022-10-07T10:50:27Z")

</div>

tu as certainement raison avec la condensation dans un récupérateur d’eau…

Je verrais à l’usage.

Ce qui m’inquiète le plus c’est la durée de mes accus. je vais bien voir à l’usage avec le deepsleep.

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 7, 2022, 1:34 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/19 "2022-10-07T13:34:53Z")

</div>

voici la box du boîtier. il me reste à faire le top

 ![boxniveaueau](https://forum.hacf.fr/uploads/default/original/3X/3/2/32d9e93bf4160ce51e06b543d6403c64fc584a1f.jpeg)

---

<div class="post-metadata">

**Author:** ![magicmathieu](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/m/3d9bf3/32.png) [@magicmathieu](https://forum.hacf.fr/u/magicmathieu)\
**Post date:** [Octobre 9, 2022, 3:10 UTC](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028/20 "2022-10-09T15:10:43Z")

</div>

et voici le projet fini

 ![boitierniveaueaufini](https://forum.hacf.fr/uploads/default/original/3X/a/7/a72f714ec8189ef4ca84bae85a4daddb669b49ae.jpeg)  
 ![interfacepuit](https://forum.hacf.fr/uploads/default/original/3X/9/f/9f8fbb6cb7d86cebf7d77d9073ddba9c04f42872.jpeg)  
 ![jaugepuit](https://forum.hacf.fr/uploads/default/original/3X/8/8/8873d2f285e8412b274968d2aa9b56e6c8f36c3b.jpeg)

[Page suivante](https://forum.hacf.fr/t/niveau-de-puits-ou-recuperateur-deau-node-mcu-esp32-s-et-hcsr04/16028.md?page=2)
