Battery Level and Temperature Offset for Tado

I have two Tado Radiator thermostats. Unfortunately, HA component doesn’t display two important properties: Battery Level and Temperature Offset. It would be great to have them displayed and to be able to change Temperature Offset from HA.

That should be easy because this functionality is supported by Tado API:

curl -s -m 5$DEVICE/ -H “Authorization: Bearer $TOKEN” | jq -r ‘.batteryState’

curl -s -X PUT$DEVICE/temperatureOffset -H “Authorization: Bearer $TOKEN” -H “Content-Type: application/json” -d “{‘celsius’: 1.0}”

See for details.


would be good to implement the possibility to manage different istance for tado for who have more than one house/office to manage.

1 Like

You ever got a solution for this? Also need to get the battery level…

No, until they not update how the component work is not possible to add multiple account to HA

Sorry I am talking about the battery level…

Sorry I misunderstand… :slight_smile:

Being able to change the temperature offset of those radiator thermostats would make them way more efficient.

The main problem with Tado smart valves (and probably all the other brands) is that they are located just next to the radiator, which is not a good location for accurate temp measures. There is this “temperature offset” feature which is supposed to solve the issue, but it’s just a bad workaround : when the radiator is hot, setting an offset of, for exemple, -2°C would give me the correct temperature. But when the radiator is cold, the thermostat get a good temperature on its own, so my -2°C offset is no longer needed.
If HA is able to read and modify the temperature offset, we could set some automation to sync this value with an external temperature sensor (like Aqara for exemple). We just need to calculate the difference between the thermostat temperature and the external sensor temperature, and adjust the offset.

I hope my message is clear enough (sorry for my bad English) and that someone could work on this. It would be awesome and solve the main issue of those smart thermostats (according to me :slight_smile: )

That would be a very useful feature. I have implemented it myself in bash scripts (called by Home Assistant every 5 minutes), but it would be great to have it in the component itself.

So is there a way to update the temperature offset from home assistant?
I could create an automation to update the offset based on an external sensor; the problem might be that it normally take a couple of minutes for the thermostat to update its reading; has anybody tried this?

Regarding the battery level: The API only returns only “Normal” for all my devices. As it isn’t a percentage value it’s not very helpful… but better than nothing :slight_smile: As I do use the TADO app to setup the time windows I will get a low battery level notification anyway. But for someone who doesn’t use the app it would be very helpful.

Any updates on this?? I removed my Tado app, but received an email one of my 3 devices has a low battery, but since its name is a serial number and not it’s name I donno which one it is (until I get my last ass from couch and manually check them).

Hello. Did you succeeded to set the temperature offset? How? Would you mind to share the steps and the code? Thank you.

Yes, code here

You need to copy the script in the config folder and give it a name, in my example config/, then setup the command line sensor like this in configuration.yaml

  - platform: command_line
    name: TadoOffset_RoomXX
    command: 'python3 /config/'
    value_template: "{{value_json.offset}}"
      - info_message
    unit_of_measurement: '°C'
    scan_interval: 300

Also here is the code from another user that can be flashed into an esp8266 and doesn’t need home assistant

Thank you very much. I’m using Tado with homekit controller integration. The script is working fine, the sensor shows me an offset value of 2.5 degrees C, however the Tado temperature sensor is the same before installing the script. Maybe it’s not working with the Homekit integration or did I miss something.

The Tado temperature sensor should show a similar temperature to the one measured by your third party sensor; it should take 1-2 minutes to update after the offset has been applied (so should hear the valve recalibrating)

Thank you @jacoscar. So currently for one of the rooms these are the temperature and offset values:
Room 1

  • real room temperature measured by third party sensor: 19.7 °C
  • temperature measured by Tado smart radiator thermostat: 22°C
  • value by the script generated sensor (offset): -8.0°C

Room 2

  • real room temperature measured by third party sensor: 21.1 °C
  • temperature measured by Tado smart radiator thermostat: 23.3°C
  • value by the script generated sensor (offset): -1.05°C
  • offset value at Tado site: -1.0°C

Basically your script (which is great :+1:) gets the offset value from tado site and applies to Home Assistant component sensor. Is that true?
Anyway at Room 1 there is a major difference between real temp value and Tado thermostat measured temperature. Why? After 30 minutes I see no changes.

My script gets current Tado temperature (which includes any offset already applied), the current offset and adjusts the offset to what’s required; it doesn’t use the Tado Home Assistant component, it does everything using Tado’s API; the only thing it uses Home Assistant for is getting the third party sensor reading

I think what you see in your room1 is because the maximum offset you can apply is 8 degrees or at least I thought it was; it’s actually 9 for negative offset and 10 for positive offset!
Is it possible it would actually be reading 30 degrees if there was no offset?

The real temperature in the room 1 is 19.7°C. The main goal of the script is to match the 3rd party temp sensor value with the tado thermostat temp value. Isn’t it? So after a while the tado temperature sensor value has to be the same as the 3rd party sensor value?


Sorry to bother you so much. Until now everything is clear, except for one thing. I’m using my Tado offline (without internet connection) only locally with Homekit integration, so setting the offset value dynamically at the Tado site has no effect in this scenario.
Don’t get me wrong I really appreciate your work and maybe it’s a stupid idea but is it possible to modify your script to override the temp sensor value measured by the tado radiator thermostats with the value measured by third party sensor? Is that makes sense?