Besoin d'aide pour programme sur un ESP32Wroom32D

Bonjour a tous

J’ai domotiser mon adoucisseur, il y a quelque temps avec un Shelly uni ou je récupère la position service de l’appareil et les fuites au rejet de mon adoucisseur. Sa fonctionne plutôt bien (sauf que le shelly perd sa connexion au réseau de temps en temps).

Je souhaite maintenant passer sur un ESP32, car je veux regrouper mes deux contact cycle et fuite et y joindre un capteur a effet hall (compteur eau adoucie) et une sonde de température.
Je débute sur ESPHome, malgré avoir cherché sur Google et sur le forum hacf je n’ai pas trouvé ce qu’il faut pour y arriver.

Actuellement :
le capteur à effet hall est branché sur GPIO23 et le 3,3V
la sonde de température est branché sur GPIO35 et le 3,3V

le premier Micro Switch servira pour mon adoucisseur a m’indiquer la position service.
une Led Bleu indiquera que l’appareil est en nettoyage
le second micro switch servira pour indiquer une fuite au rejet
Une Led Rouge indiquera qu’il y a un écoulement d’eau au rejet

1er problème :

  • Pouvez vous me confirmer le raccordement sur ESP ? (pour éviter de tous flamber…)
    pas bien… :grimacing:
    Je ne suis pas électronicien, donc les valeurs de résistances sont celle que j’ai utilisé.
    (je n’ai que des 10Kohm ou des 330 ohm) Mais si une autre valeur est necessaire je les commanderais.

2eme problème :

  • Pouvez vous m’aider pour le code que je dois ajouter a mon code existant

J’ai essayé d’ajouter le code suivant a mon code existant , mais ce n’est pas bon.
Les leds ne s’allume pas
J’ai des erreurs sur les lignes marque de #*# quand je vérifie le code par esphome(validate)

# Définition du bouton physique Cycle adoucisseur

  - platform: gpio
    name: "esp1_cycle_adoucisseur"
    pin:
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
#*#    on_press:
#*#      then:
#*#        - switch.turn_on: esp1_cycle_led_bleu 
#*#    on_release:
#*#      then:
#*#        - switch.turn_off: esp1_cycle_led_bleu

# Définition du bouton physique fuite rejet

  - platform: gpio
    name: "esp1_debit_rejet_adoucisseur"
    pin:
      number: GPIO13
      mode: INPUT_PULLUP
      inverted: True
#*#   on_press:
#*#      then:
#*#        - switch.turn_on: esp1_fuite_led_rouge 
#*#    on_release:
#*#      then:
#*#        - switch.turn_off: esp1_fuite_led_rouge   


# LEDs  Cycle et fuite (D18 et D19)

  - platform: gpio
    name: "esp1_cycle_led_bleu"
    pin: 
      number: GPIO18
    id: esp1_cycle_led_bleu
#*#    restore_mode: RESTORE_DEFAULT_ON
    
  - platform: gpio
    name: "esp1_fuite_led_rouge"
    pin: 
      number: GPIO19
    id: esp1_fuite_led_rouge
#*#    restore_mode: RESTORE_DEFAULT_ON

Voici le message erreur

Merci pour votre aide

Salut Pascal,

Connaissant un peu l’historique de ton sujet je te propose le code ci-dessous. Comme je ne suis pas maître en matière d’ESP, il est probable qu’il y ai des coquilles…

Sinon voilà mes sources :

le code :

esphome:
  name: "esphome-test-adoucisseur"

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

####################################
## WIFI                            #
####################################
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp1-WebAdmin"
    password: "admin"

captive_portal:



####################################
## Switch definition               #
####################################
switch:
  - platform: gpio
    pin: GPIO18
    name: "esp1_cycle_led_bleu"
    id: id_esp1_cycle_led_bleu

  - platform: gpio
    pin: GPIO19
    name: "esp1_fuite_led_rouge"
    id: id_esp1_fuite_led_rouge


####################################
## Sensors definition              #
####################################
sensor:
  - platform: pulse_meter
    pin: GPIO23
    name: "Waterpump-Litres per min"
    id: sensor_waterpump_litres_per_min
    unit_of_measurement: "L/min"
    timeout: 10s
    filters:
      - multiply: 0.001818  # => A vérifier en fonction du nombre de pulse de la turbine par litre

    total:
      name: "Waterpump-Litres Total"
      unit_of_measurement: "L"
      accuracy_decimals: 3
      filters:
        - multiply: 0.001818  # => A vérifier en fonction du nombre de pulse de la turbine par litre

  - platform: adc
    pin: GPIO35
    name: “Waterpump-Temperature Raw Volts"
    id: waterpump_temperature_raw_volts
    update_interval: 15s
    accuracy_decimals: 5
    attenuation: auto

  - platform: resistance
    sensor: waterpump_temperature_raw_volts
    configuration: DOWNSTREAM
    resistor: 10kOhm    # => A vérifier en fonction de la résistance ajouté à ton circuit pour le pont diviseur de tension
    reference_voltage: 3.3V
    name: "Waterpump-Resistance Sensor"
    id: waterpump_temperature_resistance_sensor

  - platform: ntc
    sensor: waterpump_temperature_resistance_sensor
    calibration:
      b_constant: 3950 # => A vérifier
      reference_temperature: 25°C # => A vérifier en fonction de ta sonde de température
      reference_resistance: 47kOhm # => A vérifier en fonction de ta sonde de température
    name: "Waterpump-Temperature NTC"
    id: waterpump_temperature_ntc



####################################
## Binary sensors definition       #
####################################
binary_sensor:
  - platform: template
    name: “Waterpump is Flowing"
    id: template_isflowing
    lambda: |-
     if (id(sensor_waterpump_litres_per_min).state > 0) {
       // Water flowing
       return true;
     } else {
       // Water not flowing
       return false;
     }

  - platform: gpio
    pin:
      number: GPIO14
      inverted: true
      mode:
        input: true
        pullup: true
    name: "esp1_cycle_adoucisseur"
    device_class: None
    on_press:
      then:
        - switch.turn_on: id_esp1_cycle_led_bleu
    
  - platform: gpio
    pin:
      number: GPIO13
      inverted: true
      mode:
        input: true
        pullup: true
    name: "esp1_debit_rejet_adoucisseur"
    device_class: None
    on_press:
      then:
        - switch.turn_on: id_esp1_fuite_led_rouge









Sinon coté câblage à voir mais je crois qu’il faut que le capteur a effet hall soit alimenté en 5V sinon celui-ci ne fonctionne pas. Ce qui me fait pensé qu’il serait judicieux de regarder la tension en sortie du capteur pour être certain que ce soit autour de 3.3V.

Actuellement il ne fonctionne déjà pas ou plus… :scream:
Mais je vais attendre que tu fasse un essai, je dois en recommander un nouveau ou mettre un vrai compteur a impulsion (1 impulsion/1 litres)

Pour les leds j’ai enfin trouvé voici le code que j’ai mis :
(La led bleu est devenu jaune…J’avais pas de bleu :roll_eyes:)

# Définition du bouton physique Cycle adoucisseur
  - platform: gpio
    name: "esp1_cycle_adoucisseur"
    pin:
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
    on_press:
      then:
        - output.turn_on: esp1_cycle_led_jaune_output
         
    on_release:
      then:
        - output.turn_off: esp1_cycle_led_jaune_output
        

# Définition du bouton physique fuite rejet
  - platform: gpio
    name: "esp1_debit_rejet_adoucisseur"
    pin:
      number: GPIO13
      mode: INPUT_PULLUP
      inverted: True
    on_press:
      then:
        - output.turn_on: esp1_fuite_led_rouge_output 
    on_release:
      then:
        - output.turn_off: esp1_fuite_led_rouge_output  


# Leds  cycle et fuite (D18 et D19)
# Switch test led
light:
  - platform: binary
    name: "esp1_cycle_led_jaune_switch"
    output: esp1_cycle_led_jaune_output
  
  - platform: binary
    name: "esp1_fuite_led_rouge_switch"
    output: esp1_fuite_led_rouge_output  

# Sortie Leds GPIO 18 & 19
output:
  - id: esp1_cycle_led_jaune_output
    platform: gpio
    pin: GPIO18

  - id: esp1_fuite_led_rouge_output
    platform: gpio
    pin: GPIO19


voici le resultat en montage provisoire :

1 « J'aime »