Bonjour,
Débutant sur HA, que j’utilise pour programmer des ESP32 via ESPHOME, j’essaye de remplacer une carte d’un congélateur défectueuse par esp32,sonde dallas et module relais.
En avançant progressivement (et lentement), j’ai bien la température de la sonde qui remonte, j’arrive à faire commuter le relais, via un switch virtuel sur HA, mais quand je tente l’automatisation avec la fonction « climate »…je m’y perds! (la température cible est à 22°C pour les tests uniquement!
Pour mes recherches, je me suis aidé de:
https://forum.hacf.fr/t/depannage-dun-frigo-avec-esphome/5554/9
https://forum.hacf.fr/t/hysteresis-thermostat-de-refrigerateur/14665/3
Quelqu’un pourrait il m’expliquer mon erreur, sachant que j’avais à l’idée que « climate » changerait l’état du switch virtuel et donc l’alimentation du relais, mais rien ne se passe.
Enfin faut-il initialiser le démarrage pour savoir dans quel état est le relais et/ou le switch virtuel?
Merci de votre aide.
esphome:
name: esp32-c1
friendly_name: esp32 C1
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "Evwu8rUDOQQLcMbQOjCd5O5c7oawjMpmsEoH3OYiiK4="
ota:
- platform: esphome
password: "325062a1a5bd34ba415bc6deed67f6c9"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp32-C1 Fallback Hotspot"
password: "8lHMgykZHqpR"
#déclaration bus 1-wire pour sonde dallas
one_wire:
- platform: gpio
pin: GPIO16
id: bus_ds18b20_1
#déclaration des capteurs
sensor:
- platform: dallas_temp
one_wire_id: bus_ds18b20_1
name: "Température Dallas 1"
id: temp_dallas_1
resolution: 12
update_interval: 30s
#création d'un bouton virtuel
switch:
- platform: output
output: relais
name: "switch relais"
id: switch_relais
#Définition des actionneurs
output:
- id: relais
platform: gpio
pin: 13
climate:
- platform: thermostat
name: "Thermostat Climate Controller"
sensor: temp_dallas_1
min_cooling_off_time: 30s
min_cooling_run_time: 30s
min_idle_time: 30s
cool_action:
- switch.turn_on: switch_relais
idle_action:
- switch.turn_off: switch_relais
default_preset: Home
preset:
- name: Home
default_target_temperature_high: 22 °C
[center]## System Information
| version |
core-2025.1.0 |
| 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.66-haos |
| arch |
x86_64 |
| timezone |
Europe/Paris |
| config_dir |
/config |
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.1 |
| update_channel |
stable |
| supervisor_version |
supervisor-2025.11.4 |
| agent_version |
1.6.0 |
| docker_version |
27.2.0 |
| disk_total |
30.8 GB |
| disk_used |
7.2 GB |
| healthy |
true |
| supported |
true |
| host_connectivity |
true |
| supervisor_connectivity |
true |
| ntp_synchronized |
true |
| virtualization |
oracle |
| board |
ova |
| supervisor_api |
ok |
| version_api |
ok |
| installed_addons |
ESPHome Device Builder (2024.12.2) |
Dashboards
| dashboards |
2 |
| resources |
0 |
| views |
1 |
| mode |
storage |
Recorder
| oldest_recorder_run |
6 janvier 2025 à 16:42 |
| current_recorder_run |
23 novembre 2025 à 11:51 |
| estimated_db_size |
5.16 MiB |
| database_engine |
sqlite |
| database_version |
3.47.1 |
[/center]
[19:02:00][D][dallas.temp.sensor:054]: 'Température Dallas 1': Got Temperature=19.0°C
[19:02:00][D][sensor:094]: 'Température Dallas 1': Sending state 19.00000 °C with 1 decimals of accuracy
[19:02:00][D][climate:396]: 'Thermostat Climate Controller' - Sending state:
[19:02:00][D][climate:399]: Mode: OFF
[19:02:00][D][climate:401]: Action: OFF
[19:02:00][D][climate:410]: Preset: HOME
[19:02:00][D][climate:419]: Current Temperature: 19.00°C
[19:02:00][D][climate:425]: Target Temperature: 22.00°C
[19:02:00][W][component:237]: Component dallas_temp.sensor took a long time for an operation (56 ms).
[19:02:00][W][component:238]: Components should block for at most 30 ms.
[19:02:06][D][esp32.preferences:114]: Saving 1 preferences to flash...
[19:02:06][D][esp32.preferences:143]: Saving 1 preferences to flash: 1 cached, 0 written, 0 failed
[19:02:30][D][dallas.temp.sensor:054]: 'Température Dallas 1': Got Temperature=20.9°C
[19:02:30][D][sensor:094]: 'Température Dallas 1': Sending state 20.93750 °C with 1 decimals of accuracy
[19:02:30][D][climate:396]: 'Thermostat Climate Controller' - Sending state:
[19:02:30][D][climate:399]: Mode: OFF
[19:02:30][D][climate:401]: Action: OFF
[19:02:30][D][climate:410]: Preset: HOME
[19:02:30][D][climate:419]: Current Temperature: 20.94°C
[19:02:30][D][climate:425]: Target Temperature: 22.00°C
[19:02:30][W][component:237]: Component dallas_temp.sensor took a long time for an operation (56 ms).
[19:02:30][W][component:238]: Components should block for at most 30 ms.
[19:03:00][D][dallas.temp.sensor:054]: 'Température Dallas 1': Got Temperature=23.0°C
[19:03:00][D][sensor:094]: 'Température Dallas 1': Sending state 23.00000 °C with 1 decimals of accuracy
[19:03:00][D][climate:396]: 'Thermostat Climate Controller' - Sending state:
[19:03:00][D][climate:399]: Mode: OFF
[19:03:00][D][climate:401]: Action: OFF
[19:03:00][D][climate:410]: Preset: HOME
[19:03:00][D][climate:419]: Current Temperature: 23.00°C
[19:03:00][D][climate:425]: Target Temperature: 22.00°C
Je retente mes essais. Dans ce log, la current temp passe bien au-dessus de la target temp, mais je n’ai pas de changement d’état du relais.
En passant par HA, j’ai eu un changement d’état…mais le visuel permet uniquement une consigne entre 10 et 30°C, ce qui ne va pas pour un frigo et j’aimerais que la consigne soit en dure dans l’ESP32, sans passer par HA (sauf pour un changement de consigne)
Bonjour,
Personne n’aurait de suggestions à mon soucis?
Merci de votre aide
Salut
Chez moi j’utilise les presets comme ça
climate:
- platform: thermostat
name: "Radiateur Fourmi "
sensor: temperature_sensor
min_idle_time: 0s
min_heating_off_time: 0s
min_heating_run_time: 0s
heat_deadband: 0.2
heat_overrun: 0.2
default_preset: Chauffage Jour
on_boot_restore_from: memory
preset:
- name: Chauffage Jour
default_target_temperature_low: ${tempMax} °C
- name: Chauffage Nuit
default_target_temperature_low: ${tempMoy} °C
- name: Diapose
default_target_temperature_low: ${tempMin} °C
visual:
min_temperature: 10
max_temperature: 30
temperature_step: 0.1
heat_action:
- switch.turn_on: heater
idle_action:
- switch.turn_off: heater
output:
- platform: gpio
pin: GPIO5
id: 'heater_out'
switch:
- platform: output
output: 'heater_out'
id: heater
name: "Fourmi Chauffage"
sensor:
- platform: dallas_temp
address: 0x2f3ca4f649052628
name: "Sonde Fourmi Temperature"
id: temperature_sensor
unit_of_measurement: "°C"
state_class: "measurement"
accuracy_decimals: 1
filters:
- round_to_multiple_of: 0.1
one_wire:
- platform: gpio
pin: GPIO4
Et pour les valeurs en dur
substitutions:
tempMax: '26.0'
tempMoy: '22.0'
tempMin: '10.0'
Bonjour @gillout,
J’ai conçu une cave à vin avec un vieux frigo.
J’utilise des lambda sur les capteurs de température.
Il faut créer un input_number pour la consigne cave dans HA.
Je te laisse adapder les id et adresses :
esphome:
name: esphome-web-a2c734
friendly_name: ESP32_Cave
on_boot:
then:
- number.set:
id: rst_dif_cons_cave
value: 0
- delay: 60s
- number.set:
id: rst_dif_cons_cave
value: 1
esp32:
board: esp32dev
framework:
type: esp-idf
# Enable logging
logger:
level: DEBUG
# Enable Home Assistant API
api:
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.1.2
gateway: 192.168.1.254
subnet: 255.255.255.0
# Set up a wifi access point
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap: {}
captive_portal:
# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
esp32_improv:
authorizer: none
# To have a "next url" for improv serial
web_server:
local: true
port: 80
auth:
username: !secret visit_esp_ssid
password: !secret visit_esp_password
one_wire:
- platform: gpio
pin: GPIO23
number:
- platform: template
#Permet de relancer les conditions dif_cons_cave.
name: "rst_dif_cons_cave"
optimistic: True
min_value: 0
max_value: 1
step: 1
id: rst_dif_cons_cave
sensor:
- platform: dallas_temp
update_interval: 5s
address: 0xB1011453221CAA28
name: "Temp_Cave"
id: Temp_Cave
- platform: dallas_temp
update_interval: 5s
address: 0xf00416588452ff28
name: "Temp_Congel"
id: Temp_Congel
- platform: dallas_temp
update_interval: 5s
address: 0xB60114531D2BAA28
name: "Temp_Garage"
id: Temp_Garage
- platform: homeassistant
id: consigne_cave
entity_id: input_number.consigne_cave
# Dif température consigne - cave
- platform: template
name: "Dif consigne cave"
id: dif_cons_cave
icon: mdi:thermometer
unit_of_measurement: "°C"
accuracy_decimals: 2
lambda: |-
return (((id(Temp_Cave).state - id(consigne_cave).state)) * id(rst_dif_cons_cave).state);
on_value_range:
- below: -0.25
then:
- delay:
seconds: 30
- switch.turn_off: relais_frigo
- above: -0.2
below: 0.75
then:
- switch.turn_off: relais_frigo
- above: 0.8
then:
- delay:
seconds: 30
- switch.turn_on: relais_frigo
update_interval: 5s
switch:
- platform: gpio
name: "Frigo"
pin: GPIO18
id: relais_frigo
Je l’ai adapté pour ton cas. Car le code que j’ai créé à deux relais, un pour refroidir l’été et un autre pour réchauffer l’hiver.
Ca fonctionne très bien depuis des années chez moi.
Tiens nous au courant.
Merci je garde sous le coude…j’ai du passer sur un projet pro!