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
    0
    ·
    2 days 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
    

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

          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.