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.

  • datenhamster@feddit.orgOP
    link
    fedilink
    English
    arrow-up
    1
    ·
    6 hours ago

    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