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.

  • earphone843
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    14 hours ago

    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?

    • datenhamster@feddit.orgOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      5 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
      

  • drspod@lemmy.ml
    link
    fedilink
    English
    arrow-up
    1
    ·
    14 hours ago

    Sorry I don’t have an answer to your question but I am curious which TRVs you’re using and how you’re finding them? What was the reason for switching from Bosch to Sonoff? Thanks.

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

      They are Sonoff TRVZB. Bosch changed the firmware and with 3.7.4 the TRVs startet to recalibrate and reboot at random times. Sometimes 15 minutes in a row. Bosch said: Thats your valves, change them, not our fault.