[Release] Tado (Connect)

I have released v2.8 of my Tado (Connect)

this is a port of my Smartthings Smartapp and Device Handler (seems to work ok, however i am very new to Hubitat and still havent got my head fully around the platform, so please test and give any feedback)

countless hours have been dedicated to updating this smartapp and associated device types, if you use these and find them useful, please consider donating, this aids in further development and support. and any and all donations would be very much appreciated.

8

Full install instructions are provided on the github page

5 Likes

Hi Fuzzyligic,

currently using Tado Connect for SmartThings, so excited to see how it's going to work with Hubitat. Thanks for providing your code :smiley:

Jan

1 Like

@Fuzzyligic

Hi,

I finally got around to transfering all my door/window sensors from ST to Hubitat. Now I'm trying to control Tado based on the state of doors and windows, i.e. turn off the heating if a windows is open and return to automatic mode when the windows is closed again.

May I ask if you have an idea how to do this with Hubitat?

Using Rule Machine, I can turn the heating off, but turning it back on doesn't work. I'd like to return to Tado's HOME mode, which can be triggered using the endManualControl command. This would work using WebCoRe or SharpTools's rule engine, but Rule Machine, doesn't support this kind of command. In Rule Machine, I can only choose thermostat modes. Wouldn't it make sense if setting the auto mode for a Tado thermostat would also trigger endManualControl?

Thanks a lot for your work
Jan

The way I use RM and webCoRE is set the heating point.
If I'm away I set heating to 5C.
At home I set the temperature depending on the time of day.
I have also configured some virtual devices to control the heating.
In the summer my virtual Heating switch is off which sets the heating to 10C.
In the winter I turn the virtual Heating switch on which then sets the heating set points depending on time of day.
I also have a Heating Boost switch which I can turn on which overides all the heating rules and turns the heating on regardless of home or away. This is set to turn off after 1 hour.
Doesn't solve your issue but gives you an idea of how to get round the issue.

Thanks for your reply. I use Tado's own heating profiles, so I have no need to manually change temperatures in Hubitat. Using webCoRE, I can of course achieve what I want - endManualControl can be triggered from there. Do you know if webCoRE rules will work locally, i.e. even if there is no internet connection?

webCoRE runs locally on the HE hub.
The only reason I use RM/webCoRE and not the Tado heating profiles is mine tends to overheat. I have been in touch with Tado on numerous occasions and they have changed a few things, (so they have said) but it still keeps happening occasionally.
By controlling it through RM/webCoRE it doesn't. Really strange.

Thanks for the info regarding webCoRE. I don't have issues with overheating. The problems I've had so far were related to high battery usage of TRVs and there were some issues with TRVs not being able to close the valve properly on two radiators - which also leads to overheating of course.

Might still be interesting to control Tado via Hubitat because this allows measuring the temperature using a sensor that is located a couple of meters away from the TRV itself. Maybe I'll try it out.

1 Like

@janwerner,

I won't be amending to change the auto mode to return to Tado Schedule, as i know i use the auto mode on my AC for exactly what it is designed for.

I know when rule machine was working originally on Smartthings that it could execute custom commands. i am not sure if that still works on Hubitat and i cant check as i dont have my hub anymore.

may be worth reaching out to @bravenel to see if it is still supported in rule machine, or could be added in the future

@Fuzzyligic Thanks for your feedback. Using webCoRE as it is to control Tado - working fine, too.

RM still has custom commands. So does Button Controller.

Thanks, found the custom command feature for RM.

For this purpose, webCoRE is probably still better suited because I can use one single rule for all rooms using variables.

When adding the app to my Hubitat and setting the default temps (after choosing which Tado devices), on the same screen it says "Select your hub" yet the drop down is not appearing so I can't progress, any idea why?

I'm having the same issues as @psyvision, has something been changed in Hubitat that's breaking this?

It seems related to an incorrect object type on line 390 of the app, seems it's expecting some kind of object with an ID, but is actually getting a string. It's the line hubID = myHub.id that seems to be causing the issues.

def getHubID(){
	def hubID
    if (myHub){
        hubID = myHub.id
    } else {
        log.debug("hub type is ${location.hubs[0].type}")
        def hubs = location.hubs.findAll{ it.type == "PHYSICAL" } 
        if (hubs.size() == 1){
            hubID = hubs[0].id
        }
    }
    log.debug("Returning Hub ID: ${hubID}")
    return hubID
}

Ok, have this working, if you change the above section to be as follows all seems to work ok.

def getHubID(){
	def hubID
        log.debug("hub type is ${location.hubs[0].type}")
        def hubs = location.hubs.findAll{ it.type == "PHYSICAL" } 
        if (hubs.size() == 1){
            hubID = hubs[0].id
        }
    log.debug("Returning Hub ID: ${hubID}")
    return hubID
}

Thanks! I'll maybe modify my code later and see what happens.

In my case it seemed as though myHub was falsey so it went into the else and then hubs contained multiple items in the array so I had just hard-coded it to return the first. I'm not sure what this related to, I wondered if my SmartThings was confusing it some how. I couldn't find any documentation on what location actually is from a code perspective.

Yea I changed it to:

def getHubID(){
	def hubID
    if (myHub){
        hubID = myHub.id
    } else {        
        def hubs = location.hubs.findAll{ t -> t.type == "PHYSICAL" } 
        log.debug("hub type is ${location.hubs[0].type} - ${hubs.size()}: ${hubs[0]}")
        //if (hubs.size() == 1){
            hubID = hubs[0].id
        //}
    }
    log.debug("Returning Hub ID: ${hubID}")
    return hubID
}

Would be good to get @Fuzzyligic take on this?

@psyvision i can't really comment about what changed from when this was working to when this stopped working for people as i don't have a hubitat hub anymore. i had a couple of issues which made me step back from keeping it as part of my IoT solution.

I am wondering if any of you have had the same issue i had where the hub would not boot and i had to re-initialise the hub after contacting Hubitat support and restore from backup. and this re-initialisation causes the hub count to be greater than 1 or indeed you own more than 1 Hubitat Hub under your account?

maybe the solution should be instead

def getHubID(){
	def hubID
    if (myHub){
        hubID = myHub.id
    } else {        
        def hubs = location.hubs.findAll{ t -> t.type == "PHYSICAL" } 
        log.debug("hub type is ${location.hubs[0].type} - ${hubs.size()}: ${hubs[0]}")
        if (hubs.size() >= 1){
            hubID = hubs[0].id
        }
    }
    log.debug("Returning Hub ID: ${hubID}")
    return hubID
}

The issue there may be that the first hub in the array may not be the valid live hub.

maybe if someone with the issue could post the output of the following line in debugging

log.debug("hub type is ${location.hubs[0].type} - ${hubs.size()}: ${hubs[0]}")

we can get a bead on the issue at hand.

The solution is open source, if you think this code should be changed to continue support then i suggest you do a pull request and provide proof the fix works on github i will approve it for addition into the source code.

Regards

Stuart Buchanan (FuzzyLigic)

Cheers Stuart, I'll try and get the debug information to help and will consider a PR.

My hub is pretty new and doesn't have that many devices, I've not had any boot issues so I'm not sure this is the case.

1 Like

HUB[1]: hub type is PHYSICAL - 2: com.hubitat.hub.domain.Hub@78d58bef

HUB[0]: hub type is PHYSICAL - 2: com.hubitat.hub.domain.Hub@26df9b62

So I'm not sure I'm any the wiser...

Well you have 2 hubs registered under your account. I didn't see this when developing the app. either something has changed so now everyone has 2 hubs associated. Or this is something that's affecting a few of you only.

Maybe worth reaching out to support and asking them to explain why you have 2 hubs linked