Google Home not Setting Thermostat Temp

That's awesome! One more custom driver in the trash can!

@mike.maxwell I think I found a glitch. If I manually change the temperature at the thermostat, it's not reflected in the Google Home (Hub or phone app) unless I go in to HE, click on the thermostat, then click "refresh". Then the settings update.

The thermostat will update the setpoints when changed at the thermostat, it's not the fastest update I've ever seen, but it does update.
I noticed it would take 2 or 3 seconds, this when running on a.c. (c wire), I would not run this thermostat on batteries.

Yeah I have the "c"wire connected. It was changed by the schedule at 8 am and when I checked it at around noon it still displayed the temp I set last night, both in GH and HE. Then when I played with it this evening, when I hit refresh everything was correct in HE and when I checked GH it was corrected there.

I'm not sure if this is related, or if it has been fixed as I haven't tested in a while but:

Granted that was related to nest which isnt officially supported.

With my GoControl user driver the local (at the thermostat) setpoint changes show up in Google Home as expected. Just tried it again to verify. So I don't think it is any kind of systemic GH integration issue.

Note that I did have to refresh the google home screen before the new setpoint showed on the google home display, though.

If it didn't update in HE, it could be a driver issue - but just as likely may be an update issue. @curtman3 Did you hit Configure on the device details page after changing to the new driver in 2.0.9?

All the commands are working with no issues thorugh GH in heating or cooling mode. The only issue seems to be with "refresh". Even in HE no changes are seen unless I manually press refresh in HE.

Yes, but did you hit Configure on the thermostat device details page? If not, it is worth a shot. Might not fix it, but very well may. Won't hurt in any case.

Yes I did and no change. Hit refresh and everything matches correctly. Is there a way to build a refresh into the driver?

You could make an RM rule to do it externally. It will never be added into the driver that way though, as that isn't how it is supposed to work. Drivers are not supposed to need to hit refresh to work...

You may want to turn on debug logging, and see if anything is even being logged in Hubitat when making a setpoint change on the thermostat.

If it is, share the log with @mike.maxwell. If nothing is even being logged on the HE side when you make a local thermostat setpoint change, then there is a bigger issue with reporting from the thermostat.

Thanks for the tip. Can you guide me on how to do that in RM? PM if you want so we don't derail this topic too much. I took a quick look this morning before work, but couldn't find anything about that.

I will definitely look in to the logs.

Thanks!

You bet. After I'm home from work I'll show you how I do it. Would be the same as how I refresh Life 360 every 5 minutes (I think).

1 Like

So a couple of things I have found:

  1. No updates are sent with temperature changes. This is confirmed watching the log.
  2. I was playing around with refresh. Here's the weird thing. If I go and change the the temperature, say to 84 directly at the thermostat, and I hit refresh in HE, it reverts back to 76 on the thermostat, which I believe is the temp in the schedule on the thermostat.

I forgot about this the other day...

Here is my TRIGGER based RM rule to refresh Life 360. Same could be done for your refresh. Obviously you would change the action to refresh, instead of push button.

I would still encourage you to submit this to support, though, and work through the root cause.

Thanks. I'll play with it more, but you're right, something more underlying is happening. Actually, it might be simple as the thermostat doesn't send updates.

Ok something more interesting is installed this driver: [Port] Enhanced Z-Wave Thermostat (CT-100 w/ Humidity and Time Update)

Now what happens is I can Poll the thermostat under HE and get all the correct information, and it leaves the set temperature and what I manually input on the thermostat, but when I go over to Google home, it doesn't display the correct temperature, and it doesn't update the Thermostat.

I'm still very new to HE, 3 weeks in, having transitioned from IRIS to ST for a month then HE. One of the main issues I had with both ST, and now HE involves the CT101 and the Google home devices I added. It the CT101 is in Auto mode instead of Heat or Cool, all bets are off on how the google home app sees the thermostat, and what will happen if you tell google to set a temperature. It may change the cooling set point, the heating set point, or change nothing at all, and what it will change it to may or may not have anything to do with the value you told it to change to. Having a wife that really likes using google to control things is at the age where a comfortable temperature changes on an daily, if not hourly basis, I make sure to always have the thermostat in a specific heat or cooling mode rather than auto even though it's that time of year when it changes day to day as to which mode I need.

Probably not related to your issues, but it's worth checking to see if you only have issues when trying to use google with the thermostat set to Auto.

I'm not running auto, only specific heat or cool mode. The issue is that the stat doesn't appear to be sending updates to HE. If I do a refresh it resets the temperature to what I think is the schedule on the stat

I'm not going to look through the code, as I don't have one of these thermostats. But from my experience integrating the GoControl thermostat with Hubitat and Google Home, here are a few thoughts.

Does whatever driver you are using have the "thermostatSetpoint" and "lastRunningMode" variables properly implemented? Both of those are needed for a HE driver to integrate with with Google Home in Hubitat - per the HE developers. I know I had to add them to my Enhanced GoControl driver to make GH integration work.

Also, make sure that the thermostat/driver can handle GH sending back setpoints with a decimal (happens a lot if you use the "slider circle" to adjust temperature setpoint on the GH side) - some thermostats can handle decimal setpoints when in Fahrenheit mode, and some can not. For the ones that can not you have to round/massage the setpoint in the driver to a whole number before sending it to the thermostat.

Here is how I handled that part in my driver:

def p = (state.precision == null) ? 0 : state.precision

if (p==0) {
degrees2 = Math.rint(degrees)
} else {
degrees2 = (Double)degrees
degrees2 = degrees2.round(p)
}

For lastRunningMode I did something like this:

def tos = getDataValue("thermostatOperatingState")
def tm = getDataValue("thermostatMode")
def lrm = getDataValue("lastRunningMode")

if (lrm == null) {
if (tm == "cool") {
updateDataValue("lastRunningMode", "cool")
lrm = "cool"
} else {
if (tm == "heat") {
updateDataValue("lastRunningMode", "heat")
lrm = "heat"
} else {
if (tm == "auto") {
updateDataValue("lastRunningMode", "heat")
lrm = "heat"
}
}
}
}

I don't know how to look in to the stock driver for the CT101. There are no issues with GH working with it. It works perfect. The issue is there is no refresh or updates coming from the thermostat. But if I manually refresh from HE, it resets the temperature to the schedule.

Here is a copy of the log from a refresh. It shows the the cooing temp is set at correctly, but after the refresh, it resets the temp, in this case, back to 76.

dev:1612019-05-05 01:35:12.957 pm infoThermostat fan is auto

dev:1612019-05-05 01:35:12.950 pm debugcmd:ThermostatFanModeReport(fanMode:0), desc:zw device: 08, command: 4403, payload: 00 , isMulticast: false

dev:1612019-05-05 01:35:12.068 pm infoThermostat mode is cool

dev:1612019-05-05 01:35:12.062 pm debugcmd:ThermostatModeReport(mode:2), desc:zw device: 08, command: 4003, payload: 02 , isMulticast: false

dev:1612019-05-05 01:35:11.248 pm infoThermostat is idle

dev:1612019-05-05 01:35:11.244 pm debugcmd:ThermostatOperatingStateReport(operatingState:0), desc:zw device: 08, command: 4203, payload: 00 , isMulticast: false

dev:1612019-05-05 01:35:10.473 pm infoThermostat thermostatSetpoint was set to 78°F

dev:1612019-05-05 01:35:10.468 pm infoThermostat coolingSetpoint was set to 78°F

dev:1612019-05-05 01:35:10.431 pm debugcmd:ThermostatSetpointReport(setpointType:2, precision:0, scale:1, size:1, value:[78], scaledValue:78), desc:zw device: 08, command: 4303, payload: 02 09 4E , isMulticast: false

dev:1612019-05-05 01:35:09.662 pm debugcmd:ThermostatSetpointReport(setpointType:1, precision:0, scale:1, size:1, value:[69], scaledValue:69), desc:zw device: 08, command: 4303, payload: 01 09 45 , isMulticast: false

dev:1612019-05-05 01:35:08.938 pm infoThermostat temperature is 73.0°F

dev:1612019-05-05 01:35:08.916 pm debugcmd:SensorMultilevelReport(precision:1, scale:1, sensorType:1, sensorValue:[2, 218], size:2, scaledSensorValue:73.0), desc:zw device: 08, command: 3105, payload: 01 2A 02 DA , isMulticast: false

dev:1612019-05-05 01:35:08.878 pm infoThermostat temperature is 73.0°F

dev:1612019-05-05 01:35:08.858 pm debugcmd:SensorMultilevelReport(precision:1, scale:1, sensorType:1, sensorValue:[2, 218], size:2, scaledSensorValue:73.0), desc:zw device: 08, command: 3105, payload: 01 2A 02 DA , isMulticast: false

dev:1612019-05-05 01:35:07.902 pm inforefresh...