[Release] Tado (Connect)

Thanks @t.stretton and @user3860
I replaced the code with the one on @t.stretton github.

I had to replace the client ID on the first screen though. The box contained something like api-public-preview which didn't work, maybe something saved from the previous version.
This could be a note to add on the screen or something to force in code.

Happy to regain all automations :pray:t2::sunglasses::partying_face:
Thanks a lot!

Thanks for this. I should try to get up and running with the extende version with the heating power etc. :slight_smile:

I got disconnected yesterday and had to go through the password grant flow again.
I have implemented some specific logging focused on the refresh flow in my version, and a bit of checks to see if I can prevent the errors. It does seem to be some issue with simultanious refresh at the same time, as I typically see in my log e.g. successfull refresh and then within the same second a few errors. But seems to be working again, will keep an eye on it, and will try to find some time to see if this can be fixed somehow (not expirienced developer here, so it requiers some time to play around with this).

Hi. I've managed to install tstretton's code, but how do I trigger the password grant flow again? Cannot figure out where to do it....???

Thanks,

Marcus

I first removed all Tado devices and all previous Tado app code.
Then:
Install tstretton's app code.
Go to "apps" and "Add user app", choose Tado (Connect)
Follow the instructions ...
Everything works perfectly for me now

@GeertV @t.stretton @user3860 Thanks to all of you for your help, I am back in operation again. I was really missing my Tado in Hubitat. And since I have 10+ thermostats (don't ask...) I wasn't fancying going over to something else! Cheers!

I've just posted an update, it's been running on my hub for the last 24 hours without issue, so feel free to try it and let me know.

  • Fixed random auth errors in logs,
  • Added option to re-start authentication process
  • Added default client id to page incase you want to revert back to it.
  • Moved device setup from main page "next" to its own option.
  • DebugLogs can be enabled and disabled without going through devices setup proc.

Tado-Connect-2025

This code is still based on the original so you should be able to replace the current App code with this version, run through the first authentication setup, then your devices should be reporting data again. No need to remove or uninstall existing first.

Cheers
Tim

3 Likes

I'm regularly getting disconnected with token refresh error below. This time I had to redo the login process. Problem is I only notice when automations don't work right. Any pointers? Is there an object to check connectivity to tado?

Failed to refresh access token (HTTP error): groovyx.net.http.HttpResponseException: status code: 400, reason phrase: Bad Request

Thanks

Just recieved this warning from Tado

We have an important update for users of our REST API, which—while never officially supported for third parties—we’ve historically left open and unrestricted. We’ve always believed in fair use, and we intend to continue supporting that principle.

The API is commonly used by third-party and open-source platforms (e.g., Home Assistant), as well as by users running their own custom scripts. Nevertheless, a small fraction of very frequent API users are currently responsible for a disproportionately high share of our server expenses.

To ensure long-term stability and to avoid restricting access for everyone, we will begin introducing daily usage limits for API calls.

Your daily quota will depend on whether you have an active tado° Auto-Assist subscription:

Without Auto-Assist: 100 requests/day
A small daily quota, which should still support basic use cases that are not available via tado’s local APIs: HomeKit for V3/V3+ devices or Matter for tado° X devices. We have updated the documentation on how to access the REST API to reflect these changes.

With Auto-Assist: 20.000 requests/day
This should cover even more demanding use cases, and the subscription fees enable us to offset the increased costs associated with additional server calls.

We’ve shared these changes very early in our consideration process with Home Assistant, the largest open-source software using the unofficial tado° REST API, asking them to adapt their integration to rely more on tado’s local APIs. We understand this creates challenges for community projects. Therefore, we will slowly ramp down limits over the next few months for a smooth transition.

Our goal is to strike a fair balance, ensuring that responsible use remains possible while keeping infrastructure costs under control.

Thank you for your understanding.

Warm regards,

Your tado° Team

How is the code Tado (Connect) written? Does it rely on local API? I can imagine our driver will become depricated quickly if not..

I've had my Tado setup for some years now (Smart Thermostat, Extension Kit and Bridge) and when I look at the Tado App on my mobile it says that Auto Assist was included in my Tado starter kit.
I've not received an email so I'm wondering if I'm not going to be affected by this change.
Maybe it is only affecting more recent purchases. :man_shrugging:

EDIT: I am using Tado(connect) by the way.

I’ve had the same email and have auto assist included too, so may push back on Tado if we get hit with the limits too.
The current app is 100% cloud api, so will totally stop working if limited.
No promises but will look through their local api documentation and see if I can migrate any of the calls to local.
I would be lost without Hubitat linking with Tado.

2 Likes

Hopefully you find a solution.
Thanks for looking into it.

Today this integration stopped working.
I'm getting HttpResponseException: status code: 429 which on a google search says
" The HTTP 429 Too Many Requests client error response status code indicates the client has sent too many requests in a given amount of time"
I'm assuming this means Tado have invoked their restriction as indicated above.
Any one else getting this or has a work round to get it working?

Hi Bobbles,

Yes, sounds like they are limiting you.
Here is an updated version of the Tado App (drivers remain the same)
I've reduced some of the calls to Tado, and added some options to disable more.

Just replace your Tado app code with this version.

Let me know how you get on.

https://raw.githubusercontent.com/tstretton/public/refs/heads/main/Tado-Connect-2025

1 Like

Thanks for the response @t.stretton
I was hoping there was would be a 'local' work round. The reason being is that the way I have my set up is to poll presence every 15 secs and heating every 30 secs.
This just suits my needs.
When Tado changed authentication at the beginning of the year I bought a Hive Thermostat and receiver and this works locally using a user app. It wasn't quite as intuitive and when you updated the code I went back to Tado.
I've decided to just go back to my Hive set up and fiddle with the schedules that I have set up through webCoRE to run my heating.

Thanks you so much for the response and all you have done in the past with this app.
Thanks again.

Ah no worries.
I've started using Locative for Presence, seems to work better as no polling delays.
Tado X appears to support Matter so should be able to poll more local stuff then, but I'm not swapping all out to try lol.

1 Like

I noticed this morning that my Tado automations have stopped working, I have tried to recreate the app, and used the code posted a couple of posts up and I am unable to get it working again.
When I click "Child Devices Setup" I get " Unexpected Error"
I am able to authenticate

Some logs for when trying to use the devices are below:

2026-01-07 06:32:39.792 AM

error

java.lang.NullPointerException: Cannot invoke method sort() on null object on line 369 (method listDevices)

app:1902026-01-07 06:32:39.773 AM

error

Exception: groovyx.net.http.HttpResponseException: status code: 429

app:1902026-01-07 06:32:22.148 AM

error

Exception: groovyx.net.http.HttpResponseException: status code: 429

app:1902026-01-07 06:32:22.110 AM

error

Exception: groovyx.net.http.HttpResponseException: status code: 429

app:1902026-01-07 06:32:21.826 AM

info

In startPage

app:1902026-01-07 06:30:30.581 AM

error

Exception: groovyx.net.http.HttpResponseException: status code: 429

app:1902026-01-07 06:30:30.532 AM

error

Exception: groovyx.net.http.HttpResponseException: status code: 429

app:1902026-01-07 06:30:30.488 AM

error

Exception: groovyx.net.http.HttpResponseException: status code: 429

app:1902026-01-07 06:30:07.988 AM

error

Exception: groovyx.net.http.HttpResponseException: status code: 429

app:1902026-01-07 06:30:07.950 AM

debug

Executing 'sendCommand' for method status

app:1902026-01-07 06:30:07.834 AM

debug

Http Params ([uri:https://my.tado.com, path:/api/v2/homes/604048/zones/8/state, requestContentType:application/json, headers:

Any suggestions on where to start?

Are you seeing the message that "Credentials accepted. Tado is connected" when you open the app?

Looks like Tado are rate limiting you.

Are you still having issues?
This affected me a few months ago so I switched over to my Hive setup.
I switched back a month ago, just to see if the isue still exists, and it has been working fine.
This doesn't mean it will continue to do so of course, but who knows. :person_shrugging:

Yes I see my creds are accepted.

I now see the following error:

Exception: groovyx.net.http.HttpResponseException: status code: 401