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
substitutions:
name: gaz
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: "gaz 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: 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;
# 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
########### 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 ###############################################################################
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
Edit 20211022: modification code: passage de « counter » à « meter »
Sources:
https://blog.zesanglier.fr/2019/11/17/capteur-sans-fil-pour-compteur-de-gaz-gazpar/