Page 1 of 2
Tado Local and python plugin
Posted: Wednesday 05 November 2025 8:26
by rhuijben
......
I'm working on a more generic solution via a local mini REST api instead of relying on home assistant and gateways between them. Very early stage but already used in my Domoticz. See
https://github.com/ampscm/TadoLocal
The repository contains the service and a Domoticz plugin using the service.
Re: Tado Thermostat plugin
Posted: Wednesday 05 November 2025 9:09
by jannl
Sounds promising, might give it a try soon
Re: Tado Thermostat plugin
Posted: Wednesday 05 November 2025 15:06
by HvdW
I tried the install, but failed
tado-local --bridge-ip 192.168.2.2 --pin 123-45-678 --verbose
2025-11-05 15:33:22 INFO Verbose logging enabled
2025-11-05 15:33:22 DEBUG Using selector: EpollSelector
2025-11-05 15:33:22 ERROR ERROR: Failed to start Tado Local: no such column: d.is_zone_leader
2025-11-05 15:33:22 ERROR ERROR: no such column: d.is_zone_leader
Re: Tado Thermostat plugin
Posted: Wednesday 05 November 2025 16:46
by jannl
Here I get an error in Trixy on: pip install -e
Code: Select all
error: externally-managed-environment
Python version is 3.13.x
Re: Tado Thermostat plugin
Posted: Wednesday 05 November 2025 19:39
by waltervl
To use plugins in newer OS that uses Python virtual environments look at the instructions in
https://zigbeefordomoticz.github.io/wik ... alEnv.html that a plugin author created. It is also mentioned in the wiki
https://wiki.domoticz.com/Using_Python_plugins
So important to read both when it is the first time you use Python Plugins in Domoticz.
Re: Tado Thermostat plugin
Posted: Wednesday 05 November 2025 20:36
by jannl
So I should use it inside the docker.
Re: Tado Thermostat plugin
Posted: Wednesday 05 November 2025 21:11
by waltervl
jannl wrote: Wednesday 05 November 2025 20:36
So I should use it inside the docker.
If you run Domoticz in a docker you should install a plugin always through the docker container. As described in the wiki
https://wiki.domoticz.com/Docker#Python_Plugins In the container already a venv is enabled.
Re: Tado Thermostat plugin
Posted: Wednesday 05 November 2025 21:53
by jannl
The error message is not the plugin but the rest api. I will update my customstart.sh. Which by the way runs in 2 minutes on a pi5 instead of the almost 10 on a pi 3b.
And installing...a new plugin is not more rhan copying the plugin files to the correct directory and restarting domoticz.
Re: Tado Thermostat plugin
Posted: Wednesday 05 November 2025 22:28
by waltervl
Yes, I meant installing the extra python modules that need to be installed fo a python plugin. The error you mentioned came from installing a module (for a python plugin...) But all is described on the wiki....
Re: Tado Thermostat plugin
Posted: Friday 07 November 2025 16:31
by jannl
Got a bit further, but ran into an error already logged as an issue on github. We'll see.
Re: Tado Thermostat plugin
Posted: Monday 10 November 2025 14:23
by sloeber70
Hi,
Installed the TadoLocal environment on my domoticz test system.
Local UI works fine on localhost:4402... and is getting changes when I alter a temperature set in Tado App... but setting a temperature setpoint from TadoLOcal does not work. Also I get errormsg : no leader device for zone...
Getting plugin in domoticz too... working... all devices are installed... But when trying to set a higher temperature for a zone: error
2025-11-10 14:07:03.101 Error: TadoLocal: Failed to connect to Zones Fetch: Connection refused (Status: 111)
2025-11-10 14:07:33.254 Error: TadoLocal: CConnection_disconnect, disconnection request from 'TadoLocal' ignored. Transport does not exist.
2025-11-10 14:07:33.364 Error: TadoLocal: CConnection_disconnect, disconnection request from 'TadoLocal' ignored. Transport does not exist.
What did I miss?
Python requirements for Domoticz plugins are OK....
tado-local output:
2025-11-10 14:11:29 INFO [E] Bureel | TargetTemperature: 20.5 -> 24
2025-11-10 14:11:35 INFO 10.10.3.114:49641 - "GET / HTTP/1.1" 200
2025-11-10 14:11:35 INFO 10.10.3.114:49641 - "GET /zones HTTP/1.1" 200
2025-11-10 14:11:35 INFO 10.10.3.114:50481 - "GET /events?types=zone HTTP/1.1" 200
2025-11-10 14:11:35 INFO 10.10.3.114:61449 - "GET /status HTTP/1.1" 200
2025-11-10 14:11:44 INFO POST /zones/4/set temperature=18.0 heating_enabled=True
2025-11-10 14:11:44 INFO 10.10.3.114:62824 - "POST /zones/4/set?temperature=18&heating_enabled=true HTTP/1.1" 400
2025-11-10 14:11:52 INFO [E] Slaapkamer | CurrentTemperature: 20.9 -> 20.8
2025-11-10 14:12:35 INFO 10.10.3.114:52954 - "GET /zones HTTP/1.1" 200
2025-11-10 14:13:08 INFO [E] Bureel | CurrentTemperature: 22.7 -> 22.8
2025-11-10 14:13:35 INFO 10.10.3.114:64970 - "GET /zones HTTP/1.1" 200
2025-11-10 14:14:11 INFO [E] Hall | CurrentTemperature: 21 -> 20.9
2025-11-10 14:14:35 INFO 10.10.3.114:55800 - "GET /zones HTTP/1.1" 200
2025-11-10 14:15:31 INFO [E] LivingHall | CurrentTemperature: 21.1 -> 21
2025-11-10 14:15:35 INFO 10.10.3.114:60354 - "GET /zones HTTP/1.1" 200
2025-11-10 14:16:35 INFO 10.10.3.114:56908 - "GET /zones HTTP/1.1" 200
2025-11-10 14:16:58 INFO [E] Slaapkamer | CurrentTemperature: 20.8 -> 20.7
2025-11-10 14:17:14 INFO [E] Keuken | CurrentTemperature: 20.8 -> 20.6
2025-11-10 14:17:35 INFO 10.10.3.114:58645 - "GET /zones HTTP/1.1" 200
2025-11-10 14:18:04 INFO [E] Badkamer | CurrentTemperature: 21.2 -> 21.1
2025-11-10 14:18:35 INFO 10.10.3.114:63567 - "GET /zones HTTP/1.1" 200
2025-11-10 14:20:04 INFO 10.10.3.114:65394 - "GET /zones HTTP/1.1" 200
2025-11-10 14:20:35 INFO 10.10.3.114:62049 - "GET /zones HTTP/1.1" 200
Re: Tado Thermostat plugin
Posted: Tuesday 11 November 2025 8:21
by jannl
There is seperate TadoLocal topic and I think you better also create an issue on github.
Re: Tado Thermostat plugin
Posted: Tuesday 11 November 2025 12:33
by manjh
Is there an overview somewhere showing which functionality TadoLocal offers?
In the screenshot it shows the different zones. I assume you can manually change temperatures.
But can you change the programming schedule? times/temperatures per day?
Re: Tado Local and python plugin
Posted: Tuesday 11 November 2025 14:11
by waltervl
Splitted off from the original Tado integration topic.
Re: Tado Thermostat plugin
Posted: Tuesday 11 November 2025 14:35
by waltervl
manjh wrote: Tuesday 11 November 2025 12:33
Is there an overview somewhere showing which functionality TadoLocal offers?
In the screenshot it shows the different zones. I assume you can manually change temperatures.
But can you change the programming schedule? times/temperatures per day?
This is the current functionality with the plugin:
https://github.com/AmpScm/TadoLocal/blo ... /README.md
Re: Tado Local and python plugin
Posted: Wednesday 12 November 2025 18:37
by HvdW
Maybe I am too stupid for this.
What I did.
Code: Select all
# Clone the repository
git clone https://github.com/ampscm/TadoLocal.git
cd TadoLocal
# Install (requires Python 3.11+)
pip install -e .
The python system was protesting, so I continued like this.
Code: Select all
python3 -m venv venv
source venv/bin/activate
then another pip install -e .
and SUCCESS
Running setup.py develop for tado-local
Successfully installed tado-local-1.0.0a1
then
Code: Select all
(venv) (venv) pi@RPI4:~/TadoLocal $ tado-local --bridge-ip 192.168.2.2 --pin 123-45-678
2025-11-12 18:55:06 INFO Loaded 0 devices from cache
2025-11-12 18:55:06 INFO Loaded 0 zones from cache
2025-11-12 18:55:06 INFO Loaded latest state for 0 devices from database
2025-11-12 18:55:06 INFO Tado Cloud API: Starting authentication flow...
2025-11-12 18:55:06 INFO Started background cloud sync (4h battery, 24h config)
2025-11-12 18:55:06 INFO API authentication disabled (no TADO_API_KEYS configured)
2025-11-12 18:55:06 INFO No existing pairing found for specified IP: 192.168.2.2
2025-11-12 18:55:06 INFO Starting fresh pairing with 192.168.2.2 using PIN 488-89-183...
2025-11-12 18:55:06 INFO Starting controller-based pairing with 192.168.2.2:80 using PIN: 123-45-678
2025-11-12 18:55:06 INFO Using Controller ID: f780edf2-0605-4030-a02d-ec451f45f4cc
2025-11-12 18:55:06 INFO Starting fresh pairing with persistent controller f780edf2...
2025-11-12 18:55:06 INFO --- Trying approach: single_connection ---
2025-11-12 18:55:06 INFO Description: Keep connection open throughout
2025-11-12 18:55:06 INFO Requesting device authorization code from Tado...
2025-11-12 18:55:06 WARNING Overall attempt failed with approach single_connection, feature flags 0: step bytearray(b'\x02')
2025-11-12 18:55:06 INFO ======================================================================
2025-11-12 18:55:06 INFO TADO CLOUD API AUTHENTICATION REQUIRED
2025-11-12 18:55:06 INFO ======================================================================
2025-11-12 18:55:06 INFO To connect to Tado Cloud API, please visit this URL:
2025-11-12 18:55:06 INFO https://login.tado.com/oauth2/device?user_code=GBQVVC
2025-11-12 18:55:06 INFO Your code: GBQVVC
2025-11-12 18:55:06 INFO (This code expires in 300 seconds)
2025-11-12 18:55:06 INFO
2025-11-12 18:55:06 INFO Once authenticated, you see a success result here in the log. Polling for authorization...
2025-11-12 18:55:06 INFO
2025-11-12 18:55:06 INFO You can also access this information via the web-ui or the /status endpoint:
2025-11-12 18:55:06 INFO curl http://localhost:4407/status
2025-11-12 18:55:06 INFO ======================================================================
2025-11-12 18:55:06 WARNING Overall attempt failed with approach single_connection, feature flags 1: step bytearray(b'\x02')
2025-11-12 18:55:06 INFO --- Approach single_connection completed, trying next approach ---
2025-11-12 18:55:06 INFO --- Trying approach: reconnect_between_parts ---
2025-11-12 18:55:06 INFO Description: Reconnect between Part 1 and Part 2
2025-11-12 18:55:06 WARNING Overall attempt failed with approach reconnect_between_parts, feature flags 0: step bytearray(b'\x02')
2025-11-12 18:55:06 WARNING Overall attempt failed with approach reconnect_between_parts, feature flags 1: step bytearray(b'\x02')
2025-11-12 18:55:06 INFO --- Approach reconnect_between_parts completed, trying next approach ---
2025-11-12 18:55:06 ERROR ============================================================
2025-11-12 18:55:06 ERROR ALL PAIRING ATTEMPTS FAILED
2025-11-12 18:55:06 ERROR ============================================================
2025-11-12 18:55:06 ERROR Tried approaches:
2025-11-12 18:55:06 ERROR - single_connection: Keep connection open throughout
2025-11-12 18:55:06 ERROR - reconnect_between_parts: Reconnect between Part 1 and Part 2
2025-11-12 18:55:06 ERROR Controller identity persisted: f780edf2-0605-4030-a02d-ec451f45f4cc
2025-11-12 18:55:06 ERROR Part 1 state may be saved - retry might resume from Part 2
2025-11-12 18:55:06 ERROR Possible issues:
2025-11-12 18:55:06 ERROR 1. Device is already paired to another HomeKit controller
2025-11-12 18:55:06 ERROR 2. Device is not in pairing mode
2025-11-12 18:55:06 ERROR 3. Wrong PIN code
2025-11-12 18:55:06 ERROR 4. Device needs to be reset/factory reset
2025-11-12 18:55:06 ERROR 5. Network connectivity issues
2025-11-12 18:55:06 ERROR 6. Device-specific pairing behavior not yet understood
2025-11-12 18:55:06 ERROR Troubleshooting steps:
2025-11-12 18:55:06 ERROR - Check if device is showing on other HomeKit controllers
2025-11-12 18:55:06 ERROR - Try factory resetting the device
2025-11-12 18:55:06 ERROR - Verify the PIN is correct from device label
2025-11-12 18:55:06 ERROR - Ensure device is in pairing mode
2025-11-12 18:55:06 ERROR - Retry - we'll attempt to resume from saved Part 1 state
2025-11-12 18:55:06 ERROR ============================================================
2025-11-12 18:55:06 ERROR Controller-based pairing failed: All pairing attempts failed - see troubleshooting info above
Traceback (most recent call last):
File "/home/pi/TadoLocal/tado_local/bridge.py", line 541, in perform_pairing_with_controller
pairing_data = await TadoBridge.perform_fresh_pairing(host, port, hap_pin, controller_id, db_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/pi/TadoLocal/tado_local/bridge.py", line 355, in perform_fresh_pairing
raise Exception("All pairing attempts failed - see troubleshooting info above")
Exception: All pairing attempts failed - see troubleshooting info above
2025-11-12 18:55:06 ERROR Pairing failed with error: All pairing attempts failed - see troubleshooting info above
Traceback (most recent call last):
File "/home/pi/TadoLocal/tado_local/bridge.py", line 541, in perform_pairing_with_controller
pairing_data = await TadoBridge.perform_fresh_pairing(host, port, hap_pin, controller_id, db_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/pi/TadoLocal/tado_local/bridge.py", line 355, in perform_fresh_pairing
raise Exception("All pairing attempts failed - see troubleshooting info above")
Exception: All pairing attempts failed - see troubleshooting info above
2025-11-12 18:55:06 ERROR Pairing failed: All pairing attempts failed - see troubleshooting info above
2025-11-12 18:55:06 ERROR ERROR: Failed to start Tado Local: All pairing attempts failed - see troubleshooting info above
2025-11-12 18:55:06 INFO Performing cleanup...
2025-11-12 18:55:06 INFO Stopping Tado Cloud API background tasks...
2025-11-12 18:55:06 INFO Background cloud sync task cancelled
2025-11-12 18:55:06 INFO Stopped background cloud sync task
2025-11-12 18:55:06 INFO Starting cleanup...
2025-11-12 18:55:06 INFO Cleanup complete
2025-11-12 18:55:06 INFO Shutdown complete. Process will exit in 3 seconds.
2025-11-12 18:55:06 ERROR ERROR: All pairing attempts failed - see troubleshooting info above
2025-11-12 18:55:09 WARNING Forcing process exit after 3 seconds to avoid lingering SSE connections.
Authentication succeeded and another ~/TadoLocal $ tado-local --bridge-ip 192.168.2.2 --pin 123-45-678 -> same result
Any idea what I did wrong here?
Re: Tado Local and python plugin
Posted: Wednesday 12 November 2025 20:12
by jorknu
Wow, I think I will set up a new container to give this a try.
I have been trying to come up with some python stuff (also using aiohomekit) and then trying to get that connected to C++ so it can be build into the existing integration. But with little time this seems like a futile attempt.
What I was wondering about:
I have 4-5 years of data in my database of the C++ implementation.
Is there anyway to "import" the old data into the new sensors generated by a python implementation?
I know I can always just make some SQL to get the data out of one sensor and then inject it back in another.
But I do not feel like hacking out the DB and then reloading it with modified content if I do not have to.
Re: Tado Local and python plugin
Posted: Wednesday 12 November 2025 21:08
by waltervl
There are some API calls to add history data to a counter device
https://wiki.domoticz.com/Domoticz_API/ ... n_counters
But adding data directly in the database is not big problem if you already know some sql. Also you will add the data in a meter or multimeter _calendar table that only stores summarized daily history data. So not much harm you can do there.
And with an application like SQLite DB browser you can add data from a prepared excel file. So you do not have to know SQL. You only have to stop Domoticz when adding data to prevent locking.
Re: Tado Local and python plugin
Posted: Thursday 13 November 2025 7:59
by jannl
There is an issue regarding the pairing on github
Re: Tado Local and python plugin
Posted: Thursday 13 November 2025 8:57
by waltervl
And there seem to be some related changes in the plugin on the repository last few days so perhaps do a
git pull
in the plugin folder and test again...