DS18B20 ESPHOME plus reconnues

Bonjour,

Mon problème

j’ai 3 sondes Dallas de longeurs différentes connectées sur une ESP32 via 2 petit terminal comme cela, le tout acheté chez Ali cette hivers

et donc deux oneWire,

voila le code de l’esp

substitutions:
  valve_operating_time: 10s
  default_update_interval : 10s
  update_interval_temperature_measurement: 10s
  update_interval_distance_measurement: 1s

esphome:
  name: gestion-bassin-et-puits
  friendly_name: Gestion bassin et puits

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "VZLuI8t3hcPWYbC0xi8//W+Hy0L0hoFNy6uN1Gc+gBQ="

ota:
  - platform: esphome
    password: "504ebc732d2c67fa02c0f2a3034ac9d5"

external_components:
  - source: github://dentra/esphome-components
backup:

wifi:
  networks:
  - ssid: !secret wifi_ssid_1
    password: !secret wifi_password_1
  - ssid: !secret wifi_ssid_2
    password: !secret wifi_password_2
  - ssid: !secret wifi_ssid_3
    password: !secret wifi_password_3  
  - ssid: !secret wifi_ssid_4
    password: !secret wifi_password_4  
  power_save_mode: none

    # Optional manual IP
  manual_ip:
    static_ip: 192.168.1.17
    gateway: 192.168.1.254
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Gestion-Bassin-Et-Puits"
    password: "i5shqqZHcZpA"

captive_portal:

web_server:

#improv_serial:

# Status LED
light:
  - platform: status_led
    name: "LED PCB"
    restore_mode: ALWAYS_OFF
    pin:
      number: GPIO23

# 8 relay outputs, exposed as switches in Home Assistant
switch:

  # relais 1
  - platform: gpio
    pin: GPIO32 
    name: Ouverture vanne 1
    id: valve_1_open
    internal: true

  # relais 2  
  - platform: gpio
    pin: GPIO33 
    name: Fermeture vanne 1
    id: valve_1_close
    internal: true

  # relais 3  
  - platform: gpio
    pin: GPIO25
    name: Ouverture vanne 2
    id: valve_2_open
    internal: true

  # relais 4      
  - platform: gpio
    pin: GPIO26
    name: Fermeture vanne 2
    id: valve_2_close
    internal: true

  # relais 5     
  - platform: gpio
    pin: GPIO27
    name: Pompe puits
    id: relay5

  # relais 6      
  - platform: gpio
    pin: 
      number: GPIO14
      inverted: true
    name: Pompe bassin
    id: relay6
    disabled_by_default : true

   # relais 7     
  - platform: gpio
    pin: GPIO12
    name: Aérateur Local technique
    id: relay7

  # relais 8      
  - platform: gpio
    pin: GPIO13
    name: Chauffage eau poullailler
    id: relay8

  # restart
  - platform: restart
    name: "Redémarrage"

# Association sondes de température / ESP32 

# GPIO du bus one wire pour les sondes de température

one_wire:

  - platform: gpio
    pin: GPIO16
  #   id: one_wire_1

  # - platform: gpio
  #   pin: GPIO19
  #   id: one_wire_2


i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true
  id: bus_a


sensor:

  # Sonde de niveau puits

  - platform: ina219 #https://community.home-assistant.io/t/esphome-water-level-sensor/126504/482
    address: 0x40
    shunt_resistance: 0.1 ohm
    current:
      name: "INA219 Current"
      id: raw_current
      accuracy_decimals: 2
      filters:
        - multiply: 1000  # conversion to mA
      unit_of_measurement: mA
    bus_voltage:
      name: "INA219 Bus Voltage"
      accuracy_decimals: 2
    shunt_voltage:
      name: "INA219 Shunt Voltage"
      accuracy_decimals: 2
      filters:
        - multiply: 1000  # conversion to mV
      unit_of_measurement: mV
    max_voltage: 32.0V
    max_current: 3.2A
    update_interval: 5s

  - platform: template
    name: Niveau eau puits
    unit_of_measurement: cm
    accuracy_decimals: 0
    update_interval: 10s
    id: water_level
    filters:
      - skip_initial: 3
    lambda: |-
      float current = id(raw_current).state;
      float curent_for_zero = 5.00; // courant lu sur HA à sec
      float current_by_cm = 0.037; // courant moyen par cm d'eau (calculé sur base de mesures à 0.5m / 1m / 1.5m et 2m)

      if ( current < curent_for_zero )  
        {
        return 0;  // Sonde 4-20 mA -> si courant inférieur à 4 ma = sonde HS ou déconnectée
        }
      else  
        {
        return (current - curent_for_zero) / current_by_cm;
        }  

  - platform: template
    name: "Volume d'eau total du puits"
    id: wellTotalWaterVolume
    state_class: "measurement"
    unit_of_measurement: "L"
    accuracy_decimals: 0
    icon: "mdi:waves"
    lambda: |-
      if (id(water_level).state != NAN) 
        {
        float wellRadius = 0.50; // rayon du puits en m

        float cur_water_level = id(water_level).state / 100;  // hauteur d'eau en m
        
        return 3.14159 * (wellRadius*wellRadius) * cur_water_level * 1000;  // Volume en litre
        } 
      else 
        {
        return 0;
        }
    update_interval: ${update_interval_distance_measurement}

  - platform: template
    name: "Volume d'eau utile du puits"
    id: wellUsfulllWaterVolume
    state_class: "measurement"
    unit_of_measurement: "L"
    icon: "mdi:waves"
    accuracy_decimals: 0
    lambda: |-
      if (id(water_level).state ) 
        {
        float cur_water_level = id(water_level).state / 100;  // hauteur d'eau en m

        float pumpSecurityLevel = 0.40; // hauteur d'eau minimum pour le pompage en m

        if (cur_water_level > pumpSecurityLevel)
          {
          float wellRadius = 0.50; // rayon du puits en m

          float water_level_usefull = cur_water_level - pumpSecurityLevel; // hauteur d'eau utile

          return 3.14159 * (wellRadius*wellRadius) * water_level_usefull * 1000;  // Volume utile en litre
          }
        else
          {
          return 0;
          }
        } 
      else 
        {
        return 0;
        }
    update_interval: ${update_interval_distance_measurement}       

  - platform: template
    name: "Taux de remplissage puits"
    unit_of_measurement: "%"
    accuracy_decimals: 0
    state_class: "measurement"
    lambda: |-
      if (id(water_level).state != NAN) 
        {
        float cur_water_level = id(water_level).state / 100;  // hauteur d'eau en m
        
        float max_well_water_level = 5;  // hauteur d'eau max du puits en m

        float min_well_water_level = 0.4;  // hauteur d'eau minimum pour le pompage en m

        //float percentage = 100.0 * (1.0 - (cur_water_level - max_well_water_level) / (min_well_water_level - max_well_water_level));
        float percentage = (100.0 * cur_water_level) / max_well_water_level;

        if (percentage < 0) 
          {
          return 0.0;
          }
        else if (percentage > 100) 
          {
          return 100.0;
          }
        
        return percentage;
        } 
      else 
        {
        return 0;
        }
    update_interval: ${update_interval_distance_measurement}

  # Sonde de température + humidité local technique

  - platform: dht
    pin: GPIO18
    temperature:
      name: "Température local technique"
      accuracy_decimals: 2
    humidity:
      name: "Humidité local technique"
    update_interval: ${update_interval_temperature_measurement}

  # Sonde de température eau du puits
  - platform: dallas_temp
    address: 0x5800000036de9d28
    name: "Température puits"
    resolution: 12
    accuracy_decimals: 2
    update_interval: ${update_interval_temperature_measurement}
  #   one_wire_id: one_wire_2

  # # Sonde de température eau du puits
  # - platform: dallas_temp
  #   address: 0xc700000059a9d928
  #   name: "Température bassin"
  #   resolution: 9
  #   accuracy_decimals: 2
  #   update_interval: ${update_interval_temperature_measurement}
  #   one_wire_id: one_wire_1

  # # Sonde de température eau du puits
  # - platform: dallas_temp
  #   address: 0x150000003582fb28
  #   name: "Température Extérieure"
  #   resolution: 9
  #   accuracy_decimals: 2
  #   update_interval: ${update_interval_temperature_measurement}
  #   one_wire_id: one_wire_1



  # WiFi Signal     
  - platform: wifi_signal
    name: "Signal WIFI"
    id: wifisignal
    update_interval: ${default_update_interval}    

      
  # Temps de fonctionnement
  - platform: uptime
    name: "Allumé depuis (s)"
    id: uptime_sec
    internal: true


binary_sensor:

  # Flotteur: Niveau haut bassin
  - platform: gpio
    pin: 
      number: GPIO004
      mode:
        input: true
        pullup: true
    name: "Niveau haut bassin"
    filters:
      - delayed_on: 10ms

  # Flotteur: Niveau critique FAG (UVC risque d'etre hors d'eau) 
  - platform: gpio
    pin: 
      number: GPIO005
      mode:
        input: true
        pullup: true
    name: "Niveau critique FAG"
    filters:
      - delayed_on: 10ms


  # Flotteur: FAG colmaté
  - platform: gpio
    pin: 
      number: GPIO002
      mode:
        input: true
        pullup: true
    name: "FAG colmaté"
    filters:
      - delayed_on: 10ms

# Transformation des secondes en jours
text_sensor:

  - platform: template
    name: "Etat sonde niveau d'eau"
    lambda: |-
      float current = id(raw_current).state;

      if (current > 4.90)
        {
        return {"OK"};  
        }          
      else
        {
        return {"ERREUR"};  
        }
    icon: mdi:gauge-empty
    update_interval: ${default_update_interval}    

  - platform: template
    name: "Allumé depuis (j)"
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };          
    icon: mdi:clock-start
    update_interval: ${default_update_interval}    
   
  - platform: wifi_info
    ip_address:
      name: ESP IP Address
    ssid:
      name: ESP Connected SSID
    mac_address:
      name: ESP Mac Wifi Address
    scan_results:
      name: ESP Latest Scan Results
    dns_address:
      name: ESP DNS Address 

valve:

  # Vanne arrivée eau du puits

  - platform: template
    name: "Vanne Puits"
    device_class: water
    id: valve_water_well
    restore_mode: RESTORE

    open_action:
      - switch.turn_off: valve_1_close # on coupe l'autre relais au cas ou une manoeuvre est en cours
      - switch.turn_on: valve_1_open
      - delay: ${valve_operating_time}
      - switch.turn_off: valve_1_open
    close_action:
      - switch.turn_off: valve_1_open # on coupe l'autre relais au cas ou une manoeuvre est en cours
      - switch.turn_on: valve_1_close
      - delay: ${valve_operating_time}
      - switch.turn_off: valve_1_close
    optimistic: true


  # Vanne départ eau du puits vers la maisson

  - platform: template
    name: "Vanne EDP"
    device_class: water
    id: valve_water_to_home
    restore_mode: RESTORE

    open_action:
      - switch.turn_off: valve_2_close # on coupe l'autre relais au cas ou une manoeuvre est en cours
      - switch.turn_on: valve_2_open
      - delay: ${valve_operating_time}
      - switch.turn_off: valve_2_open
    close_action:
      - switch.turn_off: valve_2_open # on coupe l'autre relais au cas ou une manoeuvre est en cours
      - switch.turn_on: valve_2_close
      - delay: ${valve_operating_time}
      - switch.turn_off: valve_2_close
    optimistic: true



tout fonctionnait et bim plus rien sur aucune des 3 sondes…

j’ai tenter de mettre qu’une sont sur un term/onewire, puis sur l’autre mais rien, les sonde ne sont plus détectées

pour info les terminaus sont alimenter en 5V, la plage de ces dernier (et des sonde etant 3,3v - 5V)

j’ai tenter de changer de pin sur l’esp mais idem

Est-ce met 3 sondes on cramée ? ce serais etonnant d’autant qu’elle sont depusi l’achat en test dans mon bureau.

je seiche la, si quelqu’un à une idée ou un test que je peu faire pour voir d’ou vien le feu

Ma configuration


System Information

version core-2025.1.4
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.13.1
os_name Linux
os_version 6.6.62-haos-raspi
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.1
Stage running
Available Repositories 1649
Downloaded Repositories 12
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 14.2
update_channel stable
supervisor_version supervisor-2025.04.0
agent_version 1.6.0
docker_version 27.2.0
disk_total 109.3 GB
disk_used 22.4 GB
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Mosquitto broker (6.4.1), Zigbee2MQTT (2.0.0-1), Samba Backup (5.2.0), Terminal & SSH (9.16.0), Studio Code Server (5.18.4), ESPHome Device Builder (2024.12.2), Frigate (0.15.0)
Dashboards
dashboards 2
resources 7
views 7
mode storage
Recorder
oldest_recorder_run 12 mars 2025 à 14:53
current_recorder_run 8 avril 2025 à 06:03
estimated_db_size 4347.18 MiB
database_engine sqlite
database_version 3.47.1

Bonjour,

Essaye avec ça :

esphome:
  name: gestion-bassin-et-puits
  friendly_name: Gestion bassin et puits

esp32:
  board: esp32dev

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "VZLuI8t3hcPWYbC0xi8//W+Hy0L0hoFNy6uN1Gc+gBQ="

ota:
  - platform: esphome
    password: "504ebc732d2c67fa02c0f2a3034ac9d5"

wifi:
  - ssid: !secret wifi_ssid_1
    password: !secret wifi_password_1
  - ssid: !secret wifi_ssid_2
    password: !secret wifi_password_2
  - ssid: !secret wifi_ssid_3
    password: !secret wifi_password_3  
  - ssid: !secret wifi_ssid_4
    password: !secret wifi_password_4  

captive_portal:
    
one_wire:
  - platform: gpio 
    pin: GPI16
    id: temp


sensor:
  - platform: dallas_temp
    one_wire_id: temp
    address: 0x5800000036de9d28
    name: "Température puits"
    accuracy_decimals: 1
    update_interval: 30s
    filters:
      - offset: 0

  - platform: dallas_temp
    one_wire_id: temp
    address: 0xc700000059a9d928
    name: "Température bassin"
    accuracy_decimals: 1
    update_interval: 30s
    filters:
      - offset: 0    

  - platform: dallas_temp
    one_wire_id: temp
    address: 0x150000003582fb28
    name: "Température Extérieure"
    accuracy_decimals: 1
    update_interval: 30s
    filters:
      - offset: 0    

button:
  - platform: restart
    name: "Restart"

web_server:
  port: 80

hello

c’est idem

[08:35:05][C][gpio.one_wire:020]: GPIO 1-wire bus:
[08:35:05][C][gpio.one_wire:021]: Pin: GPIO16
[08:35:05][W][gpio.one_wire:078]: Found no devices!