Yes, you are right that controlling the Tado valves using a plan drains the batteries a lot. What is the battery consumption using your solution?
Can I just use the homekit integration with climate.set_temperature
with your solution?
I don’t really see how it’s dumb? Tado itself is pretty dumb unless you pay for the extras. Now I’m in full control of everything in HA.
And by the way… I love your approach. Tried it with setting the offset, that kept my valves open every 10 seconds and the result was constant overheated rooms. It doesn’t matter that the thermostat itself is not used correctly if it doesn’t even work correctly in the first place.
I have setup my schedule of heating partly in HA and Tado Cloud.
I was trying to move everything local by using the HomeKit integration.
But one important features is not available useing the HK integration. You cannot control the temperature offset.
Anyone has a solution for that?
The cloud entity
The local entity
Hi there,
I’m trying to get this offset blueprint to work but the automations never gets riggered. Looking at the logfiel I see the following line:
2023-01-17 08:43:18.154 ERROR (MainThread) [homeassistant.components.automation.offset_kitchen] Error rendering variables: TypeError: unsupported operand type(s) for +: 'float' and 'NoneType'
Any ideas what is wrong here?
I already found out that if the offset on my tado is 0, HA will get a value of ‘None’ in stead of ‘0’… Is there any way to covert None into 0 in the script?
And now I really found the issue. HA doesn`t see the offset setting for my Tado. The attributes are way different. I’ll first have to figure out how I get the offset attribute working in HA and then I can change the script with the new attribute names…
Hello, is there anything more that I need to do to make this work? I am pretty sure I have got pretty much the same thing but my generic thermostat is stuck at ‘IDLE’…
Solution!
I have looked pretty long for a solution to fix the wrong Tado temperatures.
Finally I have come up with a solution!
The features:
- Work around the inaccurate Tado temperatures
- No shitty recalibration
- Able to set the temperature to 30°C max and not 25°C (Theoretically even 35°C) (Could not work for everyone if the tado temp is way to high)
- Custom presets in the climate entity
- This works completely local with the HomeKit integration (I’m not using the cloud integration and have blocked internet access for the bridge - still works)
Drawbacks:
- You will no longer be able to set the temperature directly on the thermostat by turning the knob. If you do, your room is most likely heating to much and the temperature will be overwritten shortly after.
- Does not work with tado° schedules. However you can use the scheduler component to set up schedules directly in HA.
- Does not work if your tado° temperature is inaccurate by more than 10°C. This really needs to be fixed by Tado themselves and can’t be done with this workaround (However it will still improve the heating experience then).
So how does it work?
Instead of changing the offset each time the Tado temperature is too inaccurate, we constantly automatically adjust the target temp. So far it hasn’t noticeable impacted the battery life (running for a few weeks).
Let’s start by preparing the thermostat. For this, we need to give the bridge internet access once during setup (if it doesn’t have already). But don’t worry. You only have to set the offset to at least -5°C once. You can also go with -10°C, but -5 works for me just fine. After that, you can cut the internet connection again.
The HA part:
First, you have to create a custom climate entity. You will no longer be using the “real” climate entity from the HomeKit integration.
Make sure to change it to your preferences:
climate:
# Tado fix
- platform: generic_thermostat
name: MyRoom Fix
unique_id: tado_myroom_fix
# heater is not needed but required by the integration's setup.
# The entity don't has to exist to work, but it will throw a warning.
# You can set up a helper switch here.
heater: input_boolean.generic_thermostat_dummy
# The sensor with the actual temperature
target_sensor: sensor.myroom_temperature
min_temp: 15
max_temp: 30
# Configure your preset temperatures
away_temp: 21
comfort_temp: 24.5
home_temp: 23.5
sleep_temp: 22
target_temp_step: 0.5
Now the second part - the automation.
Make sure to change all entities accordingly.
You have to change the 3 entities in the trigger at the top and the first 3 entities at the bottom in variables.
alias: Tado Climate Fix (MyRoom)
description: ""
trigger:
- platform: state
entity_id:
- climate.tado_myroom # The real climate
attribute: current_temperature
- platform: state
entity_id:
- climate.myroom_fix # The custom fix climate
attribute: temperature
- platform: state
entity_id:
- climate.myroom_fix # The custom fix climate
attribute: hvac_action
condition:
# You can put conditions here if you want (optional)
- condition: state
entity_id: input_boolean.heizung_sommerpause
state: "off"
action:
- if:
- condition: template
value_template: "{{ states(entity_proxy) == 'heat' }}"
then:
- if:
- condition: template
value_template: "{{ actual_temp + 0.1 < target_temp }}"
then:
- service: climate.set_temperature
data:
hvac_mode: heat
data_template:
temperature: "{{ new_tado_target_temp }}"
target:
entity_id: "{{ entity_tado }}"
else:
- service: climate.set_hvac_mode
data:
hvac_mode: "off"
target:
entity_id: "{{ entity_tado }}"
else:
- service: climate.set_hvac_mode
data:
hvac_mode: "off"
target:
entity_id: "{{ entity_tado }}"
variables:
entity_tado: climate.tado_myroom # Tado climate
entity_proxy: climate.myroom_fix # Custom fix climate
tado_temp_offset: -5 # The offset that you have set in the tado app
# No more things to do
tado_temp: "{{ state_attr(entity_tado, 'current_temperature') - tado_temp_offset }}"
actual_temp: "{{ state_attr(entity_proxy, 'current_temperature') }}"
target_temp: "{{ state_attr(entity_proxy, 'temperature') }}"
new_tado_target_temp: |
{% if is_number(actual_temp) %}
{{ (target_temp|float(1) + tado_temp_offset|float(1)) + (tado_temp|float(1) - actual_temp|float(1)) }}
{% else %}
{{ (target_temp|float(1) + tado_temp_offset|float(1)) }}
{% endif %}
mode: single
I haven’t created a blueprint yet and have not planned to do so for now because I currently don’t have time for it.
I hope that this helps others having the same problem!
And hopefully this works the way I have posted it and I didn’t forget anything. If there are any problems with the custom climate or automation, please let me know. You can also let me know when everything has worked flawlessly
Before:
After:
How Tado looks like:
Puhh, it took a whole hour to write this comment! I hope so much that this helps other people with their tado thermostat
Sounds great! Thanks! A blueprint of that would be awesome!
Hey all,
I have a question. How does this work if you use TADO´s external room sensors ? They do the same but just in the tado app. They get exposed to HA without sensors. Does this mean that the tado valves do in this case already consider the external sensor and send these value to HA upfront ?
Thanks all !
I think you forgot one more adjustment in your automation. In the variables, actual_temp
still contains a dedicated sensor. Shouldn’t that also be a state_attr
with entity_proxy
and 'current_temperature'
?
If I use your adjustments, the schedules of tado° also no longer work. I have found the scheduler component in HACS.
Fixed.
I actually totally forgot about the schedules from tado because I’ve never used them. I’m controlling mine with the scheduler component from the beginning
That is correct. You can define in the tado° app under Settings - Rooms & Devices for each room which device is the (temperature) measuring one. If you have external smart thermostats from tado°, you should also use them to measure the temperature instead of the smart radiator thermostats, as they are more accurate and can be placed freely in the room.
Thanks for the automation Xitee! Now that the heating season is coming I’m going to try it out and see how it goes.
One question, what is the purpose of adding the -5°C offset in Tado App? Can it be left at 0? Thank you
The purpose is to prevent heating problems and be able to set a higher target temperature. Tado’s limit is 25°C if I remember it correctly, which should be enough for most normal use cases. But the problem we are having is that Tado’s internal temp sensor shows (way) to high values. So if the temp is actually 21°C, Tado’s internal temp could show 25°C. Then we are no longer to heat because the max target temp that we can set is 25°C. With the offset, it would however think that it’s only 20°C and with a target temp of 25°C the thermostat will still heat.
So, you can leave it at 0, but you might experience heating issues if you set a high target temp (> ~24°C) and/or your tado temperature readings are way off.
To prevent the thermostats to open and close the valve every few seconds/minutes, I want to set the offset for example every hour.
Is this possible with your blueprint?
Thanks to ChatGPT I could help myself.
trigger:
- platform: time_pattern
hours: "/1"
Doesnt this mess with Tado’s PID? is the algoritme still maintaint
Almost a year since @Xitee shared his solution and we are amidst the heating season. I tried out the proposed solution, but find my valves non-responsive.
I am trying to debug, but it seems that ever since implementing the proxy-thermostat the Tado valve doens’t respond or react to the service-calls anymore. So I am thinking:
- Is there a limit to API-calls?
- Is @Xitee’s based on using the home-kit integration instead of the regular Tado-integration?
- Has the API changed over the past year?
Is this solution still working for ya’ll?
I’m using the homekit integration with local control. A few months back I bought a eurotronic thermostat that has a direct valve control and replaced the tado with it.
But since my Tado didn’t have have internet access it should still work.
Thanks for your prompt reply. I am afraid I can’t switch to the homekit integration, as I also use the main thermostat (not the valve) for the entire house.
Thank you, I going to give a try.
What do you think about Better Thermostat from HACS? Have you tried?