Une solution complète de récupération des données Eau, Gaz et Electricite

Bonjour a tous

Introduction:

Ce post est la compilation en un seul système de la récupération de :

    • La consommation d’eau
    • La consommation de gaz
    • La consommation électrique

Contraintes:

Mes 2 compteurs Linky et Gazpar sont situés à l’extérieur dans 2 niches normalisés scellées dans un mur de mon domicile . Le tableau électrique se situe à l’intérieur quasiment au même niveau que les compteurs extérieurs.

La télesignalisation du Linky passe au travers d’un trou de faible diamètre réalisé avec une mèche longue. Elle utilise le module décrit dans l’épousât suivant :

La télé signalisation du Gazpar passe par une l’utilisation d’un couple émetteur récepteur 433 MHz type télécommande . On trouvera la description de cette réalisation dans le post :

Nota : pour ceux qui sont déjà équipés zigbee, j’ai vu une solution basée sur la récupération d’un interrupteur à pile IKEA. La portée doit cependant est plus faible.

La télé signalisation du compteur à eau est décrite dans le chapitre suivant.

Principe de comptage des impulsions du compteur d’eau:

Le compteur installé est de type Diehl Metering model 6250. Il comporte l’indication en petit « Ti » qui signifie comptage inductif.Une option fort chère existe sur le marché.

J’ai donc cherché les capteurs indicatifs capables reconnaître le passage de la ½ couronne métallique.

Mon choix s’est porté sur le modèle LJ18A3-8-Z/BX-5V qui peut fonctionner jusqu’à une tension aussi basse que 5 V et à une distance de détection de 4 mm environ

Je ne peux pas faire la description détaillée des composants nécessaires car ils dépendent pour beaucoup des composants déjà disponibles et de ce qu’on trouve dans les magasins de bricolage. Néanmoins il faut respecter plusieurs règles :

    • L’ensemble ne doit apporter aucune modification au compteur existant dont on est pas propriétaire
    • L’ensemble doit pouvoir être démontable rapidement
    • Il doit toujours permettre la rotation du compteur, la lecture de son index.
    • Enfin le réglage de axes verticaux et horizontaux doit être possible.

Si quelqu’un se lance dans la même réalisation avec le même compteur et dispose d’une imprimante 3D, je suis preneur !
Lien pièce de fixation compteur : https ://www.thingiverse.com/thing:5418699

La photo ci-dessous montre l’ensemble réalisé :

Branchement côté ESP32 :

Le modèle utilisé fonctionne jusqu’à 5 Volts mais la tension de sortie est également de 5V. Il faut donc prévoir un abaisseur de tension 3,3 V. Cela se fait simplement en optimisants les resistances autour du capteur de facon a avoir environ 3.3 V

Boîte complète comprenant l’ensemble :

J’aurais pu utiliser d’une part un ESP plus petit, d’autre part ajouter la gestion du Linky en ESPHOME à l’ESP en plus de l’eau et du gaz. J’ai préféré garder une solution basée sur l’utilisation du teleinfokit qui envoi ses données en MQTT.

J’ai également séparé l’alimentation de l’ESP (eau + gaz) et teleinfokit ne connaissant pas la consommation en crête des 2 modules.

A ce sujet, j’avais au départ utilisé des alimentations 220/5 V trouvable chez un fournisseur allemand bien connu. Ces alimentation sont mortes après seulement quelques jours d’utilisation. Je me suis donc tourné vers la riche récupération du circuit imprimé de chargeur clone d’iPhone.

Le schéma ci dessous décrit le système complet. L’ensemble a été réalisé sur plaque epoxy type veroboard. Attention le schéma reprend la référence des alimentations de mauvaise qualité .

[


]

Les photos suivantes montrent comment tout rentre au chausse pied dans le boîtier

Les leds rouges renseignent sur la présence de l’alimentation

La led bleu émet un flash de 0,5s à chaque tour du compteur ( = 1 litre)

La led jaune émet un flash de 0,5s à chaque impulsion du compteur gaz ( = 10 litres)

La led verte émet un flash de 0,5s provenant d’un sensor de Home Assistant ( origine MQTT)

Programme ESPHOME :

substitutions:
  name: eau-gaz-electricite

esphome:
  name: ${name}
  platform: ESP32
  board: esp-wrover-kit

wifi:
  networks:
  - ssid: !secret SSID_ext
    password: !secret wifi_password
  - ssid: !secret SSID
    password: !secret wifi_password
#  reboot_timeout: 15min
  reboot_timeout: 0s

# Optional manual IP
  manual_ip:
    static_ip: 192.168.1.62
    gateway: 192.168.1.1
    subnet: 255.255.255.0  
# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "eau Fallback Hotspot"
    password: !secret wifi_fallback_password

captive_portal:

# Enable logging
logger:
  baud_rate: 0
  level: INFO
#  level: DEBUG
  
# Enable Home Assistant API
api:
  password: !secret home_assistant_password
  
ota:
  password: !secret ota_password
  
web_server:
  port: 80
  
time:
  - platform: homeassistant
    id: homeassistant_time
    
# reset a minuit des sensors et transfert vers le sensor  veille
    on_time:
      - seconds: 57
        minutes: 59
        hours: 23
        then:  

          - pulse_meter.set_total_pulses:
              id: capteur_inductif_eau_pulse
              value: 0

          - pulse_meter.set_total_pulses:
              id: gazpar
              value: 0  


# Definition des GPIOs servant aux Leds d'activite eau, gaz et electricite 
output:
# Eau
  - platform: gpio
    pin: GPIO15
    id: output_blue

# Gazpar
  - platform: gpio
    pin: GPIO16
    id: output_yellow
# Linky
  - platform: gpio
    pin: GPIO17
    id: output_green
    
    
# déclaration des sensors numérique

sensor:
  - platform: wifi_signal
    name: "WiFi Signal Sensor"
    update_interval: 60s
    unit_of_measurement: dB
    accuracy_decimals: 0
    force_update: false
    icon: mdi:wifi
  - platform: uptime
    id: uptime_seconds
    name: "Uptime Sensor"
    update_interval: 60s
    unit_of_measurement: s
    accuracy_decimals: 0
    force_update: false
    icon: mdi:timer
 
    
  
###########    EAU    ##################################################################################  
# Debit detecteur compteur d´eau
  - platform: pulse_meter
    id: capteur_inductif_eau_pulse
    pin: 
      number: GPIO25
      mode: INPUT_PULLUP
    name: "Debit compteur d'eau"
    unit_of_measurement: "l/mn"
    icon: mdi:water
    internal_filter: 200ms

#########################
# Consommation Totale d'Eau Jour
    total:
      name: "Compteur Eau Jour"
      icon: mdi:water
      device_class: water   
      unit_of_measurement: 'L'
      accuracy_decimals: 0
      filters:
        - multiply: 1  # (pour resrer en l)
      id: compteur_eau_jour
      
#########################
 ######################### 
# Consommation eau du jour en m3
  - platform: template
    name: "Compteur eau Jour m3"
    lambda: |-
      return id(compteur_eau_jour).state * 0.001;
    device_class: water
    unit_of_measurement: "m³"
    accuracy_decimals: 3 
    id: compteur_eau_jour_m3
    state_class: total_increasing

###########    EAU    ############################################################################### 





###########    GAZ    ###############################################################################
# Consommation gaz
  - platform: pulse_meter
    id: gazpar
    pin:
      number: GPIO26
#      mode: INPUT_PULLDOWN ########################################################################################################################################
    unit_of_measurement: "l/mn"
    icon: mdi:gas
    internal_filter: 100ms
    name: "Debit Gazpar TIC"
    state_class: measurement
    filters:
       - multiply: 10 # (pour avoir des l/min)


      
#########################
# Consommation Total gaz Jour
    total:
      unit_of_measurement: "m³"
      name: 'Gazpar Gaz Jour'
      filters:
        - multiply: 0.01 # (pour avoir des m3)
      accuracy_decimals: 3
      icon: mdi:fire
      id: gazpar_gaz_jour
      device_class: "gas"
      
      
######################### 
# Puissance Total gaz du jour
  - platform: template
    name: "Gazpar Puissance Gaz Jour"
    lambda: |-
      return id(gazpar_gaz_jour).state * 10.01;
    device_class: energy
    unit_of_measurement: "kWh"
    accuracy_decimals: 3 
    id: gazpar_puissance_gaz_jour
    state_class: total_increasing
    
   
###########    GAZ    ###############################################################################



##################################################################################################################################################################
#Report Consommation electrique depuis teleinfokit vers Led verte
# Consommation electricité depuis teleinfokit linky
  - platform: homeassistant
    name: "Index Linky kWh"
    entity_id: sensor.linky_index
    accuracy_decimals: 3
 
    on_value:
      then:
       - output.turn_on: output_green
       - delay: 0.5s
       - output.turn_off: output_green

    
binary_sensor:

# Statut de l'ESP
  - platform: status
    name: "Eau, Gaz et Electricite (Statut)" 
    
# etat du capteur Inductif compteur eau brut     
  - platform: gpio
    pin:
      number: GPIO05
      mode: INPUT_PULLUP
    name: "Capteur Inductif eau"
    device_class: window 
# Report Consommation eau vers Led bleue    
#    on_state:
    on_press:
      then:
       - output.turn_on: output_blue
       - delay: 0.5s
       - output.turn_off: output_blue
       
# etat du capteur Inductif compteur eau pulse 500ms   
  - platform: gpio
    pin:
      number: GPIO25
      mode: INPUT_PULLUP
      inverted: true
    name: "Capteur Inductif eau pulse"
    device_class: window 

       
# etat du TIC Gazpar brut    
  - platform: gpio
    pin:
      number: GPIO26
      inverted: true
    name: "Capteur TIC Gazpar"
    device_class: window
    # Report Consommation eau vers Led jaune
    on_press:
      then:
       - output.turn_on: output_yellow
       - delay: 0.5s
       - output.turn_off: output_yellow
    
switch:
  - platform: restart
    name: "${name} reboot"

text_sensor:
  - platform: template
    name: ${name} - Uptime
    update_interval: 60s
    icon: mdi:clock-start
    lambda: |-
      int seconds = (id(uptime_seconds).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600);
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days ) {
        return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
      } else if ( hours ) {
        return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
      } else if ( minutes ) {
        return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
      } else {
        return { (String(seconds) +"s").c_str() };
      }
      
################################################################################################      



    

 
    

Conclusion :

A la date de rédaction de ce post, l’ensemble fonctionne parfaitement.

Je reste à votre disposition pour tout complément d’information

Edit 20211022 : refonte du code + simplifications electroniques
Edit 20221028: ajout lien fabrication support plastique compteur
Edit 20221028: mise a jour code

21 « J'aime »

Merci pour le partage :slight_smile:

Super sujet bien complet

Merci merci

Merci
Ça doit servir de base surtout
Phil

1 « J'aime »

bonjour,

tu le fais tenir comment ton capteur inductif sur ton compteur a eau ?

Bonjour,
J’ai utilisé un certain nombre de pièces trouvées chez LM.
Serre tube de diamètre 10, caoutchouc, etc …. Je pense qu’il y a pas mal de solutions. Il est possible aussi de s’accrocher sur le mur si le compteur est proche .
Désolé mais chacun aura sa solution sachant que le CDC est de ne pas abîmer le compteur et de permettre un démontage rapide et facile
Phil

Bonjour @Pbranly super ton partage, très intéressant.
Je suis très intéressé par le lien sur le système à base zigbee Ikea pour le compteur Gaz. J’ai beau avoir cherché de mon côté (d’habitude, si quelqu’un dit qu’il a trouvé un truc, j’arrive généralement à retrouver), mais là je sèche…

Comme j’ai le compteur sur le palier à quelques mètres (5m) de ma box HA, je pense que je n’aurais pas de soucis de porté en Zigbee. En plus l’avantage des modules Zigbee à pile (Ikea, Xiaomi, Philips Hue), c’est qu’on a une remonté du niveau de la pile, donc on peux savoir quand les changer sans tomber en panne.

1 « J'aime »

Bonsoir,
Malheureusement il n’a jamais publié
C’était juste une discussion sur Facebook et je serais incapable de la retrouver
Il partait d’un inter zigbee a pile IKEA et avait soudé 2 fils à la place du contact vers la prise du gazpar
Désolé
Philippe

1 « J'aime »

Bonsoir,

Ca doit être ce post. C’est dommage qu’il ne soit pas partageable.

1 « J'aime »

Oui c’est tout à fait ça.
Je n’arrive même pas à retrouver son post de mon côté .
Ceci dit la description est déjà assez détaillée
Philippe

Et voilà
Il m’a répondu
Philippe

1 « J'aime »

Super !
Merci, c’est top !!!
Je pense que je vais pas tarder à faire le même !!!

Bonjour
Un grand merci pour votre sujet compteur de récup…
Je m’en suis inspiré pour réaliser le compteur d’eau, et cela marche pas trop mal, sauf que j’ai régulièrement (souvent la nuit) des salves d’impulsions qui fausse complétement la mesure.
J’ai l’impression que le capteur n’arrive pas à discerner franchement le front descendant lors d’une consommation très très faible( style goutte à goutte), et dans ce cas il arrive à envoyer des 50 à 100l d’eau en 1 mn…

Avez vous eu ce genre de phénomène?

Belle réalisation
Oui j’ai eu le même problème qui me paraît dû au fait de très grandes périodes en état haut ou/et en état bas
Sur le post décrivant mon système complet eau, gaz et électricité, vous verrez que j’ai modifié le schéma et le code .
Le principe est de générer une impulsion calibrée de 500 ms des qu’il y a un changement d’état quelque soit la durée de l’état
Cordialement
Philippe

Merci pour ce retour,
Comment est généré l’impulsion calibrée de 500ms?
Je n’ai pas implémenté la LED bleue, cela a t’il un influence?
Les schema et code datent bien de octobre 21.
cdt
Gerard

Bonjour et bonne année
La led n’est pas obligatoire .
Le schéma et le code d’octobre sont bien les derniers
En fait j’envoie la pulse du détecteur inductif vers le gpio5. Le code génère une impulsion de 500 ms sur le gpio15 destinée à l’origine à faire clignoter une led montrant la consommation.
La sortie GPIO 15 est reliée à une entrée gpio25.
Et c’est cette entrée gpio25 qui compte.
Il y sûrement plus simple mais j’avais du rab dans les ports et ça permet de transformer une impulsion qui peut durer des heures en une impulsion de 500 ms.
N’hésitez pas !
Cordialement
Philippe

Meilleurs voeux à vous,

Alors j etais bien sur les nouveaux schema er codes.
par contre j ai passé l internal filter du pulse_meter à 500ms, et là cela à l air de fonctionner.
je vais aussi regarder sur quel front le capteur inductif du gpio5 travaille.
A suivre.
Pas si simple que ça.
Merci encore.

Gerard

Bonjour,
Meilleurs vœux à tous
Voici un partage du schéma sous easyeda, il me sert a faciliter la compréhension du circuit pour des modifs futures.

Comme une alim commune en 9v et régul de tension, suppression du module 433mhz. Et pour finir l’integration de la partie teleinfo sur le pcb.

Beau travail
Merci pour tous

Merci pour le schéma, je ne suis pas sûr de comprendre la suppression du module 433mhz, comment est alimenté la partie qui se trouve dans le boitier du compteur gazpar.