HA, Zipulse, compteur en m3 et pics de consommation anormaux

Bonjour,

J’ai intégré depuis peu dans mon HA un zipulse raccordé à un compteur Gioanola, qui envoi une impulsion par litre d’eau qui passe.

Mon réseau zigbee foctionne sous zigbee2mqtt.

Le paramétrage du zipulse j’ai laissé le compteur en L, mais j’ai créé un compteur en m3 dans HA afin de pouvoir l’intégrer dans la partie énergie, consommation d’eau.

Voici comment est créé le compteur en m3:


template:
   - sensor:
     - name: "Compteur Eau m³"
       unique_id: compteur_eau
       device_class: water
       icon: mdi:counter
       state: "{{ (states('sensor.compteur_eau_energy') | float(0) / 1000) | round(2) }}"
       state_class: total_increasing
       unit_of_measurement: "m³"

Cela semblait bien fonctionner jusqu’à ce que je me rende compte qu’il m’arrivait d’avoir des pics, qui ne correspondent à rien sur ce compteur:

Par exemple le 13/02 un pic de 3.66 m3 entre entre 11h et 12h alors que si je vais voir l’historique du compteur zipulse en L, je constate quelque L de consommation.

De plus mon compteur est récent, en L j’ai moins de 3700L.

Par contre sur ce compteur zipulse en L, je constate que sur le graphique il y a une valeur qui manque (le ligne n’est pas continue).

Je pense, sans pouvoir en être certain, car je suis toujours en mode découverte / débutant sur HA, que c’est ça qui vient fausser le calcul sur le compteur en m3.

Comment puis-je adapter mon compteur en m3 afin d’éviter cela, c’est à dire de ne pas tenir compte de valeurs manquantes ?

Ma configuration


System Information

version core-2026.2.1
installation_type Home Assistant OS
dev false
hassio true
docker true
container_arch amd64
user root
virtualenv false
python_version 3.13.11
os_name Linux
os_version 6.12.67-haos
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.5
Stage running
Available Repositories 2721
Downloaded Repositories 15
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 17.1
update_channel stable
supervisor_version supervisor-2026.02.1
agent_version 1.8.1
docker_version 29.1.3
disk_total 30.8 GB
disk_used 10.7 GB
nameservers 192.168.0.254
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization kvm
board ova
supervisor_api ok
version_api ok
installed_addons Get HACS (1.3.1), Advanced SSH & Web Terminal (23.0.2), File editor (5.8.0), FTP (6.0.1), Mosquitto broker (6.5.2), Zigbee2MQTT (2.8.0-1), Z-Wave JS UI (7.0.0), ESPHome Device Builder (2026.1.5)
Dashboards
dashboards 4
resources 5
views 5
mode storage
Network Configuration
adapters lo (disabled), enp0s18 (enabled, default, auto), hassio (disabled), docker0 (disabled), enp0s19 (disabled), veth3d8ad35 (disabled), veth3f36444 (disabled), veth4d51119 (disabled), veth71aa989 (disabled), vethb3e4a86 (disabled), veth3986805 (disabled), veth12a648d (disabled), veth3994d9f (disabled)
ipv4_addresses lo (127.0.0.1/8), enp0s18 (192.168.0.61/24), hassio (172.30.32.1/23), docker0 (172.30.232.1/23), enp0s19 (), veth3d8ad35 (), veth3f36444 (), veth4d51119 (), veth71aa989 (), vethb3e4a86 (), veth3986805 (), veth12a648d (), veth3994d9f ()
ipv6_addresses lo (::1/128), enp0s18 (fe80::cb59:6956:d503:b261/64), hassio (fe80::b01b:b4ff:feab:4e67/64), docker0 (fe80::18c6:c8ff:feaf:f75e/64), enp0s19 (fe80::cbfa:8084:4929:1ea4/64), veth3d8ad35 (fe80::2492:8fff:fe1f:668f/64), veth3f36444 (fe80::3c22:86ff:fe84:198f/64), veth4d51119 (fe80::986b:abff:fee2:557d/64), veth71aa989 (fe80::e4f8:c4ff:fe6c:9f11/64), vethb3e4a86 (fe80::a067:20ff:feda:c34/64), veth3986805 (fe80::bc6a:4bff:fede:688a/64), veth12a648d (fe80::f037:cbff:fea6:3641/64), veth3994d9f (fe80::cc37:4cff:fea4:8333/64)
announce_addresses 192.168.0.61, fe80::cb59:6956:d503:b261
Recorder
oldest_recorder_run 31 janvier 2026 à 00:21
current_recorder_run 13 février 2026 à 11:52
estimated_db_size 451.49 MiB
database_engine sqlite
database_version 3.49.2
___

Je continue d’avancer sur ce sujet.
En regardant les données exportées de l’historique du compteur en L du zipulse, j’ai découvert que j’avais parfois une valeur d’état « unknown » ou « unavaliable ».

J’essaye d’adapter la config de mon compteur comme ci-dessous:

template:
  - sensor:
    - name: "Compteur Eau m³"
      unique_id: compteur_eau
      device_class: water
      icon: mdi:counter
      state_class: total_increasing
      unit_of_measurement: "m³"
      state: >
      {% if (states('sensor.compteur_eau_energy') != "unavailable") and (states('sensor.compteur_eau_energy') != "unavailable") %}
        "{{ (states('sensor.compteur_eau_energy') | float(0) / 1000) | round(2) }}"
      {% else %}
        0
      {% endif %}

Ce que je veux, c’est ne pas tenir compte de ces deux cas de figure.

Malheureusement, lorsque je vais dans outils de développement pour vérifier la configuration, j’obtiens l’erreur suivante:

Error loading /config/configuration.yaml: while scanning for the next token
found character '%' that cannot start any token
  in "/config/packages/templates.yaml", line 12, column 8

Il ne semble pas vouloir prendre en compte le « {% » qui est le début de l’instruction de condition, et je ne vois pas où se situe mon erreur.

Bonjour,

Tu gardes ce que tu as mis dans le premier post et tu ajoutes la partie availibility pour dire quand prendre en compte la valeur. Exemple :

template:
   - sensor:
     - name: "Compteur Eau m³"
       unique_id: compteur_eau
       device_class: water
       icon: mdi:counter
       state: "{{ (states('sensor.compteur_eau_energy') | float(0) / 1000) | round(2) }}"
       state_class: total_increasing
       unit_of_measurement: "m³"
       availability:
          "{{  (states('sensor.compteur_eau_energy') | is_number }}"
3 « J'aime »

Bonsoir @tomdom78. Merci pour cet exemple, j’ai mis en place ta solution qui fonctionne et qui de plus est encore plus simple que celle sur laquelle j’étais parti.

template:
   - sensor:
     - name: "Compteur Eau m³"
       unique_id: compteur_eau
       device_class: water
       icon: mdi:counter
       state: "{{ (states('sensor.compteur_eau_energy') | float(0) / 1000) | round(2) }}"
       state_class: total_increasing
       unit_of_measurement: "m³"
       availability:
          "{{  (states('sensor.compteur_eau_energy') | is_number) }}"
1 « J'aime »

Ce sujet a été automatiquement fermé après 2 jours. Aucune réponse n’est permise dorénavant.