Pour compléter et afin de protéger l’entrée de l’ESP, faut mettre un résistance de 10k en série sur l’entrée GPIO (entre la sonde et l’esp), et il faut également activer la résistance de pull-down…
Ou mettre une résistance de pull down sur ton entrée . Une 10K devrait faire l’affaire si en soft ça ne fonctionne pas
Bonjour, je suis nouveau sur le domaine et je veux tout comprendre
pour le cas de l’eau comme exemple
@Pbranly lit une seule fois la valeur en pulse_meter et fait des calcules dessus, je comprends.
Les autres codes lisent en pulse_meter et pulse_counter et plusieurs fois ?
Mes questions:
as ton le droit de lire une pin plusieurs fois avec différente méthode ?
quel est la différence entre pulse_meter et pulse_counter ?
J’ai pas trouvez de doc a part celle de esphome qui invite a utiliser pulse_meter si j’ai bien compris ?
je comprend pas pourquoi c’est des l/mn
Lol moi non plus ! De toutes façons ce paramètre ne sert à rien finalement . Ce qui compte c’est la valeur absolue en litres ou en m3.
# 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: gazpar
value: 0
comment copier la valeur dans « gazpar.hier » avant de remettre a 0 ??
le but est de l’afficher sur un mini écran oled
ça doit être trivial mais je sais pas faire !!
time:
- platform: homeassistant
# 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;
trouver sur le forum : Récupération Telesignalisation GAZPAR](Récupération Telesignalisation GAZPAR) merci
bonjour
j’ai des erreur de comptage .
j’ai un capteur LJ18A3-8-Z/BX-5V brancher sur un wemos d1 mini directement ( le + et - du capteur sur le wemos et le signal a la borne D1
mon sensor esphome :
sensor:
# Debit detecteur compteur d´eau
- platform: pulse_meter
id: capteur_inductif_eau_pulse
pin:
number: GPIO5
mode: INPUT_PULLUP
name: "Debit compteur d'eau"
unit_of_measurement: "l/mn"
icon: mdi:water
internal_filter: 1200ms
#########################
# 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
j’ai essayer de modifier l’emplacement du capteur .
petite info le wemos et a 30 mètres du capteur
le problème peut venir de la trop grande distance
Donc tu alimentes le détecteur en 3.3 V ? C’est peut être trop faible .
Et si tu l’alimentes en 5 V sa tension de sortie est de 5 V donc trop haute pour l’esp.
Je n’utilise plus d’esp mais un poussoir zigbee IKEA ….
Phil
Et quelles erreurs de comptage ? En plus ou/et en moins ? Regarde mon code. J’y avais ajouté des filtres et des forçages de niveau sur les entrées
Phil
bonjour
j’ai des erreur de comptage en positif
J’en ai aussi mais c’est marginal . Sauf quand je suis absent longtemps . Après quelques jours d’absence, ça détecte quelques faux litres par jour.
De ton côté, quel niveau d’erreur ? Et as tu mis les filtres en place dans ton code ?
Bonjour et merci pour le partage,
J’ai copié ton code et je remarque des aberrations de comptage en plus.
Quand même aujourd’hui c’est 700 litres en trop.
Quand je regarde il semble que le compteur s’incrémente sans que le capteur ne semble changer d’état.
Pour être précis j’utilise en fait un compteur équipé d’un capteur Reed, donc un peu plus simple.
Quelqu’un a déjà vu ça?
Sur la capture d’écran ci dessous on voit bien que tout est normal ou presque vers 18h21, neuf pulse et neuf litres. Mais a 18h28, aucun pulse et pourtant 12 litres de comptés…
Si quelqu’un a une idée je prends, ça avait bien tourné pendant 3 jours avant.
Cdt
Tu veux dire que tu ne puisse pas de l’eau mais que ça compte quand même des impulsions ?
Si c’est ça, c’est pas un problème de résistance mal calibrée ?
Et vérifier aussi si ce problème arrive que en NO ou NF ou indifféremment.
Il peut y avoir des parasites aussi qui font que ça détecte des impulsions. Genre le câble qui longe un autre câble courant fort.
Bonsoir,
Oui j’y ai pensé, mais je suis en Capteur reed, donc en gros c’est un ILS si je ne me trompe pas, il est connecté au +3.3V et le pin est en Pull Down, donc assez peu probable.
Le pire c’est que comme tu vois sur le graphe les changement d’état du capteur sont bien visibles quand de l’eau coule.
En plus il y a bien la tempo de 200 ms dans le programme donc là je suis sec…
A+
ça arrive quand le contact est ouvert et jamais quand il est fermé ?
tu peux nous montrer comment est fait ton sensor ?
Je n’utilise pas pulse metter et autre bidule car il a un comportement bizarre (j’ai peut être mal fait)
En testant esphome, et les différente possibilité qu’il y a en général, j’ai preferé faire mon propre compteur accumulateur. Je n’ai pas de problème avec le gazpar quiest impulsionnel. Si je pars sur ce principe, c’est aussi dans le but d’y ajouter une query mqtt pour récuperer la dernieère valeur envoyée vers « HA ». Comme ça en cas de reboot, mon compteur ne commence pas à 0.
Essaye ce genre de code pour voir si le problème est identique au tiens.
esphome:
name: wdesphome-gazpar
#friendly_name: gazpar
on_loop:
then:
- lambda: |-
id(loops_counter) += 1;
id(increment_and_toggle).execute();
esp32:
board: esp32dev
framework:
type: arduino
globals:
- id: loops_counter
type: int
initial_value: "0"
- id: loops_delay_gazpar_red_led
type: int
initial_value: "0"
- id: gazpar_pulse_counter
type: float #Le counter n'est pas integer car il sert aussi pour la division kWh et m3
initial_value: "0"
switch:
- platform: gpio
pin: GPIO32
id: gpio_led_Red_gazpar
binary_sensor:
- platform: gpio
pin: 34
name: "gazpar_counter_state"
on_press:
then:
- lambda: |-
// allume la led apres impulsion gazpar (pour un delay)
id(loops_delay_gazpar_red_led) = 10;
id(gpio_led_Red_gazpar).turn_on();
// increment le compteur gazpar puis publish mqtt
id(gazpar_pulse_counter) += 1;
id(gazpar_counter_pulse).publish_state(id(gazpar_pulse_counter));
id(gazpar_counter_kwh).publish_state(id(gazpar_pulse_counter)/10);
id(gazpar_counter_m3).publish_state(id(gazpar_pulse_counter)/100);
sensor:
- platform: template
name: "gazpar_counter_pulse"
id: gazpar_counter_pulse
unit_of_measurement: 'dal'
accuracy_decimals: 0 # Précision en entiers
icon: "mdi:counter"
#update_interval: 5s # Mise à jour sur changement de valeur
- platform: template
name: "gazpar_counter_kwh"
id: gazpar_counter_kwh
unit_of_measurement: 'kWh'
accuracy_decimals: 3 # Précision en entiers
icon: "mdi:counter"
- platform: template
name: "gazpar_counter_m3"
id: gazpar_counter_m3
unit_of_measurement: 'm3'
accuracy_decimals: 3 # Précision en entiers
script:
- id: increment_and_toggle
then:
- lambda: |-
// clignotement de la led loop (visualisation de la charge CPU par exemple)
if (id(loops_counter) >= id(Led_loop_white_xs).state) {
id(loops_counter) = 0;
id(Led_loop_white_io).toggle();
}
// delay pour la led gazpar (s'allume après impulsion pendant un nombre défni de loop)
if (id(loops_delay_gazpar_red_led) > 0) {
id(loops_delay_gazpar_red_led) -=1;
} else {
id(gpio_led_Red_gazpar).turn_off();
}
Salut et merci beaucoup, c’est exactement ce que je cherchais, car le pulse_meter permet de mesurer des fréquences très élevées (et donc des parasites). Je ne suis pas sûr que le filtre qu’il propose soit efficace, je suis monté à 300 ms et toujours le problème.
Je teste ce soir et vous redis.
A+