Hi guys. Got some curious behavior.
HA (automation) switches the TRV from off to heat to off to heat…
As I changed the TRVs (Bosch to Sonoff) a few days before, I first thought, it is the new one. Looking through the logs, it also happened with the old one. I am not sure, but it looks like it happens since the last HA Update. Currently running 2025.1.4.
The automation checks on every room-temperature change if it is over or under the target temp. It switches from heat to off after the room has reached the target and switches from off to heat if the temp is under the target.
For example a is 20°C, it happens between 20°C and 21°C. If the setting is heat and the temperature is between 20 and 21 the TRV is switched to off or the other way, if it is on off. I tried to round the temp, but this does not change the behavior. It is always switching to the other setting in this 1°C range. If the room temperature in this example is over 21°C it stays off. Under 20°C it stays on heat.
I never noticed this before, so I think something has changed with 2025.1 but I don’t know what and can’t find a solution.
Maybe somebody can point me in the right direction to find the error.
We’d need to see the logic of your automation to help on this one. The full graph would be good too.
But, why use an automation as a thermostat instead of a generic thermostat integration?
I use the generic thermostat but I want to switch the TRVs to different temperatures/states depending on a schedule and if we are at home or not. The automation changed over the last 3 or 4 years but basicly it was one of my first experiments with HA. It worked flawless and did what it should.
Maybe it’s not the best or refined but it worked.
triggers: - entity_id: - sensor.wohnzimmer_temp trigger: state conditions: - condition: and conditions: - condition: state state: "off" entity_id: binary_sensor.balkontur_contact - condition: state entity_id: input_boolean.wohnzimmer_heizung state: "on" - condition: template value_template: >- {% if states('input_boolean.away_mode')=='off' %} {% if states('schedule.testkalender')=='on' %} {{ states('sensor.wohnzimmer_temp') | float < states('input_number.wohnzimmer_temperatur_tag') | float + 1 }} {% else %} {{ states('sensor.wohnzimmer_temp') | float < states('input_number.wohnzimmer_temperatur_nacht') | float + 1 }} {% endif %} {% else %} {{ (states('sensor.wohnzimmer_temp') | float) | round < states('input_number.temperatur_away_mode') | float + 1 }} {% endif %} enabled: true actions: - action: climate.set_temperature target: entity_id: climate.heizung_wohnzimmer data: temperature: | {% if states('schedule.testkalender')=='on' %} {{ states('input_number.wohnzimmer_temperatur_tag') | int + states('input_number.wohnzimmer_heizung_offset') | int }} {% else %} {{ states('input_number.wohnzimmer_temperatur_nacht') | int }} {% endif %} hvac_mode: | {% if states('input_boolean.away_mode')=='off' %} {% if states('schedule.testkalender')=='on' %} {% if states('sensor.wohnzimmer_temp') | float < states('input_number.wohnzimmer_temperatur_tag') | float %} heat {% else %} off {% endif %} {% else %} {% if states('sensor.wohnzimmer_temp') | float < states('input_number.wohnzimmer_temperatur_nacht') | float %} heat {% else %} off {% endif %} {% endif %} {% else %} {% if states('sensor.wohnzimmer_temp') | float < states('input_number.temperatur_away_mode') | float %} heat {% else %} off {% endif %} {% endif %} mode: single
Why the
float + 1
for some values? Also you’re using<
, maybe try<=
I was young and… I don’t know why I used it a few years ago. I will try your suggestion.
Ok, now I know why. without the +1 the automation does not trigger when the temperature is over the target and the TRVs running on idle. The +1 triggers the automation and switches them off until the room temperature is under the target temperature. So it does not explain why the mode is switched from heat to off or the other way around in the target +1° range.