# ? ! Besoin d'aide formule - affichage - mesure ?!

**URL:** <https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347>\
**Category:** Entraide Home Assistant\
**Created:** [Mars 27, 2022, 9:38 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347 "2022-03-27T09:38:01Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Shadow](https://forum.hacf.fr/user_avatar/forum.hacf.fr/shadow/32/4479_2.png) [@Shadow](https://forum.hacf.fr/u/Shadow)\
**Post date:** [Mars 27, 2022, 9:38 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/1 "2022-03-27T09:38:02Z")

</div>

Salut,

Alors desolé pour le titre qui veut rien dire mais je sais pas trop comment on nomme ce que je veut faire!

Donc j’ai un ESP avec capteur ultrasonique et capteur de température pour mesurer mon étang. Tout cela dans une boite étanche, je peut de cette manière mesurer le niveau d’eau.

![image](https://forum.hacf.fr/uploads/default/original/2X/0/0d8392bd0374441349a66398d50deee713da2f57.png)

Je vaut l’utiliser finalement pour tenir le niveau d’eau avec un vanne Woox en Zigbee. jusque la je pense que je vais pouvoir utiliser ce chiffre dans une automatisations pour déclencher la vanne.  
Mais l’affichage (voir en haut) j’aimerais pas un chiffre mais plutôt un mot comme «&nbsp;normal&nbsp;» et «&nbsp;bas&nbsp;» et trop élevée" selon un chiffre qui est mesurer.  
Comment je peut faire cela, formule, template…etc  
Faut dire en programmation j’ai aucune idée, donc je veut bien apprendre un peut

* * *

---

<div class="post-metadata">

**Author:** ![fredarro](https://forum.hacf.fr/user_avatar/forum.hacf.fr/fredarro/32/175_2.png) [@fredarro](https://forum.hacf.fr/u/fredarro)\
**Post date:** [Mars 27, 2022, 10:00 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/2 "2022-03-27T10:00:39Z")

</div>

Salut, Tu peux le faire en utilisant le Template de HA

> **[Template](https://www.home-assistant.io/integrations/template/#multiline-example-with-an-if-test)**
>
> Instructions on how to integrate Template Sensors into Home Assistant.

---

<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:** [Mars 27, 2022, 11:03 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/3 "2022-03-27T11:03:08Z")

</div>

Salut,

Tu as 2 approches que je verrais:

- **Sensor Template**  
Tu fais ça dans le fichier de config avec un template sensor dont la valeur «&nbsp;state\_template&nbsp;» sera la texte qui dépendra de ton niveau d’eau.  
C’est clean mais ça nécessite un peu d’écriture yaml & template. Donc à lire dans le lien de @fredarro

- **No Code**  
Si tu es allergique au Yaml, tu peux aussi faire ça en mode UI, and créant un input\_text (config\>automatisation\>entrées). Ensuite en créant une automatisation qui change la valeur de ton input\_text en fonction de niveau d’eau.

Le résultat sera similaire à première vue.  
La solution sensor template sera plus complète cela dit car c’est un sensor à part entière.

---

<div class="post-metadata">

**Author:** ![Shadow](https://forum.hacf.fr/user_avatar/forum.hacf.fr/shadow/32/4479_2.png) [@Shadow](https://forum.hacf.fr/u/Shadow)\
**Post date:** [Mars 27, 2022, 11:13 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/4 "2022-03-27T11:13:30Z")

</div>

Merci, intéressant je vais essayer le sensor Template, le yaml me fait pas peur tant que je peut faire du copier collé et adapter avec mes sensor etc. Je ne suis pas capable de les écrire puisque les connaissance me manque.

---

<div class="post-metadata">

**Author:** ![Shadow](https://forum.hacf.fr/user_avatar/forum.hacf.fr/shadow/32/4479_2.png) [@Shadow](https://forum.hacf.fr/u/Shadow)\
**Post date:** [Mars 27, 2022, 11:21 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/5 "2022-03-27T11:21:40Z")

</div>

Eh je peux faire dans config.yaml:

template: !include template.yaml

de cette manière c’ets un peu plus structurer

---

<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:** [Mars 27, 2022, 11:52 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/6 "2022-03-27T11:52:21Z")

</div>

Dans la doc de Template, l’exemple le plus proche de ton cas serait:

##### MULTILINE EXAMPLE WITH AN IF TEST

Sinon pour l’utilisation d’un fichier séparé, c’est possible comme tu l’as donné.

---

<div class="post-metadata">

**Author:** ![Shadow](https://forum.hacf.fr/user_avatar/forum.hacf.fr/shadow/32/4479_2.png) [@Shadow](https://forum.hacf.fr/u/Shadow)\
**Post date:** [Mars 27, 2022, 12:18 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/7 "2022-03-27T12:18:19Z")

</div>

Merci, ce que j’ai fait:

```auto
  - sensor:
      - name: "Niveau étang"
        state: >
          {% if is_state('sensor.niveau_etang_2', '=0.25') %}
            normal
          {% elif state_attr('sensor.niveau_etang_2', '<=0.20')|float < 1000 %}
            trop élevé
          {% elif is_state('sensor.niveau_etang_2', '>=0.27') %}
            trop bas
          {% else %}
            failed
          {% endif %}

```

et j’ai sa comme retour:

 ![image](https://forum.hacf.fr/uploads/default/original/2X/c/cf71d68ca027416f722f1d28d42afc8d7dd94605.png)

avec un niveau afficher a 0.23, il me semble pas que tout a fait juste, je vais faire des essai!

![image](https://forum.hacf.fr/uploads/default/original/2X/5/5ac2b8bc09966a21fd542b603aa71b5873050cc5.png)

---

<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:** [Mars 27, 2022, 1:34 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/8 "2022-03-27T13:34:51Z")

</div>

La forme générale est bonne.  
Maintenant c’est les comparaisons de valeurs qu’il faut revoir.

```auto
is_state('sensor.niveau_etang_2', '=0.25') .

```

is\_state sert à comparer un état avec une valeur fixe, tu ne peux pas y ajouter de comparateur.

Pour faire ce que tu veux tu peux utiliser:

```auto
states.sensor.niveau_etang_2.state

```

La variable ci-dessus représente to niveau d’eau donc ça peut donner une truc comme ça:

```auto
{% if (states.sensor.niveau_etang_2.state | float() < 0.20) %}

```

---

<div class="post-metadata">

**Author:** ![Shadow](https://forum.hacf.fr/user_avatar/forum.hacf.fr/shadow/32/4479_2.png) [@Shadow](https://forum.hacf.fr/u/Shadow)\
**Post date:** [Mars 27, 2022, 3:36 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/9 "2022-03-27T15:36:17Z")

</div>

oh merci,

juste is\_state je ne peut pas comparer OK - sa j’ai compris - le reste pas désolé

la formule ok {% if et ensuite le sensor… float sert aquoi? et ensuite la formule (donc je peut faire une fois \< 0.20, une fois \> 0.28 et le «&nbsp;normal&nbsp;» avec = 0.25)

elif state\_attr il sert a quoi?

---

<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:** [Mars 27, 2022, 4:43 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/10 "2022-03-27T16:43:36Z")

</div>

J’étais un peu évasif, mais voilà ce que tu peux faire.  
J’ai pris des valeurs que j’ai déduites de tes exemples. A toi de corriger  
La première chose à laquelle il faut faire attention c’est bien couvrir toutes les valeurs possibles. Et bien placer les \> et les \>=.

Il y a possibilité de le faire plus évolué, mais c’est plus compréhensible comme ça:

```auto
          {% if states.sensor.niveau_etang_2.state | float() > 0.27 %}
            trop élevé
          {% elif states.sensor.niveau_etang_2.state | float() <= 0.27 and states.sensor.niveau_etang_2.state | float() >= 0.25 %}
            normal
          {% elif states.sensor.niveau_etang_2.state | float() < 0.25 %}
            trop bas
          {% else %}
            erreur
          {% endif %}

```

Sinon pour tes autres questions:

- float() : les états sont stockés en tant que chaines de caractères (str), le float permet de le convertir en nombre décimal pour pouvoir faire les comparaisons sans erreurs.
- state\_attrib tu permet de retrouver un attirbut de ton entitié. Dans ton exemple «&nbsp;friendly\_name&nbsp;» est un attribut.Mais là on veut l’état, donc on prends «&nbsp;state&nbsp;».
- elif : c’est une logique pour faire «&nbsp;sinon si&nbsp;».
- Je ne ferais pas de test avec un «&nbsp;=&nbsp;» car c’est très restrictif, tu ne serait jamais en «&nbsp;normal&nbsp;»

Je n’ai pas donné plus d’explication sur la logique car ça me semble assez compréhensible.

---

<div class="post-metadata">

**Author:** ![Shadow](https://forum.hacf.fr/user_avatar/forum.hacf.fr/shadow/32/4479_2.png) [@Shadow](https://forum.hacf.fr/u/Shadow)\
**Post date:** [Mars 27, 2022, 5:34 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/11 "2022-03-27T17:34:53Z")

</div>

Ah cool,  
Merci la j’ai tout compris

---

<div class="post-metadata">

**Author:** ![Shadow](https://forum.hacf.fr/user_avatar/forum.hacf.fr/shadow/32/4479_2.png) [@Shadow](https://forum.hacf.fr/u/Shadow)\
**Post date:** [Mars 27, 2022, 6:18 UTC](https://forum.hacf.fr/t/besoin-daide-formule-affichage-mesure/10347/12 "2022-03-27T18:18:12Z")

</div>

Je viens de trouver des infos pour le niveau d’un réservoir d’huile, même principe que j’ai fait avec l’étang

[https://community.home-assistant.io/t/oil-tank-level-sensor/96809/5](https://community.home-assistant.io/t/oil-tank-level-sensor/96809/5)
