Bonjour à tous,
Dans ma future maison, j’ai prévu un compteur d’eau à impulsion.
Je cherche donc à configurer une carte via ESPHome pour faire l’acquisition de ce simple discret.
Ca à l’air tout simple, mais je suis pas expert…
Et quoi que je fasse sur mon yaml, je n’arrive pas à faire ressortir les sensors sur Home assistant !
Voilà un extract de mon code actuel.
Sur cette carte j’avais déjà un capteur de présence, celui fonctionne toujours. j’ai bien les sensor et binary_sensor de vivant sous HA.
Mais j’essaie d’ajouter : total_pulses_ev et impulsion_ev, mais rien à faire ils ne resssortent pas sous HA…
Si quelqu’un peut m’aiguiller…
Merci !
globals:
- id: total_pulses_ev
type: int
restore_value: false
initial_value: '0' # initial value, read from power meter and divided by 0.075
binary_sensor:
- platform: ld2410
has_target:
name: Presence
has_moving_target:
name: Moving Target
has_still_target:
name: Still Target
- platform: gpio
id: impulsion_ev
pin:
number: GPIO38
mode: INPUT_PULLUP
filters:
- delayed_on: 70ms
on_press:
then:
- lambda: id(total_pulses_ev) += 1;
sensor:
- platform: ld2410
light:
name: light
moving_distance:
name : Moving Distance
still_distance:
name: Still Distance
moving_energy:
name: Move Energy
still_energy:
name: Still Energy
detection_distance:
name: Detection Distance
1 « J'aime »
Bonsoir
Je ne suis pas un expert en ESP, Mais j’ai l’impression qu’il te manque le Name pour ton compteur.
Voici mon code, si cela peut d’aider
globals:
- id: ef_pulse_counter
type: float #Le counter n'est pas integer car il sert aussi pour la division m3
initial_value: "0"
#################
# Binary Sensor #
#################
# binary sensor comptage impulsion eau froide et adoucie
binary_sensor:
# EAU FROIDE
- platform: gpio
pin:
number: GPIO32
allow_other_uses: true
mode: INPUT_PULLUP
inverted: True
filters:
- delayed_on: 50ms
- delayed_off: 50ms
name: "${friendly_name1} counter state"
id: ef_counter_state
on_press:
then:
- lambda: |-
// increment le compteur EF puis publish mqtt
id(ef_pulse_counter) += 1;
id(ef_counter_pulse).publish_state(id(ef_pulse_counter));
id(ef_counter_l).publish_state(id(ef_pulse_counter)/1);
id(ef_counter_m3).publish_state(id(ef_pulse_counter)/1000);
1 « J'aime »
Super c’est ça tout simplement.
Je pensais que l’idée suffisait…
Merci beaucoup.
et pour ton publish MQTT, ta variable ef_counter_pulse elle est définie quelque part dans ton code ?
Oui, j’ai un code pour avoir le nombre impulsion, litres et m3
# Comptage impulsion
- platform: template
name: "${friendly_name2} counter pulse"
id: ef_counter_pulse
unit_of_measurement: ''
accuracy_decimals: 0 # Précision en entiers
icon: "mdi:counter"
#update_interval: 5s # Mise à jour sur changement de valeur
# Comptage litres
- platform: template
name: "${friendly_name2} counter l"
id: ef_counter_l
unit_of_measurement: 'L'
accuracy_decimals: 0 # Précision en entiers
state_class: total_increasing
device_class: water
# Comptage m³ (utilisé pour le compteur services HA)
- platform: template
name: "${friendly_name2} counter m3"
id: ef_counter_m3
unit_of_measurement: 'm³'
accuracy_decimals: 3 # Précision en entiers
state_class: total_increasing
device_class: water
Bon je ne m’en sors pas…
Je comprends pas le comportement de ces machines.
Ci-dessous le code mon ESPhome.
J’ai bien le binary_sensor donnant le status qui remonte dans Home Assistant.
Mais le binary_sensor pour la détection d’impulsion ne remonte pas…
esphome:
name: capteurlocaltech
friendly_name: "Capteur Local Tech"
platformio_options:
board_build.extra_flags:
- "-DARDUINO_USB_CDC_ON_BOOT=0"
esp32:
board: lolin_s2_mini
framework:
type: arduino
# Enable logging
logger:
uart:
tx_pin: GPIO18
rx_pin: GPIO33
baud_rate: 256000
ld2410:
# Enable Home Assistant API
api:
encryption:
key: "xxx"
ota:
password: "xxx"
wifi:
manual_ip:
# Set this to the IP of the ESP
static_ip: xxx
# Set this to the IP address of the router. Often ends with .1
gateway: xxx
# The subnet of the network. 255.255.255.0 works for most home networks.
subnet: xxx
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Presence1 Fallback Hotspot"
password: "xxx"
binary_sensor:
- platform: gpio
pin:
number: GPIO21
mode: INPUT_PULLUP
inverted: True
name: impulsion ev
internal: true
filters:
- delayed_on: 50ms
- delayed_off: 50ms
- platform: status
name: "État de connexion à Home Assistant"
captive_portal:
Essaye de mettre des " pour le name
name: "impulsion ev"
id: impulsion_ev
Hello,
Ca y est j’ai emménagé dans ma nouvelle maison, et j’essaie de mettre en place mon compteur à impulsion.
Alors niveau ESPhome j’avais bien une acquisition de données. Mon souci est que ca comptais n’importe quoi.
J’ai mesuré à l’oscilloscope la sortie du compteur.
De base je mesure le 50Hz +/-60mV, soit contact ouvert.
Et l’impulsion j’ai bien un contact fermé donc rien du tout, 0V.
Au début dans mon code je n’avais pas les lignes:
mode: INPUT_PULLUP
inverted: True
internal: true
J’avais bien une acquisition, mais du 50Hz j’ai l’impression…
J’ai donc mis le code complet ci-dessous, et maintenant j’ai plus rien dans HA…
(Si je supprime les lignes ca re fonctionne)
=> Si quelqu’un a une idée de ce qui ne va pas… Merci !
Je pense que c’est le mode INPUT_PULLUP qui fait défaut, mais si je le mets ca ne fonctionne plus sous HA.
De plus sur cette carte S2 mini, peut-être n’y a-t-il pas de résistance de pullup ? Dans ce cas comment faire ?
esphome:
name: capteurlocaltech
friendly_name: "Capteur Local Tech"
platformio_options:
board_build.extra_flags:
- "-DARDUINO_USB_CDC_ON_BOOT=0"
esp32:
board: lolin_s2_mini
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "xxx"
ota:
- password: "xxx"
platform: esphome
wifi:
manual_ip:
# Set this to the IP of the ESP
static_ip: 192.168.1.57
# Set this to the IP address of the router. Often ends with .1
gateway: 192.168.1.1
# The subnet of the network. 255.255.255.0 works for most home networks.
subnet: 255.255.255.0
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Presence1 Fallback Hotspot"
password: ""
binary_sensor:
- platform: status
name: "État de connexion à Home Assistant"
- platform: gpio
pin:
number: GPIO21
mode: INPUT_PULLUP
inverted: True
name: "Impulsion EV"
internal: true
id: impulsion_ev
filters:
- delayed_on: 50ms
- delayed_off: 50ms
on_press:
then:
- lambda: |-
// increment le compteur EF puis publish mqtt
id(ev_pulse_counter) += 1;
id(ev_counter_pulse).publish_state(id(ev_pulse_counter));
id(ev_counter_l).publish_state(id(ev_pulse_counter)/1);
id(ev_counter_m3).publish_state(id(ev_pulse_counter)/1000);
globals:
- id: ev_pulse_counter
type: float #Le counter n'est pas integer car il sert aussi pour la division m3
initial_value: "0"
sensor:
# Comptage impulsion
- platform: template
name: "EV counter pulse"
id: ev_counter_pulse
unit_of_measurement: ''
accuracy_decimals: 0 # Précision en entiers
icon: "mdi:counter"
update_interval: 1s
# Comptage litres
- platform: template
name: "EV counter l"
id: ev_counter_l
unit_of_measurement: 'L'
accuracy_decimals: 0 # Précision en entiers
state_class: total_increasing
device_class: water
update_interval: 1s
# Comptage m³ (utilisé pour le compteur services HA)
- platform: template
name: "EV counter m3"
id: ev_counter_m3
unit_of_measurement: 'm³'
accuracy_decimals: 3 # Précision en entiers
state_class: total_increasing
device_class: water
update_interval: 1s
captive_portal:
Si ton S2 mini (que je ne connais pas, j’utilise que des ESP32-wroom) n’a pas de résistance, tu peux mettre des résistances comme ci-dessous :
https://espacerm.com/webgen/resistance-de-pull-up-et-de-pulldown/
Pour le code, j’utilise celui-ci (sur un ESP32).
#################
# 1er partie du code
# TON CODE
#################
esphome:
name: capteurlocaltech
friendly_name: "Capteur Local Tech"
platformio_options:
board_build.extra_flags:
- "-DARDUINO_USB_CDC_ON_BOOT=0"
esp32:
board: lolin_s2_mini
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "xxx"
ota:
- password: "xxx"
platform: esphome
wifi:
manual_ip:
# Set this to the IP of the ESP
static_ip: 192.168.1.57
# Set this to the IP address of the router. Often ends with .1
gateway: 192.168.1.1
# The subnet of the network. 255.255.255.0 works for most home networks.
subnet: 255.255.255.0
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Presence1 Fallback Hotspot"
password: ""
###############################
#2eme partie du code
# MON CODE SUR ESP32 VROOM
###############################
captive_portal:
##########################
# Device Specific Config
##########################
# Name device mask
substitutions:
name: Compteur ECS
friendly_name1: "Sensor ECS"
friendly_name2: "Compteur ECS"
# essai
globals:
- id: ecs_pulse_counter
type: float #Le counter n'est pas integer car il sert aussi pour la division m3
initial_value: "0"
#################
# Binary Sensor #
#################
# Binary sensor utilisé pour comptage des impulsions et Totalisateur
binary_sensor:
- platform: gpio
pin:
number: GPIO21
allow_other_uses: true
mode: INPUT_PULLUP
inverted: True
filters:
- delayed_on: 50ms
- delayed_off: 50ms
name: "${friendly_name1} counter state"
id: ecs_counter_state
on_press:
then:
- lambda: |-
// increment le compteur ECS puis publish mqtt
id(ecs_pulse_counter) += 1;
id(ecs_counter_pulse).publish_state(id(ecs_pulse_counter));
id(ecs_counter_l).publish_state(id(ecs_pulse_counter)/1);
id(ecs_counter_m3).publish_state(id(ecs_pulse_counter)/1000);
####################################
# Sensors with general information.
####################################
sensor:
##########
# sensor #
##########
# Débit d'eau instantané l/mm (0 après 10s)
# Ne pas utiliser pour comptage (comptage erroné)
- platform: pulse_meter
name: "${friendly_name1} pulse"
id: pulse_id_ecs
pin:
number: GPIO21
allow_other_uses: true
inverted: true
mode:
input: true
pullup: true
internal_filter: 100ms
icon: mdi:water
timeout: 100s
unit_of_measurement: 'L/mn'
filters:
- multiply: 1
# Comptage impulsion
- platform: template
name: "${friendly_name2} counter pulse"
id: ecs_counter_pulse
unit_of_measurement: ''
accuracy_decimals: 0 # Précision en entiers
icon: "mdi:counter"
#update_interval: 5s # Mise à jour sur changement de valeur
# Comptage litres
- platform: template
name: "${friendly_name2} counter l"
id: ecs_counter_l
unit_of_measurement: 'L'
accuracy_decimals: 0 # Précision en entiers
state_class: total_increasing
device_class: water
# Comptage m³ (utilisé pour le compteur services HA)
- platform: template
name: "${friendly_name2} counter m3"
id: ecs_counter_m3
unit_of_measurement: 'm³'
accuracy_decimals: 3 # Précision en entiers
state_class: total_increasing
device_class: water