Skip to content

Instantly share code, notes, and snippets.

@sanderma
Last active April 29, 2024 09:01
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save sanderma/1e9163c690e23bc8d32a8c9e9d89a910 to your computer and use it in GitHub Desktop.
Save sanderma/1e9163c690e23bc8d32a8c9e9d89a910 to your computer and use it in GitHub Desktop.
Homeassistant blueprint to set Tado offset using separate temperature sensor
blueprint:
name: Tado temperature offset
description: Ensure the Tado smart valve has the temp of a separate sensor
domain: automation
input:
source_temp_sensor:
name: Source Temperature sensor
description: This sensor will be used as the source.
selector:
entity:
domain: sensor
device_class: temperature
target_tado:
name: Tado
description: The Tado to set the offset on.
selector:
entity:
domain: climate
variables:
target_tado: !input target_tado
source_temp_sensor: !input source_temp_sensor
tado_temp: "{{ state_attr(target_tado, 'current_temperature') | float }}"
current_offset: "{{ state_attr(target_tado, 'offset_celsius') }}"
actual_temp: "{{ states(source_temp_sensor) | float }}"
offset: "{{ ( actual_temp - tado_temp ) | round }}"
calculated_offset: "{{ ( ( actual_temp - tado_temp ) + current_offset ) | round }}"
trigger:
- platform: state
entity_id: !input target_tado
attribute: current_temperature
- platform: state
entity_id: !input source_temp_sensor
condition:
- condition: template
value_template: "{{ offset != 0 }}"
- condition: template
value_template: "{{ actual_temp != 0 }}"
action:
- service: system_log.write
data:
message: >
{{ target_tado }} has temp difference of {{ offset }}. Setting offset to {{ calculated_offset }}
level: info
logger: blueprints.tado.offset
- service: system_log.write
data:
message: >
target: {{ target_tado }}
source: {{ source_temp_sensor }}
temp difference: {{ offset }}
actual_temp: {{ actual_temp }}
tado_temp: {{ tado_temp }}
current_offset: {{ current_offset }}
calculated_offset: {{ calculated_offset }}
level: debug
logger: blueprints.tado.offset
- service: tado.set_climate_temperature_offset
data:
offset: "{{ calculated_offset }}"
entity_id: "{{ target_tado }}"
mode: single
@justcop
Copy link

justcop commented Dec 14, 2021

Unfortunately the api doesn't allow for that, or else none of this would be necessery.

The api has more features than the HA integration but doesn't go as far as that.

HA intergrations are just a shell around apis but as its laborious, they only include the features that the maker of the integration has translated from the API.

@justcop
Copy link

justcop commented Dec 14, 2021

Actually, just looked at the API and you can't change open window detection mode from there. I wonder though if you could just read the mode (manual/scheduled etc) prior to the offset change and then reset that afterwards, would that override the open window detection, I think so.

@ilpantera
Copy link

Does anybody have the issue that this does not work when a room as more than one thermostat? The script works fine on one thermostat for me, but for rooms with more than one, the offset is not set.

@justcop
Copy link

justcop commented Oct 11, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment