Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hugokernel/esphome-water-meter

Measurement of water consumption directly from your water meter with a TCRT5000 like sensor and ESPHome.
https://github.com/hugokernel/esphome-water-meter

esp32 esphome home-assistant homeassistant tcrt5000

Last synced: about 5 hours ago
JSON representation

Measurement of water consumption directly from your water meter with a TCRT5000 like sensor and ESPHome.

Awesome Lists containing this project

README

        

# ESPHome Water Meter

Read this in other languages: [English](README.md)

![Photo du boitier contenant l'électronique](images/boitier.jpg)

## Présentation

Si vous possédez un compteur d'eau (Sensu R-315 pour ma part), ce dernier dispose peut être d'un indicateur vous permettant de connaitre assez précisément la consommation courante.
Son fonctionnement est assez simple, un disque (voir photo) visible dans le cadran du compteur tourne à une vitesse proportionnelle au débit d'eau circulant.
Il est conçu pour que chaque révolution complète corresponde à un 1L d'eau.

Le disque est constitué d'une partie réfléchissante et d'une partie mat (voir photo ci-dessous), ainsi, en utilisant un capteur adapté, il est possible de détecter la rotation du disque et donc d'en déduire la consommation courante de votre compteur.

![Photo du compteur](images/compteur.jpg)

Afin de détecter la rotation le disque, j'ai utilisé un capteur [TCRT5000](docs/tcrt5000.pdf) disposant d'une LED émettrice IR et d'un photo-transistor dans le même boitier.
Il est possible de trouver ces capteurs sur des cartes autonomes avec un amplificateur opérationnel et une résistance ajustable pour un prix très intéressant.

J'ai collé au double face le capteur avec une méthode très approximative mais cela fonctionne très bien, j'ai cependant prévu de faire une pièce imprimable en 3D afin de faciliter l'installation.

![Photo du compteur avec le capteur posé dessus](images/installation.jpg)

## Caractéristiques

### Mesures de consommation

* Consommation journalière
* Consommation hebdomadaire
* Consommation mensuelle
* Consommation annuelle
* Consommation primaire / secondaire: Des compteurs qu'il est possible de remettre à 0 à tout moment afin d'effectuer des mesures en tout genre
* Consommation courante: Indique la consommation instantanée
* Dernière consommation: Indique la dernière consommation (la mesure continue tant que le compteur tourne sans interruption de plus de 5 minutes)

## Mises à jour

### 2024-01-15

* Mise à jour en utilisant l'intégration `pulse_meter` (utilisé depuis plusieurs mois avec une bien meilleur précision)
* Suppression des parties n'étant pas directement en rapport avec la mesure de consommation d'eau (led, mesure température)
* Ayant changer de compteur, je n'ai plus l'intention de désigner un support adapté pour le compteur Sensu R-315

## Réglage

Vous devez modifier la valeur `pulse_gpio` que vous utilisez pour l'entrée:

```yaml
substitutions:
name: watermeter
friendly_name: "Water meter"
pulse_gpio: GPIO18
```

## Fonctionnement

Le fonctionnement est assez simple et la partie YAML la plus importante est reportée ci-dessous:

```yaml
binary_sensor:
# TCRT5000 pulse counter
- platform: gpio
id: water_pulse
pin:
number: $pulse_gpio
allow_other_uses: true
internal: true
filters:
- delayed_on_off: 50ms
- lambda: |-
id(main_counter_pulses) += x;
id(secondary_counter_pulses) += x;
id(daily_counter_pulses) += x;
id(weekly_counter_pulses) += x;
id(monthly_counter_pulses) += x;
id(yearly_counter_pulses) += x;
id(event_quantity) += x;
return x;
on_state:
- script.execute: publish_states
```

Un capteur numérique est déclaré et utilise l'entrée / sortie numérique 18 sur laquelle est branchée le TCRT5000.

Un filtre permet de supprimer les impulsions parasites en provenance du capteur si son état n'est pas défini durant plus de 50 milli-secondes.

Une fois le filtre passé, on atterrit dans la lambda ou le code C est exécuté et qui consiste simplement à incrémenter des globales définies plus haut.

Une autre partie déclare un capteur de type compteur d'impulsion qui permet de connaître la consommation instantanée.

```yaml
sensor:
- platform: pulse_meter
id: water_pulse_counter
name: "${friendly_name} water consumption"
pin:
number: $pulse_gpio
allow_other_uses: true
internal_filter: 100ms
unit_of_measurement: "L/min"
accuracy_decimals: 2
timeout: 30s
icon: "mdi:water"
```

## Fichiers

* watermeter.yaml: Le fichier de configuration ESPHome
* network.yaml: Les informations de votre réseau
* secrets.yaml: Les informations secrètes relatives à votre réseau