Nest Cam -> Frigate (Integrated go2rtc) Setup Workflow #17527
Replies: 9 comments 7 replies
-
I just updated to include the publishing step, required to get your token to last more than 7-days (mine expired). This should produce a long-lived refresh token that lasts indefinitely. Regarding the lifespan of the long-lived refresh token you get after setting your Google Cloud OAuth app to "In production": Google doesn't publish a specific, fixed maximum expiration date (like "this token will expire in exactly 1 year") for these production refresh tokens. Here's the general understanding:
In practice: For your |
Beta Was this translation helpful? Give feedback.
-
got it working thanks to your guide, however, I got nonstop errors until I added
|
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
this documentation helps! As I am new to frigate I didn't know the requirements of config.yml like mqtt, you can include that in your documentation mqtt: I was wondering since it uses a lot of data from google nest camera, hopefully I won't be charged as the video seems to be online all the time? |
Beta Was this translation helpful? Give feedback.
-
It took a while to figure this out, but the latest go2rtc (1.9.9) now also support 1st gen nest doorbell devices (that only do RTSP). Make sure to put the newer go2rtc binary in the configuration folder, since the one integrated with frigate is still older. You need to follow all the steps above, but you'll need to add I also replaced the |
Beta Was this translation helpful? Give feedback.
-
Super helpful! Got it working without any issues. Waiting for my Coral to arrive and will continue with the setup of the rest after. |
Beta Was this translation helpful? Give feedback.
-
Awesome work detailing all the steps! Before migration, list devices API from phase 4 returned: "type": "sdm.devices.types.DOORBELL",
"traits": {
"sdm.devices.traits.Info": {
"customName": ""
},
"sdm.devices.traits.CameraLiveStream": {
"maxVideoResolution": {
"width": 640,
"height": 480
},
"videoCodecs": [
"H264"
],
"audioCodecs": [
"AAC"
],
"supportedProtocols": [
"RTSP"
]
},
"sdm.devices.traits.CameraImage": {
"maxImageResolution": {
"width": 1920,
"height": 1200
}
}
} After migrating the device to Google home app, go2rtc was able to connect and stream: "type": "sdm.devices.types.DOORBELL",
"traits": {
"sdm.devices.traits.Info": {
"customName": ""
},
"sdm.devices.traits.CameraLiveStream": {
"videoCodecs": [
"H264"
],
"audioCodecs": [
"OPUS"
],
"supportedProtocols": [
"WEB_RTC"
]
},
"sdm.devices.traits.CameraImage": {
"maxImageResolution": {
"width": 1920,
"height": 1200
}
}
} |
Beta Was this translation helpful? Give feedback.
-
Can we get a video for start to finish of this for those of us that are not as smart lol |
Beta Was this translation helpful? Give feedback.
-
Help needed
First thanks so much for the well explained, step-by-step post. I really appreciated it. Now, is there a way to use a lower resolution stream for the detect to avoid high ffmpeg CPU usage? I'm doing it with my non-nest cameras by just adding a new stream with the "/stream2" to the rtsp url. This gives me a lower resolution feed that I use only for the detection & audio roles.
Is there a way to do that with a Nest camera? Do they provide a lower res feed? Hope you guys also have already run into this issue before and found a solution. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I went through the full workflow of getting a few of my newer nest cameras working in Frigate through go2rtc. It seems like this process changes quite frequently but here it is, tested and working, as of today.
Nest Cam -> Frigate (Integrated go2rtc) Setup Workflow
Goal: To stream supported Nest cameras (2021+ models) locally using the
go2rtc
instance integrated within Frigate, authenticating via the Google SDM API, and feeding this stream into Frigate NVR for recording and object detection. This guide assumes Frigate (with go2rtc) is run via Docker/Docker Compose.Phase 1: Prerequisites
Frigate Instance with Integrated go2rtc:
Running Frigate version that includesgo2rtc
(e.g., via Docker).curl
installed.Phase 2: Google Cloud & Device Access Setup
https://www.google.com
(This is used for the OOB flow to get the authorization code).Client ID
andClient Secret
.Client ID
you just created.Device Access Project ID
displayed.Phase 3: Authorization (Getting the Refresh Token)
google.com
. The URL in the address bar will now contain?code=4/0A...SOME_LONG_CODE...&scope=...
.Copy the code value
(everything betweencode=
and&scope
). This code is short-lived.curl
command in your terminal, replacing placeholders:refresh_token
. Copy and securely save thisrefresh_token
. This is the long-term credentialgo2rtc
will use.Phase 4: Getting Camera Device IDs
curl
command, replacing placeholders with your credentials:access_token
value from the JSON output.curl
command, replacing placeholders:devices
list. For each camera:parentRelations[0].displayName
(e.g., "Front Room").name
field (enterprises/.../devices/AVPH...
).AVPH...
string at the end of thename
. Copy and save the specific ID for each camera you want to stream.Phase 5: Environment Variable Setup (Docker Compose - Frigate Service)
go2rtc
runs inside it). Add these to theenvironment:
section of your Frigate service indocker-compose.yaml
or define them in an.env
file used by it.Make sure variable names exactly match those used in your Frigate config.yml (must include prefix of FRIGATE_).
Frigate typically handles substitution for these variables within itsconfig.yml
.Phase 6: Frigate Configuration (config.yml including go2rtc Streams)
config.yml
(e.g.,./config/config.yml
).go2rtc
streams directly under the top-levelgo2rtc:
key.{FRIGATE_VAR}
syntax.cameras:
key, pointing the inputpath
to the internalgo2rtc
RTSP stream (rtsp://127.0.0.1:8554/...
).Phase 7: Running and Testing
docker-compose up -d
(or however you manage your containers).go2rtc
Web UI (often via Frigate's UI or port 1984 if exposed) to check stream status under the "Streams" tab.nest_front_room
) appears in the Frigate UI ("Cameras" section) and that detection/recording is working as expected.rtsp://<frigate-ip>:8554/front_room_nest
with VLC, but accessing via Frigate is the primary goal.Beta Was this translation helpful? Give feedback.
All reactions