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 |