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: '/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.