Récupération Telesignalisation GAZPAR

Bonjour a tous

Introduction:

Possesseur d’un compteur Linky et d’un compteur Gazpar, je voulais récupérer les informations de télé signalisation disponibles sur leurs prises TIC.
Si il existe pas mal de tutos traitant du Linky, il n’en n’est pas de même concernant le Gazpar.

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.
J’ai donc pu faire passer le télesignalisation du Linky facilement au travers d’un trou de faible diamètre réalisé avec une mèche longue et la relier à l’excellent module « teleinfo kit » de Nicolas.
Techniquement j’aurais pu faire de même pour rapatrier la TIC du Gazpar mais la niche est et doit rester rigoureusement étanche et il est par ailleurs interdit d’y ramener du 220 V.
J’ai donc cherché toutes les solutions possibles permettant d’émettre par radio les impulsions provenant du connecteur du Gazpar vers un ESP32 avec une alimentation sur pile.
J’ai éliminé tout de suite la solution Wifi via un module ESP situé dans la niche du Gazpar car ce type de module consomme trop pour être alimenté par une pile ou même une batterie.
Une solution techniquement intéressante aurait pu être basée sur un circuit fait d’un Arduino et d’un NRF2401 mais je l’ai abandonnée car trop complexe à mettre en œuvre tant au niveau hardware qu’au niveau software pour un besoin d’envoi d’impulsion toutes les 30sec environ de temps en temps .
Je me suis donc rabattu sur une solution beaucoup plus basique basée sur l’utilisation d’un couple émetteur récepteur 433 MHz type télécommande .
On trouve ce type de couple pour quelques euros seulement sur Ali et ceux ci ne nécessitent aucune programmation ni composants périphériques pour les faire fonctionner .

Rappel du fonctionnement de la sortie impulsion du Gazpar:

Je n’ai trouvé aucune information officielle décrivant l’interface électrique du compteur. Il existe plusieurs tutos avec des solutions très intéressantes .
En résumé:

  • Le compteur envoi une impulsion tous les 10 litres consommés
  • la sortie est du type « collecteur ouvert »
  • la durée de l’impulsion est de 300 ms
  • le connecteur est très spécifique. ( néanmoins il semble possible d’utiliser d’autres solutions )

Matériel nécessaire :

  • un couple émetteur récepteur 433 MHz.
    J’ai acheté sur Ali ce modèle. Depuis l’achat son prix a augmenté mais il y a beaucoup d’autres « sources «
  • un câble connecteur Gazpar:

Il existe également d’autres sources.

Côté compteur :

  • Un petit boîtier en plastique ( je n’ai pas de source car j’avais en stock)
  • Un connecteur de pile 9V (idem)
  • Une pile 9 V

Côté récepteur :

  • Une entrée libre GPIO d’ESP.
  • une résistance pull-down de 10kohms ( environ !)

Branchement côté émetteur :

L’émetteur est tout simplement branché en série entre la pile 9 V et la prise teleinformation du compteur .
J’ai mesuré un courant de l’ordre de 15 mA lorsque l’émetteur est alimenté. Ce courant est suffisamment faible pour d’une part permettre l’utilisation directe de la sortie teleinformation du Gazpar, d’autre part garantir une autonomie suffisante de la pile.
[


]

Masse en haut (fil jaune)
Signal en bas (fil noir)

[


]

Relier + 9V de la pile sur le + (fil rouge) du module émetteur
Relier fil noir du cordon sur le - (fil noir) du module émetteur
Relier masse 9 V sur le fil jaune du cordon

Branchement côté ESP32 :

J’alimente le récepteur avec le +5V disponible sur l’ESP32.
La sortie du relais est branchée d’un côté sur le 3,3 V disponible sur l’ESP32, de l’autre sur un port GPIO libre. Une résistance PULL-DOWN de 10 Kohms ( valeur non critique ) est branchée entre ce port et la masse de l’ESP

Programme ESPHOME :

Cette partie est fonctionnelle et demande encore à être optimisée.


substitutions:
  name: eau_et_gaz

esphome:
  name: ${name}
  platform: ESP32
  board: esp-wrover-kit
#  board: nodemcu-32s

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: "gaz Fallback Hotspot"
    password: !secret wifi_fallback_password

captive_portal:

# Enable logging
logger:
  baud_rate: 0
  level: INFO
# 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: gazpar_conso_gaz_hier
              state: !lambda return id(gazpar_conso_gaz_du_jour).state; 
              
          - sensor.template.publish:
              id: gazpar_puissance_gaz_hier
              state: !lambda return id(gazpar_puissance_gaz_du_jour).state;         

     
# déclaration des sensors numérique
# les sensors doivent être déclarés dans l'ordre de la fonction lambda
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
 

##################################################
 
# Consommation gaz

# Consommation gaz
  - platform: pulse_counter
    id: gazpar
    pin: GPIO26
    name: "Gazpar debimetre"
    state_class: measurement
    internal_filter: 13us
    update_interval: 1s
    filters:
      - lambda: return (x * 10); # 
    total:
      unit_of_measurement: "pulses"
      name: "Total pulses gazpar"

# Consommation Total gaz Journalière
  - platform: total_daily_energy
    name: "Gazpar Conso Gaz du Jour"
    state_class: total_increasing
    device_class: "gas"
    power_id: gazpar
    unit_of_measurement: "m³"
    accuracy_decimals: 3 
    id: gazpar_conso_gaz_du_jour
    filters:
      - lambda: return (x * 0.001*60);
 
# Puissance Total gaz Journalière
  - platform: total_daily_energy
    name: "Gazpar Puissance Gaz du Jour"
    state_class: total_increasing
    device_class: energy
    power_id: gazpar
    unit_of_measurement: "kWh"
    accuracy_decimals: 3 
    id: gazpar_puissance_gaz_du_jour
    filters:
      - lambda: return (x * 0.001*60*10.01); # Valeur kWh par m3 à modifier en fonction du lieu
      
# Consommation Total gaz de la Veille 
  - platform: template
    name: "Gazpar Conso Gaz Hier"
    state_class: measurement
    device_class: "gas"
    id: gazpar_conso_gaz_hier
    unit_of_measurement: "m³"
    accuracy_decimals: 3
    icon: mdi:fire
    update_interval: 10s 

# Puissance Total gaz de la Veille 
  - platform: template
    name: "Gazpar Puissance Gaz Hier"
    state_class: total_increasing
    device_class: energy
    id: gazpar_puissance_gaz_hier
    unit_of_measurement: "kWh"
    accuracy_decimals: 3
    icon: mdi:fire
    update_interval: 10s

binary_sensor:

# Statut de l'ESP
  - platform: status
    name: " Gaz (Statut)" 

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 :

J’ai encore peu d’historique et de retour sur la fiabilité à long terme de cette solution .
Pour l’instant, à part pour la partie émetteur, tout est en l’air et sera recablé à neuf et placé dans un boîtier
L’ESP32 utilisé sert également à récupérer les impulsions provenant du débitmètre de mon adoucisseur d’eau. Cette partie est également à refaire car imprécise et non fiable.
Cela fera l’objet d’un autre tuto quand ce sera fonctionnel.
J’aurai alors le rapatriement en temps réel du Linky, du Gazpar et de la consommation d’eau dans Home Assistant.

N’hésitez pas à faire tout commentaire !

Édit 20210903: modification code pour compatibilité carte Energy
Edit 20210909: clarification câblage coté Gazpar

Sources:

https://342apps.net/home/

https://blog.zesanglier.fr/2019/11/17/capteur-sans-fil-pour-compteur-de-gaz-gazpar/
image


3 « J'aime »

Intéressant, d’autant que l’ajout de la consommation de gaz dans le dashboard énergie est prévue pour Home Assistant 2021.9, de quoi faire un suivi.

Bravo ! ça va donner des idées

Pour les gros nuls en électronique/électricité comme moi, tu pourrais montrer précisément ou brancher quoi?
Par exemple, pourquoi une resistance de 10kohms?
Une idée de la distance acceptable entre l’émetteur/récepteur? Chez moi il faudrait que ça traverse deux gros murs…
Merci en tout pour le partage.

A oui intéressant l’ajout du gaz dans l’énergie .
Ceci dit, on peut facilement transformer les m3 en kWh et il on doit pouvoir les ajouter comme source d’énergie
Ca fausse le pourcentage carbone !

1 « J'aime »

C’est surtout le but de la description !

Je n’ai à ma disposition ( en vacances) que ma tablette
J’ai prévu d’ajouter des schémas à mon retour en septembre
Pour la résistance , j’ai constaté que le GPIO utilisé était forcé à +3,3 V. Afin de reconnaître une impulsion provenant d’un relais de 3,3 V, j’ai forcé le niveau logique à 0 V avec une résistance câblée entre la masse et le GPIO utilisé . Sa valeur est peu critique
J’aurais pu faire autrement mais je n’aime pas les entrées qui restent en l’air

Sur les arduinos codé « à la main », on peut dire si le GPIO est par défaut en UP ou DOWN. Ca ne peut pas se déclarer comme ça sur esphome.

Profite!! J’ai repris il y a deux jours :frowning:

Je crois qu’il y a aussi moyen de forcer le sens du pull avec esphome
Mais de toutes façons je préfère mettre un pull down extérieur afin de protéger l’entrée
Vacances …. J’y suis pour toujours maintenant !

Juste pour info, des câbles Dupont femelle rentre parfaitement dans l’emplacement du Gazpard, 15€ d’économie en vue…

Il y a quelques temps j’étais tombé sur cet article

https://blog.zesanglier.fr/2019/11/17/capteur-sans-fil-pour-compteur-de-gaz-gazpar/

Le coffret étant un endroit confiné, dans le cas d’une fuite de gaz, n’y a il pas un risque d’explosion si une étincelle venait à se produire sur ce fameux connecteur, n’est-ce pas pour cela que le connecteur d’origine est si bien protégé ?
Je suis peut être trop imaginatif, mais mieux vaut prévenir que guérir non ? :thinking:

Oui ça fonctionne sûrement mais j’ai préféré utiliser un connecteur « fait pour » pour des raisons de sécurité

Excellent article que j’ai cité à la fin de ma publication

Absolument . Je n’ai pas voulu économiser 15 € pour cette raison

Mes connaissances là-dessus sont modeste, mais il y a peut-être moyen de noyer les connections dans de la résine pour éviter cela, non ?

On ne peut pas toucher au compteur car il est la propriété de GRDF.
L’utilisation d’un connecteur JAE « fait pour » est pour moi le minimum à respecter .
Pour le reste dans l’absolu, le système devrait être ATEX
Ceci est une autre histoire ….

Il y a aussi ecodevice de chez GCE qui permet de récupérer les infos linky, Gaspar et compteur giaolini.

Gaz? Sans alim près du compteur? Comme d’autres mes compteurs sont dans la rue (gaz, élec) ou au fond du jardin (eau) et dans tous les cas, pas d’alim à proximité (entre autre).

D’où l’intérêt de ma solution !