Hi, I got stuck with the configuration of smart heating.
What do I have:
- Working Zigbee Home Automation.
- Connected a few Tuya TS0601 / Moes HY386 type1 radiator valves. Added as devices to the integration.
- Relay on ESPHome to turn ON/OFF heater.
- Each radiator valve has state:
hvac_modes:
- heat
min_temp: 5
max_temp: 35
preset_modes:
- none
- away
- schedule
- comfort
- eco
- boost
- complex
current_temperature: 22
temperature: 5
hvac_action: idle
preset_mode: none
system_mode: '[4]/heat'
occupancy: 1
occupied_heating_setpoint: 500
unoccupied_cooling_setpoint: 1500
friendly_name: Bedroom Yourik radiator valve thermostat
supported_features: 17
What do I want to have:
If temperature on radiator valve goes below threshold - it opens and also it starts heater. So each room can have itâs own temperature and I warm only rooms I need.
How I was trying to solve this:
- Generic thermostat.
climate:
- platform: generic_thermostat
name: Yourik Bedroom manual thermostat
heater: device_tracker.e8_db_84_ae_2a_b0
target_sensor: climate.bedroom_yourik_radiator_thermostat
min_temp: 10
max_temp: 30
ac_mode: false
target_temp: 18
cold_tolerance: 0.3
hot_tolerance: 0
min_cycle_duration:
seconds: 5
keep_alive:
minutes: 3
initial_hvac_mode: "idle"
away_temp: 16
precision: 0.1
this makes an error in logs - Unable to update from sensor: could not convert string to float: âheatâ
So it doesnât seem to be a good idea.
-
Automation using created devices
Goal - if I receive change state from any radiator valve I compare temperature against current_temperature and execute script with heater on or off.
alias: Heater ON-T
description: ''
trigger:
- platform: state
entity_id: climate.bedroom_yourik_radiator_thermostat
- platform: state
entity_id: climate.bathroom_radiator_thermostat
condition:
- condition: or
conditions:
- condition: template
value_template: >-
states(''climate.bedroom_yourik_radiator_thermostat.temperature'')|int
>
states(''climate.bedroom_yourik_radiator_thermostat.current_temperature'')|int
- condition: template
value_template: >-
states(''climate.bathroom_radiator_thermostat.temperature'')|int
>
states(''climate.bathroom_radiator_thermostat.current_temperature'')|int
action:
- service: script.heater_turn_on
mode: single
this doesnât work. Despite of the temperature/current_temperature values - it always call the script.
-
Use automation based on HVAC_ACTION
Since hvac_action can be idle or heating
alias: Heating ON
description: ''
trigger:
- platform: state
entity_id: climate.bedroom_yourik_radiator_thermostat
attribute: hvac_action
from: idle
to: heating
for: '00:01:00'
- platform: state
entity_id: climate.bathroom_radiator_thermostat
attribute: hvac_action
from: idle
to: heating
for: '00:01:00'
condition: []
action:
- service: script.heater_turn_on
mode: single
it almost worked. But there were moments when hvac_action changes but this event is somehow not registered or temperatures changes but hvac_action is not and, correspondingly, heater doesnât go on/off.
Or I went to completely wrong direction and it is better to use MQTT integration?
So I would appreciate any advice on how to set it up.