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