Google Nest Device Access Console now available

Following up I have my 2 thermostats and 5 nest cams connected.

My system is an OH 3.0.2 Release running on:
Raspbian GNU/Linux 10 (buster),
Kernel = Linux 5.10.17-v7l+,
Platform = Raspberry Pi 4 Model B Rev 1.2

I am seeing the following error every 30 minutes in the log. Since there is no reference to the nest binding, not sure this is related or a problem with OH core. The only binding I have running on this system is the Nest SDM binding.

I am also seeing my thermostats go offline and back on line about every 3-15 minutes, and pub/sub communication errors (Failed to send JSON POST request: Total timeout 60000 ms elapsed) causing the bridge to go offline.

18:19:34.265 [ERROR] [org.jupnp.transport.spi.StreamClient ] - Request: HttpRequest[GET HTTP/1.1]@29533c failed
java.lang.NullPointerException: Missing SslContextFactory
at java.util.Objects.requireNonNull(Objects.java:246) ~[?:?]
at org.eclipse.jetty.io.ssl.SslClientConnectionFactory.(SslClientConnectionFactory.java:54) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.HttpClient.newSslClientConnectionFactory(HttpClient.java:1175) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.HttpDestination.newSslClientConnectionFactory(HttpDestination.java:137) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.HttpDestination.(HttpDestination.java:94) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.PoolingHttpDestination.(PoolingHttpDestination.java:25) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.http.HttpDestinationOverHTTP.(HttpDestinationOverHTTP.java:32) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.http.HttpClientTransportOverHTTP.newHttpDestination(HttpClientTransportOverHTTP.java:51) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.HttpClient.destinationFor(HttpClient.java:546) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.HttpClient.send(HttpClient.java:579) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:728) ~[bundleFile:9.4.20.v20190813]
at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:681) ~[bundleFile:9.4.20.v20190813]
at org.jupnp.transport.impl.jetty.JettyStreamClientImpl$1.call(JettyStreamClientImpl.java:155) [bundleFile:?]
at org.jupnp.transport.impl.jetty.JettyStreamClientImpl$1.call(JettyStreamClientImpl.java:1) [bundleFile:?]
at org.jupnp.transport.spi.AbstractStreamClient$RequestWrapper.call(AbstractStreamClient.java:204) [bundleFile:?]
at org.jupnp.transport.spi.AbstractStreamClient$RequestWrapper.call(AbstractStreamClient.java:1) [bundleFile:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]

Working really well on OH3.0.1 in Docker, thank you very much for this!

My apartment complex fitted Nests to every apartment because of the ‘Cool to Dry’ function, and being able to control it from OH is great.

I really do wish manufacturers would bake in local comms for ‘Smart’ devices, so the cloud stuff wasn’t necessary, but my internet connection here is decent, so it shouldn’t be an issue. I really like the Shelly devices for this exact reason - MQTT baked right in.

NB: The only step I had to do in addition to those listed was a restart of OH3, after the Pub/Sub setup was done. After that, a scan of the Nest binding found my thermostat (it didn’t find it before the restart).

Thank you for these updates @wborn. One question…

I built the changes in your repo myself and have been using them over the past month or so without issue. However today when I looked in my Google Cloud account, I noticed the google.pubsub.v1.Subscriber.ModifyAckDeadline Pub/Sub method received over 3.6 million requests in the past 30 days.

Is this behavior expected? The forecasted cost on my Google Cloud account is up 42k% over the previous month as a result.

I had horrible issues with google as well. However, I was already migrated and shortly after getting the Device Access Console working, my devices all disappeared from my Google/Nest account. Google support wasn’t very helpful. The only action they could provide was to factory reset a dozen or so Nest devices and including them in my google account again. I wasn’t pleased because I had another Nest “Structure” (vacation home) and I could not monitor my thermostat during the winter. I also wasn’t supposed to travel during covid restrictions so I had no way off resetting the device in a timely manner. The Nest devices are great when everything is working, but I hate the reliance on cloud.

I’ve actually had several calls with a real person and had my issue kicked up to the developers. But it’s been long enough now that I think the answer is going to be “can’t reproduce, won’t fix.”

I think the key was I provided all the information I could think of when I started the forum thread and I was meticulous in following the instructions the forum support person asked my to do even though I knew they wouldn’t work because I had already done them. Doing that I was able to convince them that something was wrong.

From there I got a call and did all that was asked of me and we were able to discover that my Nest structure was somehow still around in the Nest App but Google Home was completely unaware of that structure. And it seems that as long as that structure is there Google Home can’t see any of my Nest devices.

I’m probably going to move the devices over to my wife’s account. I don’t have a strong need for Nest support in OH really, but it’d be great if I could see the feed on my Hubs when the doorbell rings again.

Hey! The PR with the SDM changes got merged recently. :slight_smile: So you can use the SDM API by just installing the Nest Binding in recent 3.1 snapshots (build 2431 or newer).

4 Likes

Great news, just installed on a RPI 4 running 3.1.0-SNAPSHOT and all 5 cameras and 2 thermostats are online and sending updates…

Is there a way to display the camera live stream in OH? I have no issue doing this outside of OH using ffplay, but I can’t for the life of me figure out if there is a way to do that in OH 3? Is it just so obvious that I am missing something? No amount of digging around the Community or the web has given me an approach that works…

I think so far there is no way to get the camera live stream directly - Maybe via the IP camera binding and the rtsps stream? But I think you’d have to update the thing configuration as the rtsps link keeps changing.
I run a tflite model on my camera snapshots and I use ffmpeg to grab a snapshot and then copy it to the html(static) folder after the inference.

Great news. If I’m still running 2.5, is there a way to still use the new nest binding?

Wouter posted a link to a 2.5 jar file here: Google Nest Device Access Console now available - #263 by wborn

It keeps losing the authentication after a week:

Did you confirm that your SDM configuration publishing status is set to Production?

  1. Configure the “Publishing status” of your Google Cloud Platform to “Production” (APIs & Services > OAuth consent screen) so the OAuth 2.0 tokens do not expire after 2 weeks.
1 Like

Thanks, that no doubt was the issue.

I had most of the things set up for months already, partly through trial and error. Would have been better if I had deleted everything and started from scratch with the step by step guide.

1 Like

Ok. I finally upgraded to 3.1 and am now using the native binding instead of the side-loaded one. I’m still having two issues.

First and most importantly, I am not getting read/write access to the temperature settings. I can read/write the mode and eco_mode settings, but I can only read the temperature setpoints. Any ideas?

Second, I can’t create the Bridge / account thing properly using the text files. It works ok the first time, but then it gives me an authorization error when I change or reload anything. I suspect this is because it is not retaining the refresh token. Given that the binding page on openhab.org shows an example of using a text file, I would have expected it to work. But I don’t see anywhere that I can grab the refresh token. This isn’t the biggest of deals because I can add the thing through the GUI (so far in a couple hours of testing it seems to work), but I prefer to keep everything in text files for easy clean installs.

Thanks.

Hi all,

I’ve got a silly question here apologies in advanced…I’m following the steps outlined in the guide and so far I’ve created a project in ‘Device Access console’ and the next step was to configure OAuth 2.0 tokens so that they do not expire after 2 weeks.

Question is do I need to create a separate project in the ‘Google Cloud Platform’ OR will the project in ‘Device Access console’ sync over?

Thanks all

Jeevs, You shouldn’t have to create anything extra. Its not needed for SDM to work with the Google Cloud Platform…

Same here. Does anyone know how to solve this?

Hi Dave,

Thanks for the response, I’m a bit confused as this is the steps I’m currently on:

When I look at point 1 and click the link it takes me to:

image

But it says I need to select a project. Do I need to create a new one?

Hi Jeevs,

Did you follow the step in the instructions where you create the SDM project prior to the step where you set the publishing status? The project name should appear on the OAuth screen in the pull down that says Select a project:

Create a new SDM project on the Projects page

  1. Give your project a name so it is easily recognizable
  2. “Skip” entering the OAuth client ID for now
  3. If you want to download camera images using the binding, it is required to “Enable” events. Enabling events also allows for faster thermostat state updates. The binding only uses events when the Pub/Sub configuration parameters of the Nest SDM Account Thing are also configured.
  4. After clicking the “Create project” button, the SDM project details of the created project show
  5. Copy and save the Project ID at the top of the page (e.g. 585de72e-968c-435c-b16a-31d1d3f76833) somewhere

Hi Dave,

Yes, I’ve followed the above steps already and created the SDM project:

image

However, have no option to select this in the current step as mentioned in the previous post :frowning: