core: Tado: Cannot control Tado Smart AC Control
The problem
I have a Tado Smart AC Control. I have disabled fallback mode.
Only two buttons on the Tado control in HA work - automatic schedule and power off.
All of the other controls do nothing (and changing the temperature does nothing). I have tested via the app and via my.tado.com. Controlling using these methods works as expected.
While the AC has been switched on using another method using the tado.set_climate_timer also does nothing when trying to change the temperature.
What version of Home Assistant Core has the issue?
2021.12.10
What was the last working version of Home Assistant Core?
Not known
What type of installation are you running?
Home Assistant OS
Integration causing the issue
Tado
Link to integration documentation on our website
https://www.home-assistant.io/integrations/tado/
Example YAML snippet
No response
Anything in the logs that might be useful for us?
No error is shown either in lovelace or logs.
Additional information
No response
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 1
- Comments: 110 (4 by maintainers)
Thanks everyone for your logs! I will prepare a fix in the coming days, and as soon as we identify what is an expected behavior, I will add tests to the integration or to
python-tadoto prevent that from breaking again. I will probably try to keep most of the logic inpython-tadoas I think it’s better to keep the HA integration as lightweight as possible.Stay tuned!
@fuzzysb thanks for the hint! I guess if
/capabilitiesreturns reliably what the API expects (e.g. your DRY mode must not send fanSpeed and/or temperature if I got it correctly), I should be capable of writing a test matrix that covers what should be sent and what should not based on available capabilities.Do you have any other suggestions/advice to keep in mind while upgrading this integration? Thanks!
Thanks everyone for trying it. At this point I think we’re hitting 3 different problems and unfortunately we need a bit of trial and error to get it right. I’ve published a new version that can collect more data, so if you can post the results here I can take a look during the week. Just:
config/custom_components/tadofolder.tado-integration-post-2022.5.dev2.tar.gzinconfig/custom_components/folder.This version includes the same fix as before (so nothing changes) but it provides more debug logs I can use to detect your issues. It logs:
Initialization
You will get an entry for every device you have installed via Tado. It’s enough if you post only the ones that don’t work, so I guess AC devices. The code automatically redacts some values to not leak anything that may be sensitive (e.g. firmware version), but take a look just in case!
If for any reason the code crashes (I didn’t implement any safety check by purpose), post here the exception.
When you launch a command
When you launch a command, it logs what parameters HA integration is sending to
python-tado.Overall, I’m pretty confident that the issue is that all of us have different registered devices (and/or versions) and
python-tadodoesn’t send the correct arguments to the API (that’s why when you do it, you get a4xxerror).@flosoft in your case it may be even another issue as it looks like it has to do with the schedule block. Did you try from your Tado app (the official one) to create a “fake” time block for smart scheduling and see if it works? Or maybe open the configuration page in HA and set the fallback mode to
MANUAL.@MacrosorcH @Tom109123 I managed to find a clean way to try this change in your installation. Ignore any steps written above and just follow this one. TL;DR:
python-tado-dev==0.13.0.dev1package that includes my change. It also has a different namespace (PyTadoDev) to avoid any version conflict with the official package.PyTadoDevnamespace, and installspython-tado-devinstead of the official one.Patch PyTado through a Custom Component
2022.5there is a breaking change I had to support, so pick the right version based on what version of HA you are using:tado-integration-pre-2022.5.tar.gzif you are using any version before2022.5tado-integration-post-2022.5.tar.gzif you are using any version after2022.5config/custom_componentsfolder, as you would do with any regular custom integration (you can find a lot of documentation if you are not familiar with this process).You don’t need to do anything else, as my integration is a drop-in replacement of the built-in one. To uninstall my change simply remove
config/custom_components/tadofolder.Debug the change
If everything goes well, you should not notice anything in particular. What you should do is use Tado integration without any extra config. When you start using it (dry mode, set cool temperature etc…) you should see these log lines in your HA logs:
Paste here every
PyTado.interfacelog line so that I can take a look and triage the issue if it doesn’t work. Note that you will see these log lines even if it works in which case you don’t need to post anything. If it works I’m going to send this change upstream and ask the maintainer for a release.Let me know how it goes!
Hi @MacrosorcH . Actually I did the investigation back in the days and by making the change I proposed here I made it work. I didn’t make the change upstream, but if I get some validation within this group, I may get more confidence that I’m actually solving all the problems AC related (and not just a subset).
What I can do tomorrow, is posting here some instructions to validate the change, and see if the problem I was experiencing is the same you have (it may be not). Then if we get consensus that it works, I can work with the maintainer to make the change and update the version of PyTado for the next HA release.
ok, I am pretty sure I know what the issue is with the AC, not all my modes on the capability such as heat and cool support swing, you are sending the swing command, you need to amend to review the capabilities and only if the mode supports swing should you even have the swing command in the json body. I examine the capabilities for all devices and only post if the properties exist in the capability. is this something you can fix? my python coding skills will need brushed up before I can jump in an do a pull request.
I developed the Tado plugin for Homeseer and i am moving over my HA solution to homeassistant. I can provide assistance in this matter as my homeseer plugin works with v3, Let me know if there is any insight and assistance I can provide.
I did some research too and I think the problem is on
PyTadolibrary. Is sending a payload withfanSpeedandswinginstead offanLevelandverticalSwing.At least this is the issue for me with Tado Smart Control V3. There might be more things to consider, e.g: Dry mode requires a temperature and it seems the home assistant panel is not setting it with that mode.
https://github.com/wmalgadey/PyTado/blob/master/PyTado/interface.py#L358-L363
@simonepsp Hello any chance we get an update with new ha tado library to get fan swing back?
That would be a good solution, at least for my specific situation as vertical swing is the most important.
Gotcha. Thanks for detailing the remaining issues there. 🙌
I unfortunately got a pretty busy few weeks lined up here. But if I have some time over the weekend, I’ll try to some of the last fixes published for you.
For the “light” toggle, we’d probably need to set up a separate entity, detached from the climate entity as I don’t believe the climate class has support for something like that.
For the preset, do you see any warning or error logs show up after it changes back from the Away preset to Home?
Oh thanks for the log there. I believe the error there would be my fault, as some fan/swing modes haven’t been fully accounted for yet. 😅
I’ll follow up tomorrow with a patch. 🙌
Ran into the issue myself here. Seems like the Tado API yields a
"fanLevel": [...]capability instead of"fanSpeed": [...]for each mode.I’m unsure if their API has changed, or if it’s just specific to my AC. But if anyone can confirm whether this is the case, I’ll be happy to see if I can’t pitch in a patch for PyTado.
A log from following the steps outlined by @palazzem would do just fine. https://github.com/home-assistant/core/issues/64416#issuecomment-1120227572 Make sure you grab the latest pre-release: https://github.com/palazzem/PyTado/releases/tag/0.13.0.dev3
I’ll try to publish my patch later this evening if it’s of any help to you. 👍
Are there any updates to get this working? Having trouble with it myself and it would be very nice if this works!
Looks like my debug is a pretty simple one to fix.
Firstly here is the log:
Here it appears that when set to “heat_cool” (which corresponds to AUTO) no target temperature is passed on. This could simply pass on
climate.air_conditioning.temperaturewhich when the unit is idle sets the target temperatures to the current temperature - thus when the unit is initially turned on it will try to keep the current temperature unless the user sets another temperature.Personally, for me fanSpeed could simply be set to “AUTO” and that would work perfectly fine for how I use the device. I believe there is an issue with how tado is reporting the available features to homeassistant. My supported_features is 17 which using the bitmapping here https://github.com/home-assistant/core/blob/dev/homeassistant/components/climate/const.py indicates that it only supports target temperature and preset mode.
Also, even with the unit already on, trying to set a temperature fails because again no fanspeed is set.
For me, the 0.13.0dev3 release does not fix thing. See the logs attached:
2022-05-22 07:40:48 ERROR (SyncWorker_6) [PyTadoDev.interface] Parameters: {'zone': 2, 'overlayMode': 'MANUAL', 'setTemp': None, 'duration': None, 'deviceType': 'AIR_CONDITIONING', 'power': 'OFF', 'mode': None, 'fanSpeed': None, 'swing': None} 2022-05-22 07:40:49 ERROR (SyncWorker_6) [PyTadoDev.interface] {'type': 'MANUAL', 'setting': {'type': 'AIR_CONDITIONING', 'power': 'OFF'}, 'termination': {'type': 'MANUAL', 'typeSkillBasedApp': 'MANUAL', 'projectedExpiry': None}} 2022-05-22 07:40:57 ERROR (SyncWorker_0) [PyTadoDev.interface] Parameters: {'zone': 2, 'overlayMode': 'MANUAL', 'setTemp': None, 'duration': None, 'deviceType': 'AIR_CONDITIONING', 'power': 'ON', 'mode': 'AUTO', 'fanSpeed': None, 'swing': None} 2022-05-22 07:40:57 ERROR (SyncWorker_0) [PyTadoDev.interface] {'errors': [{'code': 'setting.notSupported', 'title': 'temperature required for mode AUTO'}]} 2022-05-22 07:41:01 ERROR (SyncWorker_2) [PyTadoDev.interface] Parameters: {'zone': 2, 'overlayMode': 'MANUAL', 'setTemp': 20.79, 'duration': None, 'deviceType': 'AIR_CONDITIONING', 'power': 'ON', 'mode': 'HEAT', 'fanSpeed': None, 'swing': None} 2022-05-22 07:41:01 ERROR (SyncWorker_2) [PyTadoDev.interface] {'errors': [{'code': 'setting.notSupported', 'title': 'fan level not in supported fan levels [LEVEL4, LEVEL1, LEVEL2, AUTO, LEVEL3]'}]} 2022-05-22 07:41:07 ERROR (SyncWorker_4) [PyTadoDev.interface] Parameters: {'zone': 2, 'overlayMode': 'MANUAL', 'setTemp': 20.79, 'duration': None, 'deviceType': 'AIR_CONDITIONING', 'power': 'ON', 'mode': 'COOL', 'fanSpeed': None, 'swing': None} 2022-05-22 07:41:07 ERROR (SyncWorker_4) [PyTadoDev.interface] {'errors': [{'code': 'setting.notSupported', 'title': 'fan level not in supported fan levels [LEVEL4, LEVEL1, LEVEL2, AUTO, LEVEL3]'}]} 2022-05-22 07:41:10 ERROR (SyncWorker_6) [PyTadoDev.interface] Parameters: {'zone': 2, 'overlayMode': 'MANUAL', 'setTemp': None, 'duration': None, 'deviceType': 'AIR_CONDITIONING', 'power': 'ON', 'mode': 'DRY', 'fanSpeed': None, 'swing': None} 2022-05-22 07:41:10 ERROR (SyncWorker_6) [PyTadoDev.interface] {'errors': [{'code': 'setting.notSupported', 'title': 'temperature required for mode DRY'}]} 2022-05-22 07:41:13 ERROR (SyncWorker_0) [PyTadoDev.interface] Parameters: {'zone': 2, 'overlayMode': 'MANUAL', 'setTemp': None, 'duration': None, 'deviceType': 'AIR_CONDITIONING', 'power': 'ON', 'mode': 'FAN', 'fanSpeed': None, 'swing': None} 2022-05-22 07:41:14 ERROR (SyncWorker_0) [PyTadoDev.interface] {'errors': [{'code': 'setting.notSupported', 'title': 'fan level not in supported fan levels [LEVEL4, LEVEL1, LEVEL2, AUTO, LEVEL3]'}]} 2022-05-22 07:41:23 ERROR (SyncWorker_1) [PyTadoDev.interface] Parameters: {'zone': 2, 'overlayMode': 'MANUAL', 'setTemp': 22.0, 'duration': None, 'deviceType': 'AIR_CONDITIONING', 'power': 'ON', 'mode': 'COOL', 'fanSpeed': None, 'swing': None} 2022-05-22 07:41:24 ERROR (SyncWorker_1) [PyTadoDev.interface] {'errors': [{'code': 'setting.notSupported', 'title': 'fan level not in supported fan levels [LEVEL4, LEVEL1, LEVEL2, AUTO, LEVEL3]'}]} 2022-05-22 07:41:27 ERROR (SyncWorker_3) [PyTadoDev.interface] Parameters: {'zone': 2, 'overlayMode': 'MANUAL', 'setTemp': 23.0, 'duration': None, 'deviceType': 'AIR_CONDITIONING', 'power': 'ON', 'mode': 'COOL', 'fanSpeed': None, 'swing': None} 2022-05-22 07:41:27 ERROR (SyncWorker_3) [PyTadoDev.interface] {'errors': [{'code': 'setting.notSupported', 'title': 'fan level not in supported fan levels [LEVEL4, LEVEL1, LEVEL2, AUTO, LEVEL3]'}]} 2022-05-22 07:41:27 ERROR (SyncWorker_4) [PyTadoDev.interface] Parameters: {'zone': 2, 'overlayMode': 'MANUAL', 'setTemp': None, 'duration': None, 'deviceType': 'AIR_CONDITIONING', 'power': 'OFF', 'mode': None, 'fanSpeed': None, 'swing': None} 2022-05-22 07:41:27 ERROR (SyncWorker_4) [PyTadoDev.interface] {'type': 'MANUAL', 'setting': {'type': 'AIR_CONDITIONING', 'power': 'OFF'}, 'termination': {'type': 'MANUAL', 'typeSkillBasedApp': 'MANUAL', 'projectedExpiry': None}}Thanks @palazzem, see below my logs with version 0.13.0.dev3. I confirm that, if I use the official Tado app, all my modes (AUTO, HEAT, COOL, FAN, DRY) work as expected, including fan speeds.
To be precise, about fan speeds:
Still, the Tado app is a reasonable approximation of the functionalities of the A/C.
Note also that the Tado app allows horizontal swing control, which the A/C does not have (so, changing horizontal swing settings in the Tado app simply does nothing). Vertical swing control works perfectly fine instead.
If I can help with anything, testing or something else, please let me know, I would be happy to!
I think I have an idea where the issue is coming from, but no idea how to resolve it. I have two different AC systems. The one in the house has 4 units and is working fine in Home assistant.
The one in the home office a single split unit and not working from Tado, although I think it did work when i used homekit integration.
The non working one has more options in TaDo it has swing on both directions but the working one only has up and down swing. Interestingly both have swing in both directions that can be controlled, but Tado doesn’t seem to know it on the one that works.
In HA neither has option to set the swing, but I assume (and it was referenced above) that some swing messages are being sent but not enough for the ones with two options to understand what to do.
I am experiencing the same issue. Home Assistant 2022.4.3 core-2022.4.3 Tado Integration Mitshubishi Airco Tado V3+
Devices automatically discovered, fallback disabled, as instructed on similar issues. Tried one-block Smart Schedule in Tado, and Multiple block schedules as well.
Result: I can only Power On the aircon using the schedule button, and power it off. All else fails. Nothing specific in the logs. Tried re-adding Tado integration, reconnecting tado with aircon, and again re-adding Tado integration. All with no result.
@north3221 what information can I provide you with? Specific config files or anything?
I don’t have AC so its really difficult for me to do anything here to help as I cant triage/test any changes… It would be useful if someone with the problem set up locally and raised a pr, as @fuzzysb was going to but given he no longer has ac either… anyone else?
From what @fuzzysb says above it looks like a change to HA integration needed, to check capability per mode rather than per device. However, reading the thread over here it seems @palazzem suggests here its an issue with PyTado in that if settemp isnt set then it doesnt send swing and fanspeed.
So based on this:
@fuzzysb is suggesting swing is being sent even on modes not supporting it but @palazzem is suggesting that swing is not being sent when it should be…
So even if I wanted to help, with no ac, no way of testing and not really clear which way round (or which lib) the problem is… I am a bit stuck
Anyone provide a bit of clarity on which way round the issue is and when it occurs/doesnt?
Happy to help test too with my Tado Smart AC Control V3+. With the Tado app, my AC supports Heating and Cooling just fine, so I could test both of those if it gets fixed in the HA integration.
Also see: https://github.com/home-assistant/home-assistant.io/issues/21831
I am not sure its going to get fixed tbh, as I no longer need AC control in my new house I was going to take along my complete tado system, but the people purchasing the house wanted to retain the tado system. I have now upgraded to a Honeywell Evo Home system as i hear better things over tado for control especially around battery usage.
Great thanks @north3221 for the headstart on this. I will take a look in a couple of weeks after I have finished moving home and getting settled, but it’s a great starter for 10
@fuzzysb The proper way to fork and test is to set up a dev environment using visual studio code and dev container, see here.
I couldn’t get that working for the dev I have done on Tado integration, so I usually just clone and stick my changes in custom_component folder so I can check they work (any integrations in there overwrite the official ones) NB you have to add a version to the manifest.
I have the same issue. However it seems to work via the node red tado plugin. Maybe something in the API changed?