Google-Nest Offical Device Access Console Finally Released!

I just tried mine from the thermostat and HA updated in less than 2 seconds.

Thanks for sharing your doorbell automation. I’m curious if you’ve played with the camera_person event yet? It may be better to capture the image based on the person detection rather than the doorbell, you’d assumingly get them as they’re facing the door instead of walking away.

Mmmm… What is that thermostat layout? Looks cool

When I try to [+ add integration] > Nest: and it send me to google, when I click my email address it just goes to a screen that says, “Something went wrong, Please contact the developer of this app if the issue persists.”

Oh well, wishful thinking.

With a little inspiration from @corvy I setup the doorbell camera automations in node-red. I may add to it later (thinking angry barking dog noises from the echo at the front door if nobody is home LOL), but for now it turns on the lights after sunset if it detects a person or doorbell press, and all times of day it captures the image and sends a notification via pushover with the notification.

I used the events:all to listen for nest events. I had to put a rate limiter on the camera_person event because it will throw an event every few seconds while the person is standing there. I also added a 1s delay after the lights turn on to give the camera time to switch out of night mode. I may have to play with that delay to find a good compromise between speed and reliability.

[{"id":"9f22b203.c30a2","type":"server-events","z":"3fa541fa.62813e","name":"Nest Event","server":"94fdcfdf.a00b","event_type":"nest_event","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"waitForRunning":true,"x":80,"y":780,"wires":[["4ebb95f.43b6f6c"]]},{"id":"4ebb95f.43b6f6c","type":"switch","z":"3fa541fa.62813e","name":"","property":"payload.event.type","propertyType":"msg","rules":[{"t":"eq","v":"camera_person","vt":"str"},{"t":"eq","v":"doorbell_chime","vt":"str"},{"t":"eq","v":"camera_motion","vt":"str"},{"t":"eq","v":"camera_sound","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":230,"y":780,"wires":[["27fe7089.c08ce"],["d5594a34.4d6748"],[],[]]},{"id":"27fe7089.c08ce","type":"delay","z":"3fa541fa.62813e","name":"Drop duplicates","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":400,"y":720,"wires":[["fa349860.c1d0b8"]]},{"id":"71137031.8cde5","type":"api-call-service","z":"3fa541fa.62813e","name":"Capture Image","server":"94fdcfdf.a00b","version":1,"debugenabled":false,"service_domain":"camera","service":"snapshot","entityId":"camera.front_door_2","data":"{\"filename\":\"/config/www/entrance.jpg\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":960,"y":740,"wires":[["b21fc2d0.38ab6"]]},{"id":"b21fc2d0.38ab6","type":"unsafe-function","z":"3fa541fa.62813e","name":"Format Pushover Message","func":"msg.topic = \"Someone is at the door\"\nmsg.image = \"/config/www/entrance.jpg\"\nmsg.payload = \"Someone is at the front door\"\nmsg.priority = 0\nmsg.sound = \"pianobar\"\nreturn msg;","outputs":1,"noerr":0,"x":1200,"y":740,"wires":[["4cec103e.caf6"]]},{"id":"4cec103e.caf6","type":"pushover api","z":"3fa541fa.62813e","keys":"6701c359.a8a66c","title":"","name":"Notify","x":1410,"y":740,"wires":[]},{"id":"fa349860.c1d0b8","type":"time-range-switch","z":"3fa541fa.62813e","name":"Sunset/Sunrise","lat":"46.22274","lon":"-64.50104","startTime":"sunset","endTime":"sunrise","startOffset":"-20","endOffset":"20","x":600,"y":720,"wires":[["79bc3324.d3eacc"],["71137031.8cde5"]]},{"id":"79bc3324.d3eacc","type":"api-current-state","z":"3fa541fa.62813e","name":"Light Off?","server":"94fdcfdf.a00b","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.outside_lights_front_door","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":780,"y":700,"wires":[["19bc1494.e2c02b"],[]]},{"id":"19bc1494.e2c02b","type":"api-call-service","z":"3fa541fa.62813e","name":"Turn on lights","server":"94fdcfdf.a00b","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.outside_lights_front_door, light.outside_lights_front_walkway, light.outside_lights_garage","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":960,"y":700,"wires":[["a63e52ed.30053"]]},{"id":"d5594a34.4d6748","type":"time-range-switch","z":"3fa541fa.62813e","name":"Sunset/Sunrise","lat":"46.22274","lon":"-64.50104","startTime":"sunset","endTime":"sunrise","startOffset":"-20","endOffset":"20","x":600,"y":820,"wires":[["c9b5234f.a62d"],["3feccc1b.5a6b14"]]},{"id":"c9b5234f.a62d","type":"api-current-state","z":"3fa541fa.62813e","name":"Light Off?","server":"94fdcfdf.a00b","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.outside_lights_front_door","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":780,"y":800,"wires":[["fb14ddcf.f661"],[]]},{"id":"fb14ddcf.f661","type":"api-call-service","z":"3fa541fa.62813e","name":"Turn on lights","server":"94fdcfdf.a00b","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.outside_lights_front_door, light.outside_lights_front_walkway, light.outside_lights_garage","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":960,"y":800,"wires":[["21161455.b3ef5c"]]},{"id":"3feccc1b.5a6b14","type":"api-call-service","z":"3fa541fa.62813e","name":"Capture Image","server":"94fdcfdf.a00b","version":1,"debugenabled":false,"service_domain":"camera","service":"snapshot","entityId":"camera.front_door_2","data":"{\"filename\":\"/config/www/entrance.jpg\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":960,"y":840,"wires":[["8155128b.d96d4"]]},{"id":"8155128b.d96d4","type":"unsafe-function","z":"3fa541fa.62813e","name":"Format Pushover Message","func":"msg.topic = \"Someone rang the doorbell\"\nmsg.image = \"/config/www/entrance.jpg\"\nmsg.payload = \"Someone rang the doorbell\"\nmsg.priority = 0\nmsg.sound = \"pianobar\"\nreturn msg;","outputs":1,"noerr":0,"x":1200,"y":840,"wires":[["a6e2d231.0fc4e"]]},{"id":"a6e2d231.0fc4e","type":"pushover api","z":"3fa541fa.62813e","keys":"6701c359.a8a66c","title":"","name":"Notify","x":1410,"y":840,"wires":[]},{"id":"a63e52ed.30053","type":"delay","z":"3fa541fa.62813e","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1140,"y":700,"wires":[["71137031.8cde5"]]},{"id":"21161455.b3ef5c","type":"delay","z":"3fa541fa.62813e","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1140,"y":800,"wires":[["3feccc1b.5a6b14"]]},{"id":"94fdcfdf.a00b","type":"server","name":"Home Assistant","addon":true},{"id":"6701c359.a8a66c","type":"pushover-keys","name":""}]
4 Likes

That’s just a little bit of my creative handiwork!
see My Nest Thermostat card config using thermostat-dark-card

Figured this might help others searching for it, here’s an automation to turn on a light when a person is detected from my nest cam!

- alias: "Nest: testing"
  trigger:
    - platform: event
      event_type: nest_event
      event_data:
        type: "camera_person"
  action:
    - service: homeassistant.toggle
      entity_id: light.loft_lamp

finally got the integration to work and cleaned up the remnants of badnest in my config and lovelace. One thing I don’t see, and not sure if it’s just not supported yet, or if there’s a way to get the info to come through, I have one of the Nest temperature sensors in a different room, and wanted to bring that data back to plot through a history graph, but don’t see a sensor or a state in the climate for it.

Anyone find it, and or know how to integrate it?

Additional temperature sensors are not supported by the nest sdm api unfortunately.

I can test this in parallell and see what works best. I just added this automation:

alias: Notify Doorbell Person Detection
description: Send notification when doorbell detects person
trigger:
  - platform: device
    device_id: 873c97cf65cdddc3ce18c6efdbc6493a
    domain: nest
    type: camera_person
condition: []
action:
  - service: camera.snapshot
    data:
      filename: /config/www/inngangsparti.jpg
    entity_id: camera.inngangsparti
  - service: notify.hangouts_stian
    data:
      message: Doorbell detected a person!
  - delay: '00:00:01'
  - service: notify.hangouts_stian
    data:
      message: Image from doorbell
      data:
        image_file: /config/www/inngangsparti.jpg

Lets see what works better :slight_smile:

I keep getting the following log messages:

2020-12-16 08:21:54 ERROR (stream_worker) [libav.rtsp] method DESCRIBE failed: 404 Not Found
2020-12-16 08:21:54 ERROR (stream_worker) [homeassistant.components.stream.worker] Error opening stream rtsps://stream-ue1-bravo.dropcam.com:443/sdm_live_stream/long string of numbers and letters

The camera stream is up but it does disappear frequently.

Working on resolving the “Error opening stream” issues in https://github.com/home-assistant/core/issues/42793 and have some pending fixes in flight.

2 Likes

Thanks for all of your hard work.
This is the only Christmas present I need. :wink:

I keep getting this error in my logs in the last day. It happens approximately every hour. I suspect it may have started with the upgrade to HASS 2020.12.0. I don’t think I’ve seen anyone post about it. Anyone else seen it?

2020-12-16 12:59:38 WARNING (Thread-OnRpcTerminated) [google_nest_sdm.google_nest_subscriber] Subscriber disconnected, will restart: <class 'google.api_core.exceptions.Unauthenticated'>: 401 Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.

You can ignore this, its fine. There is a hack where the oauth credentials need to be refreshed regularly. The code waits for it to fail, then restarts it. (The log message needs to be quieted in a future release)

2 Likes

mine changes also except when set to eco mode when leaving home then it doesn’t change.

Hi, rhodesjacobm

Use events all node and define event type as nest_event.

Add switch node after that and add payload.event.device_id as a property. These device_ids will be you exact devices like my Nest Hello is something like 1ce12a1c7cd388a934097591dd7f9f12 … check the events all node output for your device_ids.

After that you can add another switch node with a property payload.event.type to catch the different camera events camera_sound, camera_motion, camera_person and doorbell_chime.

2 Likes

I use HA device tracker now to set my ECO mode so I do not have that problem.
It would appear to me to be a bug at Nest not reporting the new mode via the API.
If it is, good luck getting Google to fix it!

Not sure how your testing is doing, but mine has failed miserably today LOL

Mother in-law dropped by this morning, the camera_person picked her up because she stopped to enter the code on the door and she had to put her glasses on to see the numbers LOL

I then had 2 amazon packages delivered by 2 separate companies. I got a notification from camera_person and doorbell_chime for both packages, and all 4 images generated were just of my front yard because they were already out of the camera frame by the time the picture was snapshot. So I didn’t even get the person’s back like you did in your initial testing!

1 Like

Testing is not going too well, the person detection is also a bit late, just like on the doorbell ring. But I wonder if it would work better to do like this. 1 automation saves a snapshot on person detection, no notification. This seems to be a better way to capture the person (more hits than the doorbell ring). When you get a doorbell ring event, send the last person detection photo rather than do a new snapshot. I will try this for now and see how that works.