Robotic control of Google Nest Gen 3 thermostat

OK so as I cannot access any of my Nest thermostat controller functionality (Google/Nest killed the open API access) I had to come up with a creative way of controlling both my hot water and central heating together - I need the hot water on at the same time as the heating or our CH system doesn’t work - and doing that via Nest is tricky…the hot water schedule is easy to setup but Nest has a rather odd (but probably logical if your heating system is logical) system whereby I have to set desired temperatures against a schedule so I just can’t guarantee everything operates as I need it to. To me, and I guess I should probably have just bought a Tuya thermostat controller, the easiest/cheapest solution seemed to be a Switch Bot! Here’s a quick video of it working via IFTTT, with all the on/off schedule controlled via Apilio time conditions so it’s super quick and easy to update.

4 Likes

Every time I see those switch bot in action I can’t help laughing! They look so cute!
And it’s hilarious that in the super high-tech smart home automation world something so “primitive” like a switch bot has to help out :joy:

2 Likes

Yeah, I aslo have to give a shout out to Switch Bot for fixing my central heating for $15…worth way more than than that just showing people how it works!

1 Like

Love it… I had a Switchbot controlling my very not-smart wall A/C unit for a long while (it’s 240V, which in the US is basically impossible to get a smart plug for). The button isn’t clicky like that one though and it would sometimes not switch it off, expensively turning my living room into a fridge. Eventually i made my own 240V smart plug controller.

You might want to proactively change the battery on a schedule, depending on how many cycles it’s doing (maybe a cycle counter could send you an alert after X hundred runs… :thinking:)

1 Like

Thanks for the moral support and battery advice!

1 Like

Not as cute a solution, but the Nest heatlink has separate controls for hot water and heating, with the hot water control just switching power to the appropriate motorised valve when the time is as programmed. An inexpensive Tuya “light switch” could replicate the hot water side very easily, and give the same level of control (plus the capability of manual switching).

The central heating side of the Nest could indeed be largely replicated with a Tuya thermostat, but only if Apilio can control it properly (see my other thread–I have 2 of these and can’t get their temperatures to set properly via Apilio). A limitation with Tuya thermostats is that there does not seem to be any way of reading the current temperature from them. My solution to reading temperatures is to have an additional device, in my case a Ubibot sensor, which I query via IFTTT that in turn passes the values to Apilio.

Despite the lack of an open API, however, you have to agree that the Nest thermostats are far more ergonomic than any Tuya one I have seen!

2 Likes

Thanks Robin, yes I agree the ergonomics, and concept, are good but I have quite a lot of Nest kit and the only thing that still works via IFTTT is the Gooogle WiFi network connection for home/away notifications. …no camera triggers etc which is why I’m still a bit grrrr that Google did this.

I don’t have any experience with Tuya thermostats, but it is possible to read temps direct into Apilio from Tuya temp and humidity sensors. I have a couple of these but I’m sure there are a dozen things with more or less the same stuff inside.

Apilio seems to check once a minute and updates any conditions appropriately. Since you can have conditions set for different Tuya device temperature (or humidity) ranges, I found it a lot easier to set up and tweak than juggling multiple threshold checks in IFTTT (previously I was doing something similar with Switchbot temp sensors).

2 Likes

Hi @philsj, thanks for adding that! The frequency of checks is actually not time based, but whenever the sensor sends an update :slightly_smiling_face:
What Apilio can read from a thermostat or sensor depends also on the device. Some thermostat might allow it, but not the ones of @robin . It could also be that temperature is usually not available from thermostats because sensing it in a device attached to a radiator is very challenging. Maybe that’s why it is not always exposed?

2 Likes

Hi @pebneter @philsj ,
It certainly must be possible to read the temperature from a Tuya thermostat–you can ask Alexa what the temperature is so it certainly can be done! However, it isn’t exposed as far as the Apilio implementation is concerned (or any other implementation that I’m aware of).
Temperature accuracy due to positioning isn’t really a factor, and such devices also allow for an external temperature probe (readings can be set to be either from the internal or external sensor).

3 Likes

Ah, I see. That would explain the situation I had during the recent Tuya issues where one of my sensors went crazy and was sending an update every second. I don’t know if you have flood or rate-limit controls from your side but it may be worth considering if you’re at the mercy of the devices for those updates.

@robin Quite irritating that that value would not be exposed via their API, especially if Alexa has access to it, so you know it’s in there somewhere. The fun of home automation :laughing:

1 Like

Yes, indeed. I don’t know the reason for the differences.

OK… I’ve discovered how to do it but you have to access the tuya device direct. After signing up for a tuya developer account (which is free, and instant), and using their cloud api from the web-based developer platform to access my devices, I see that if I query “Get device status” there is a value associated with “upper_temp” that is the actual temperature reading multiplied by 2 (for my thermostats at least).

“Get Device Status” returns quite a complicated string:

{
“result”: [
{
“code”: “switch”,
“value”: true
},
{
“code”: “temp_set”,
“value”: 34
},
{
“code”: “upper_temp”,
“value”: 37
},
{
“code”: “eco”,
“value”: false
},
{
“code”: “child_lock”,
“value”: true
}
],
“success”: true,
“t”: 1634277020530
}

It should be possible to parse this to get the value (in the result above, my thermostat is reading 37 which corresponds to 18.5C). I will see if this is possible using an IFTTT webhook to call the device and writing a filter to extract the temperature.

2 Likes

Great supplementary info, thanks for sharing @robin !