[Alpha] Community-maintained Google Home integration

See the discussion on this issue for my thoughts on local fulfillment. If Google is able to do speech recognition locally on the device it could speed things up a bit or allow things to possibly work while your internet is down. If they can't, then it likely won't make much, if any, difference. I think it's worth doing eventually, but it's a lot of work for potentially only a very small gain.

Hi, I have a question that's probably answered in this thread so apologies if it is.. I tried skimming through the posts but there's a lot to go through.

My high-level question is -- is this driver meant to replace the built-in Google Home driver? Are there any known issues of things that it can't do as well as the built-in version? I've had good luck using other community drivers as it doesn't seem the built-in ones ever get updated. For example, I've been looking at a log entry from the built-in Google Home driver for 2 years now:

app:12020-10-23 07:32:56.441 pm errorjava.lang.NullPointerException: Cannot invoke method toBigDecimal() on null object on line 1125 (stateChangeHandler)

I don't think it's causing any real issues but the developer in me thinks it's the kind of thing that should be easy to fix :slight_smile:

Anyway, I can just try it out but the setup seems a little complicated so I wanted to ask first. Ultimately, I'm just looking to know if this can be used instead of the built-in driver.. I do use Google Assistant often to control my Hubitat devices so it's an important one for me.

This integration provides much more functionality than the built in google integration.

Smart assistant stuff imo has always been given back burner for other projects deemed more relevant to the target user base. (something like people with 5 or 6 devices).

1 Like

Definitely this. For example, Google Home supports dozens of device types with many more types of actions than the built-in integration supports.

The community integration is much more customizable, so fans, window shades, etc. work natively in Google Home.

1 Like

Great app, glad I found it, solved my device import challenge into GH. only challenge I have is none of the sensors I imported have the link allowing me to trigger the action from the app. I can use a voice command but not by interacting with the device on the GH app. am I missing something?
apologies in advance if the answer is buried someplace in this thread... i tried hunting for it

answer found I guess

I THINK I know why Google is (selfishly) doing this. If they allow the app to have full control, then there is no need for the Hub devices, everyone could just use tablets. Nonetheless, I still think the app should work like the Hub devices.

1 Like

I keep getting the error "couldn't reach [test] {ACTION_NAME}. Please Try Again"

I get to the login, I select my door lock I set up, but after I press Authorize it does the thinking spinning and then spits out that error, Can you help me?

If you turn on debug logging in the Hubitat app, do you see anything in the Hubitat logs when you try to pair with Google Home? If so then it's likely an issue with the device config; post the log messages here and I can take a look. If not then it's likely an issue with the OAuth config or fulfillment URL in your Google Action.

Came across this app and got it installed and running. Excellent work. So refreshing to finally be able to connect fans, door locks, curtains, etc correctly. (Though I do wish Google would give us a proper UI in the Home App for these device types...)

Anyway, just wanted to pop in with the rare feedback that this app is working and I got it installed with no issues. A+ Highly recommended.

2 Likes

Debug is on for the app, but nothing is showing when trying to connect. I copied (ctrl+c) everything from the OAUTH setup to the developer section per instructions on here. Tried it 4 different times and none of the apps will connect. They all have the same error and I even deleted the app and reinstalled and ran through the instructions again verbatim but still no dice.

Double check the OAuth client secret. Hubitat blocks you from copying that in some browsers, and it's obscured in the Google interface, so it's easy to think you've pasted it in there when you really pasted the client ID again. Try to copy it into notepad or something first and check that it matches what's shown in the Hubitat UI.

I finally got it to work after the 5th time recreating the project and got my front door lock connected. But after that I went and added the rest of my devices and tried to resync to add the new device and got the same error as before (when I didn't have any devices setup, just the modes), so I tried reconnect account, error again.... Any ideas?

Along with the error on connecting, the front door unlock doesn't work if I add pin codes...

The most likely culprit is that some combination of settings in one of your device types isn't valid. Turn on debug logging in the Hubitat app when you re-sync with all of your devices and watch the logs. You should see the SYNC request and response data get logged. Or if the app hit an error generating the response then you'll see that logged. Whichever one you get here and I can take a look at it.

Touch controls are not supported for device actions that require a PIN code; only voice control will work. See the note at the top of this page.

Okay, I thought it'd work like the Alexa skills for starting my car where I verbally say my code.

Here are the logs from synching.

app:6492021-06-26 21:26:09.054 debug{"requestId":"13131491011846954710","payload":{"devices":[{"id":"410","type":"action.devices.types.LOCK","traits":["action.devices.traits.LockUnlock"],"name":{"defaultNames":["Alfred Z-Wave Lock"],"name":"Front Door"},"willReportState":false,"attributes":{},"roomHint":"Front Door"},{"id":"401","type":"action.devices.types.DOOR","traits":["action.devices.traits.OpenClose"],"name":{"defaultNames":["Generic Zigbee Contact Sensor (no temp)"],"name":"Garage"},"willReportState":false,"attributes":{"discreteOnlyOpenClose":true,"queryOnlyOpenClose":false},"roomHint":"Garage"},{"id":"425","type":"action.devices.types.DOOR","traits":["action.devices.traits.OpenClose"],"name":{"defaultNames":["Generic Z-Wave Contact Sensor"],"name":"Master Bedroom Door"},"willReportState":false,"attributes":{"discreteOnlyOpenClose":true,"queryOnlyOpenClose":false},"roomHint":"Master Bedroom"},{"id":"402","type":"action.devices.types.DOOR","traits":["action.devices.traits.OpenClose"],"name":{"defaultNames":["Generic Zigbee Contact Sensor (no temp)"],"name":"Garage Door"},"willReportState":false,"attributes":{"discreteOnlyOpenClose":true,"queryOnlyOpenClose":false},"roomHint":"Garage"},{"id":"103","type":"action.devices.types.DOOR","traits":["action.devices.traits.OpenClose"],"name":{"defaultNames":["SmartThings Multipurpose Sensor V5"],"name":"Front Door Sensor"},"willReportState":false,"attributes":{"discreteOnlyOpenClose":true,"queryOnlyOpenClose":false},"roomHint":"Front Door"},{"id":"421","type":"action.devices.types.SENSOR","traits":["action.devices.traits.OpenClose"],"name":{"defaultNames":["Moisture Sensor"],"name":"Laundry Room Leak Detector"},"willReportState":false,"attributes":{"discreteOnlyOpenClose":true,"queryOnlyOpenClose":true},"roomHint":"Laundry Room"},{"id":"422","type":"action.devices.types.SENSOR","traits":["action.devices.traits.OpenClose"],"name":{"defaultNames":["Generic Component Water Sensor"],"name":"Laundry Room Leak Detector (Sensor 1)"},"willReportState":false,"attributes":{"discreteOnlyOpenClose":true,"queryOnlyOpenClose":true},"roomHint":null},{"id":"423","type":"action.devices.types.SENSOR","traits":["action.devices.traits.OpenClose"],"name":{"defaultNames":["Generic Component Water Sensor"],"name":"Laundry Room Leak Detector (Sensor 2)"},"willReportState":false,"attributes":{"discreteOnlyOpenClose":true,"queryOnlyOpenClose":true},"roomHint":null},{"id":"370","type":"action.devices.types.SENSOR","traits":["action.devices.traits.TemperatureSetting","action.devices.traits.HumiditySetting"],"name":{"defaultNames":["Thermostat"],"name":"Thermostat"},"willReportState":false,"attributes":{"thermostatTemperatureUnit":"F","queryOnlyTemperatureSetting":true,"queryOnlyHumiditySetting":true},"roomHint":"Gauges"},{"id":"420","type":"action.devices.types.SENSOR","traits":["action.devices.traits.TemperatureSetting","action.devices.traits.HumiditySetting"],"name":{"defaultNames":["Device"],"name":"Game Room Temperature"},"willReportState":false,"attributes":{"thermostatTemperatureUnit":"F","queryOnlyTemperatureSetting":true,"queryOnlyHumiditySetting":true},"roomHint":"Living Room"},{"id":"68","type":"action.devices.types.SENSOR","traits":["action.devices.traits.TemperatureSetting","action.devices.traits.HumiditySetting"],"name":{"defaultNames":["Nursery Button"],"name":"Nursery Button"},"willReportState":false,"attributes":{"thermostatTemperatureUnit":"F","queryOnlyTemperatureSetting":true,"queryOnlyHumiditySetting":true},"roomHint":"Nursery"},{"id":"103","type":"action.devices.types.SENSOR","traits":["action.devices.traits.TemperatureSetting","action.devices.traits.HumiditySetting"],"name":{"defaultNames":["SmartThings Multipurpose Sensor V5"],"name":"Front Door Sensor"},"willReportState":false,"attributes":{"thermostatTemperatureUnit":"F","queryOnlyTemperatureSetting":true,"queryOnlyHumiditySetting":true},"roomHint":"Front Door"},{"id":"185","type":"action.devices.types.SENSOR","traits":["action.devices.traits.TemperatureSetting","action.devices.traits.HumiditySetting"],"name":{"defaultNames":["Samsung Zigbee Button"],"name":"Bedroom Button"},"willReportState":false,"attributes":{"thermostatTemperatureUnit":"F","queryOnlyTemperatureSetting":true,"queryOnlyHumiditySetting":true},"roomHint":"Master Bedroom"},{"id":"11","type":"action.devices.types.SENSOR","traits":["action.devices.traits.TemperatureSetting","action.devices.traits.HumiditySetting"],"name":{"defaultNames":["Generic Zigbee Motion Sensor"],"name":"Laundry Motion Sensor"},"willReportState":false,"attributes":{"thermostatTemperatureUnit":"F","queryOnlyTemperatureSetting":true,"queryOnlyHumiditySetting":true},"roomHint":"Laundry Room"},{"id":"492","type":"action.devices.types.SENSOR","traits":["action.devices.traits.TemperatureSetting","action.devices.traits.HumiditySetting"],"name":{"defaultNames":["Sonoff Motion Sensor"],"name":"My Sonoff Motion Sensor"},"willReportState":false,"attributes":{"thermostatTemperatureUnit":"F","queryOnlyTemperatureSetting":true,"queryOnlyHumiditySetting":true},"roomHint":null},{"id":"366","type":"action.devices.types.SENSOR","traits":["action.devices.traits.TemperatureSetting","action.devices.traits.HumiditySetting"],"name":{"defaultNames":["House Temp (avg)"],"name":"House Temp (avg)"},"willReportState":false,"attributes":{"thermostatTemperatureUnit":"F","queryOnlyTemperatureSetting":true,"queryOnlyHumiditySetting":true},"roomHint":"Gauges"},{"id":"112","type":"action.devices.types.SENSOR","traits":["action.devices.traits.Dock"],"name":{"defaultNames":["Gaerett Phone"],"name":"Gaerett "},"willReportState":false,"attributes":{},"roomHint":"Gauges"},{"id":"593","type":"action.devices.types.SENSOR","traits":["action.devices.traits.Dock"],"name":{"defaultNames":["Test presence "],"name":"Test presence"},"willReportState":false,"attributes":{},"roomHint":null},{"id":"193","type":"action.devices.types.SENSOR","traits":["action.devices.traits.Dock"],"name":{"defaultNames":["TS20UltraVeritas"],"name":"TS20UltraVeritas"},"willReportState":false,"attributes":{},"roomHint":"Gauges"},{"id":"180","type":"action.devices.types.SENSOR","traits":["action.devices.traits.Dock"],"name":{"defaultNames":["TS20Ultra"],"name":"TS20Ultra"},"willReportState":false,"attributes":{},"roomHint":"Gauges"},{"id":"117","type":"action.devices.types.SENSOR","traits":["action.devices.traits.Dock"],"name":{"defaultNames":["All Family"],"name":"All Family"},"willReportState":false,"attributes":{},"roomHint":"Gauges"},{"id":"111","type":"action.devices.types.SENSOR","traits":["action.devices.traits.Dock"],"name":{"defaultNames":["Trevor Phone"],"name":"Trevor"},"willReportState":false,"attributes":{},"roomHint":"Gauges"},{"id":"hubitat_mode_Away","type":"action.devices.types.SCENE","traits":["action.devices.traits.Scene"],"name":{"defaultNames":["Away"],"name":"Away Mode"},"willReportState":false,"attributes":{"sceneReversible":false},"roomHint":null},{"id":"hubitat_mode_Day","type":"action.devices.types.SCENE","traits":["action.devices.traits.Scene"],"name":{"defaultNames":["Day"],"name":"Day Mode"},"willReportState":false,"attributes":{"sceneReversible":false},"roomHint":null},{"id":"hubitat_mode_Evening","type":"action.devices.types.SCENE","traits":["action.devices.traits.Scene"],"name":{"defaultNames":["Evening"],"name":"Evening Mode"},"willReportState":false,"attributes":{"sceneReversible":false},"roomHint":null},{"id":"hubitat_mode_Morning","type":"action.devices.types.SCENE","traits":["action.devices.traits.Scene"],"name":{"defaultNames":["Morning"],"name":"Morning Mode"},"willReportState":false,"attributes":{"sceneReversible":false},"roomHint":null},{"id":"hubitat_mode_Night","type":"action.devices.types.SCENE","traits":["action.devices.traits.Scene"],"name":{"defaultNames":["Night"],"name":"Night Mode"},"willReportState":false,"attributes":{"sceneReversible":false},"roomHint":null},{"id":"hubitat_mode_Sleeping","type":"action.devices.types.SCENE","traits":["action.devices.traits.Scene"],"name":{"defaultNames":["Sleeping"],"name":"Sleeping Mode"},"willReportState":false,"attributes":{"sceneReversible":false},"roomHint":null}]}}
app:6492021-06-26 21:26:08.634 debug{"inputs":[{"intent":"action.devices.SYNC"}],"requestId":"13131491011846954710"}
app:6492021-06-26 21:25:49.430 debug{"requestId":"18230598968397128074","payload":{"devices":{"410":{"isLocked":true,"isJammed":false}}}}
app:6492021-06-26 21:25:49.340 debug{"inputs":[{"intent":"action.devices.QUERY","payload":{"devices":[{"id":"410"}]}}],"requestId":"18230598968397128074"}
--- Live Log Started, waiting for events ---

It looks like you have your front door sensor selected for multiple device types. This app does not support that; devices can only be selected in one device type. You'll need to make a combined "Contact sensor with temperature and humidity" device type if you want a device to have all of those traits.

Minor Update 0.31.7: Behave better if a device is selected as multiple device types

Previously this app would just send two device configurations to Google with the same ID if a device was selected as multiple device types. This caused Google to reject the SYNC response outright. This update changes the behavior in that situation to log a warning and ignore subsequent definitions of the same device so that one misconfigured device doesn't block the user's other devices from being synced with Google.

So that fixed it being able to sync correctly, thank you!

Now that it's all synching right, I just need to figure out how to setup the presence sensors for asking if someone is home or gone...

Thanks again!

I just made the presence sensors into valves and open means home and closed means away. That works for me for now. But presence sensor support would be awesome.