Thermostat Controller app and Google Home

After I switched to using the built-in Thermostat Controller app from my homebrew setup using Virtual Thermostats I noticed that my Google Homes can no longer change the temperature. From this thread: Google Home not Setting Thermostat Temp it sounds like the problem may be that the Thermostat Controller device type doesn't implement lastRunningMode. I'd test it out by swiping the bit of code that does this from the Virtual Thermostat, but since the Thermostat Controller device isn't public I can't. @bravenel for visibility.

Could you show me a screenshot of the Current Status (right side) of a thermostat the Google Home will set. As far as I know, lastRunningMode is not a standard attribute (which doesn't mean that GH might not be looking for it).

Further to the above, I'm not aware of any thermostat that has that attribute, so I doubt that's the issue. I checked Z-Wave, Zigbee, and Lutron thermostats. None of them have that. I don't have Google Home setup, so not in a good position to test this. As far as I know, there is nothing out of the ordinary about the Controller Thermostat driver and attributes.

The Google Home will be operating on the "virtual" thermostat created by the Thermostat Controller app which uses the Thermostat Controller device type. Here is what one of them is currently showing:
status
Take a look at the previously linked thread. I can't speak as to any other thermostats, but the Virtual Thermostat supports it and when I was previously using that in combination with my own custom app everything worked, so my experience and the contents of that thread match up. Happy to test a modified Thermostat Controller if need be to verify if that is indeed the root cause.

It has all of the same attributes as a normal thermostat, so nothing really to modify. Sorry, but not digging through old threads, too much has changed since then. Show me the same screenshot as above for a thermostat that DOES work with GH, and point out what's different.

So my mistake it's actually a data value and not an attribute. Here is that value on a Virtual Thermostat I just created:

I noticed that the CT101 device type implements this, but the Generic Z-Wave Thermostat does not. So I did an experiment. The physical thermostat backing the Thermostat Controller is currently using Generic Z-Wave and Google Home is unable to change the temperature on that directly either. Once I switched it to CT101 it worked with no problem. Again this is on the physical thermostat and not the "virtual" one created by the Thermostat Controller app. There could certainly be other differences between the CT101 driver and the Generic Z-Wave one, but the difference in regards to lastThermostatMode is so far consistent with other experiences that I've found in the forum in regards to Google Home's ability to change the temperature setpoint.

Here's a thread you responded to were @mike.maxwell mentions how that value is used to work around auto mode:

I don't know what other built-in devices set this data value, but I can find a number of third party drives that have implemented it.

It would still be useful if you would post the Current Status for a thermostat that works with GH. Data values like you show are internal to the driver, not something exposed to GH. So, again, I doubt that is the reason these thermostats don't work.

Using the CT101 and Generic Z-Wave Thermostat drivers as examples:

CT101 (works w/ Google Home)
status-ct101

Generic Z-Wave (does not work w/ Google home)
generic-status

So nothing interesting there. If you look at the differences in data:

CT101

Generic

In the above case these are two physically different devices and the reason for that is because after I switched the Generic one to CT101 and the lastRunningMode data value was set, even after I switched it back to Generic that value was still there. Before I messed with it the value was not present like shown in the above unmodified device. I can confirm that the value is no longer being updated after switched back to Generic because when I switched the modes between heat/cool the lastRunningMode value did not change.

As for lastRunningMode not being visible to Google Home, this quote may somewhat explain how it comes into play:

I take it back. You're right. I found a Virtual Thermostat driver that implements lastRunningMode and it does work with GH.

Thermostat Controller driver will be updated accordingly for the next release.

1 Like

Awesome. Thanks for your help.