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 !

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

# 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:  
          - sensor.template.publish:
              id: compteur_eau_veille
              state: !lambda return id(compteur_eau_jour).state; 

          - pulse_meter.set_total_pulses:
              id: capteur_inductif_eau_pulse
              value: 0
             
          - sensor.template.publish:
              id: gazpar_gaz_veille
              state: !lambda return id(gazpar_gaz_jour).state; 

          - pulse_meter.set_total_pulses:
              id: gazpar
              value: 0  
              
          - sensor.template.publish:
              id: gazpar_puissance_gaz_veille
              state: !lambda return id(gazpar_puissance_gaz_jour).state;              

          - lambda: |-
              id(gazpar_puissance_gaz_jour) = 0;



# Defintion 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 Journalière
    total:
      name: "Compteur Eau Jour"
      icon: mdi:water
      unit_of_measurement: 'm3'
      accuracy_decimals: 3
      filters:
        - multiply: 0.001  # (pour avoir des m3) 
      id: compteur_eau_jour
      
#########################
 

       
# Consommation Total d'Eau de la Veille 
  - platform: template
    name: "Compteur Eau Veille"
    id: compteur_eau_veille
    unit_of_measurement: "m3"
    accuracy_decimals: 3
    icon: mdi:water
    update_interval: 10s

###########    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:
      - lambda: return (x * 10); # 1 impulsion = 10 l
      
#########################
# Consommation Total gaz Journalière
    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"
      
#########################
# Consommation Total gaz de la Veille 
  - platform: template
    name: "Gazpar Gaz Veille"
    state_class: measurement
    device_class: "gas"
    id: gazpar_gaz_veille
    unit_of_measurement: "m³"
    accuracy_decimals: 3
    icon: mdi:fire
    update_interval: 10s 
      
######################### 
# 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
    
######################### 
# Puissance Total gaz de la Veille 
  - platform: template
    name: "Gazpar Puissance Gaz Veille"
    state_class: total_increasing
    device_class: energy
    id: gazpar_puissance_gaz_veille
    unit_of_measurement: "kWh"
    accuracy_decimals: 3
    icon: mdi:fire
    update_interval: 10s    
    
###########    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
      mode: INPUT_PULLDOWN
      inverted: true
    name: "Capteur TIC Gazpar"
    device_class: window
    # Report Consommation eau vers Led jaune
#    on_state:
    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

13 « 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.

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 !!!