Alexwijn / SAT

The Smart Autotune Thermostat (SAT) is a custom component for Home Assistant that works with an OpenTherm Gateway (OTGW).
GNU General Public License v3.0
51 stars 12 forks source link

Multi room heating #16

Closed ronaldt80 closed 10 months ago

ronaldt80 commented 10 months ago

Is my understanding correct that the error level related to the highest gap between room temp and target temp? Is it an idea to assign a weight to each room? For instance, my office has one small radiator, whilst the living room consist of 4 rather large ones. They now seem to be treated equally.

Also, would it be an option to allocate a third party temperature sensor? It is my experience that the built in sensor is way off. For instance, a zigbee sensor which is paired to the climate entity?

enryIT commented 10 months ago

I agree on the weight, that would be a nice feature for those who have very different radiators.

For the second part, I think you should be able to fix this problem by using a proxy entity, this is for example my configuration:

climate:
  - platform: generic_thermostat
    unique_id: studio_fixed
    name: Studio Fixed
    heater: input_boolean.studio_thermostat
    target_sensor: sensor.termoigrometro_studio_temperature
    min_temp: 5
    max_temp: 25
    ac_mode: false
    target_temp: 17
    cold_tolerance: 0
    hot_tolerance: 0
    initial_hvac_mode: "heat"
    precision: 0.1
    target_temp_step: 0.5
    away_temp: 18
    comfort_temp: 21
    home_temp: 19
    sleep_temp: 17.5
[... other generic thermostats for each room ...]

where input_boolean.studio_thermostat is the entity of a HA boolean helper sensor.termoigrometro_studio_temperature is the entity id of the external temperature sensor

Then you would use climate.studio_fixed as a secondary SAT climate entity.

Obviously you'll need an automation of some sort in order to open and close the single valve when the generic_thermostat starts or stops heating, something like this:

alias: TRV Studio
description: ""
trigger:
  - platform: state
    entity_id:
      - climate.studio_fixed
    attribute: hvac_action
condition: []
action:
  - if:
      - condition: and
        conditions:
          - condition: state
            entity_id: climate.studio_fixed
            attribute: hvac_action
            state: idle
          - condition: numeric_state
            entity_id: climate.studio
            attribute: temperature
            above: 12
    then:
      - service: climate.set_temperature
        data:
          temperature: 12
        target:
          entity_id: climate.studio
    else:
      - if:
          - condition: and
            conditions:
              - condition: state
                entity_id: climate.studio_fixed
                attribute: hvac_action
                state: heating
              - condition: numeric_state
                entity_id: climate.studio
                attribute: temperature
                below: 25
        then:
          - service: climate.set_temperature
            data:
              temperature: 25
            target:
              entity_id: climate.studio
mode: single

where climate.studio_fixed is the proxy entity and climate.studio is the real radiator valve climate entity.

Alexwijn commented 10 months ago

We rely on the climates itself for them to make adjustments. So if one room doesn't need heating it should close. SAT is not build to work with Generic Thermostats, unless you can make the valve open a certain percentage based on the error value.

enryIT commented 10 months ago

No radiator valve can be set to "open up to xx%" as mush as I know, some can be fed with external temperature, very few of them, mine (tado) can't for example. I use that automation to open 100% or close 0% based on the generic thermostat, that is based itself on an external temperature sensor. I could also apply a simple formula, to account for the difference between the the valve current temperature and external sensor one, instead of telling them to fully open or close, but tado valves have their own PID algorithm baked in that would disrupt SAT calculations.

Are you saying that this is not a clever idea? :D

Alexwijn commented 10 months ago

Most of them have an internal PID that handles it, including TADO. The way you describe it you are messing that up.

But you are doing that because of the unreliable internal temperature sensor (since it basically on top of the radiator)?

For me that was one of the requirements when I was looking for smart TRVs. So I bought these that support overriding it: https://www.aqara.com/eu/product/radiator-thermostat-e1/

But again, adding features like that goes against the logic of a smart TRV and also add to much responsibility to SAT since he already his own climate. It almost sounds like a seperate project.

enryIT commented 10 months ago

Yes, I don't want to add this feature to SAT, that would totally be out of scope. I was just suggesting ronaldt80 how to overcome the issue he's having without spending again 50+€ for every radiator valve.

Alexwijn commented 10 months ago

Is it maybe not better to just use an offset with TADO?

enryIT commented 10 months ago

Unfortunately not because too many factors can affect the temperature sensor of the valve, the most important one being the radiator temperature. So you would have to change the offset everytime the radiator temperature changes, also tado valves recalibrate themself everytime the offset is changed, let's say at least a 10 times a day if you're lucky. This means battery will lasts for a few days instead of a few months, and god are they loud when calibrating, I hate when I hear them moving for a split second during the night, image having to hear a full 2-3 seconds of that stupidly loud noise while sleeping...