Smart Device Management (SDM) API 支援所有舊版 Nest Doorbell。這個裝置會傳回門鈴的裝置類型:
sdm.devices.types.DOORBELL
Google Nest Doorbell (舊版) 配備攝影機,運作方式與 CAMERA 的裝置類型相同。
特徵
參考資料
以下特徵、指令或事件與這部裝置相關:
特徵 | 說明 | 指令 | 活動 |
---|---|---|---|
CameraEventImage | 這個特徵屬於任何支援從事件產生圖片的裝置。 | GenerateImage | |
CameraImage | 這個特徵屬於任何支援拍照的裝置。 | ||
CameraLiveStream | 這個特徵屬於任何支援直播的裝置。 | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | 這個特徵屬於任何支援動作偵測事件的裝置。 | 動態 | |
CameraPerson | 此特徵適用於所有支援人員偵測事件的裝置。 | Person | |
CameraSound | 這個特徵屬於任何支援聲響偵測事件的裝置。 | 音效 | |
DoorbellChime | 這個特徵屬於任何支援門鈴鈴聲和相關按下事件的裝置。 | Chime | |
資訊 | 這個特徵屬於任何裝置,可提供裝置相關資訊。 |
JSON
如果 GET 回應中沒有特徵,表示裝置目前無法使用該特徵或功能。詳情請參閱「裝置類型」。
{ "type" : "sdm.devices.types.DOORBELL", "traits" : { "sdm.devices.traits.CameraEventImage" : {}, "sdm.devices.traits.CameraImage" : { "maxImageResolution" : { "width" : 1280, "height" : 960 } }, "sdm.devices.traits.CameraLiveStream" : { "maxVideoResolution" : { "width" : 640, "height" : 480 }, "videoCodecs" : ["H264"], "audioCodecs" : ["AAC"], "supportedProtocols" : ["WEB_RTC"] }, "sdm.devices.traits.CameraMotion" : {}, "sdm.devices.traits.CameraPerson" : {}, "sdm.devices.traits.CameraSound" : {}, "sdm.devices.traits.DoorbellChime" : {}, "sdm.devices.traits.Info" : { "customName" : "My device" } } }
處理門鈴和攝影機事件
以下事件可透過 DOORBELL 裝置類型觸發:類型 | 元素 | 說明 |
---|---|---|
活動 | CameraMotion 特徵的 Motion 事件 | 攝影機偵測到動作。 |
活動 | CameraPerson 屬性的 Person 事件 | 攝影機偵測到有人。 |
活動 | CameraSound 特性的 Sound 事件 | 攝影機偵測到聲響。 |
活動 | Doorbell Doorbell 特徵的管控事件 | 有人按門鈴。 |
酬載
{ "eventId" : "76f85e13-cc15-4705-83c3-0b3838118524",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "cV7T3NiEMXH5ZmQz21AwMaW0mF..." } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
eventId
,可搭配 GenerateImage 指令使用。此指令會傳回與事件相關的攝影機圖像下載網址:
要求
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "mFNqXZk08luMZuuBBPCPbS7mZ4..."
}
}
回應
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
下載相機圖像
使用 HTTP 授權標頭中的 token
和基本授權,從 GenerateImage 指令回應對 url
發出 GET 呼叫,以便下載攝影機圖片:
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...
使用 width
或 height
查詢參數自訂下載圖片的解析度。您只需指定其中一個參數,另一個參數會根據相機的顯示比例自動調整。
舉例來說,如果攝影機的顯示比例為 4:3,如要下載解析度為 480 x 360 的攝影機圖片,請指定寬度或高度:
寬度
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480
高度
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360
下載網址適用其他限制:
- 如果網址中同時提供兩個參數,系統會使用
width
並忽略height
。 - 如果網址中未提供任何參數,系統會為
width
選擇預設值 480。
如要瞭解圖片屬性,請參閱 CameraImage 特徵。
存取直播
可以存取攝影機的即時影像串流。此裝置支援下列串流格式:
- RTSP
如需完整的攝影機清單和支援的串流格式清單,請參閱「支援的裝置」。
如要存取直播,請使用CameraLiveStream特徵的適當「產生」FormatStream 指令。
RTSP
如果是 RTSP 串流,CameraLiveStream 特徵指令的 GenerateRtspStream 指令會傳回串流網址和相關 streamToken
:
要求
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
回應
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
然後使用串流網址存取攝影機的即時串流:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
客戶端之間無法共用 RTSP 直播網址。一個串流播放網址只能同時由一個用戶端使用。如果有多個用戶端想同時從同一部攝影機串流,則必須為每個用戶端傳送 RTSP 指令,且每個用戶端都必須使用自己的串流網址。
擴充直播功能
攝影機即時串流工作階段的有效時間只有 5 分鐘。如果您需要延長直播的生命週期,請針對您產生的串流格式,使用 CameraLiveStream 特徵的適當 ExtendFormatStream 指令。
RTSP
如要延伸 RTSP 串流,請使用 CameraLiveStream 特徵指令的 ExtendRtspStream 指令,取得新的 streamExtensionToken
和 streamToken
值:
要求
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
回應
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
如要繼續觀看直播,請使用這些新值更新串流網址:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
停止直播
當你不再使用攝影機即時串流時,應停止並使串流無效。如要這麼做,請針對您產生的串流格式,使用CameraLiveStream特徵的適當 StopFormatStream 指令。
RTSP
如要停止 RTSP 串流,請使用權杖,並透過 CameraLiveStream 特徵指令的 StopRtspStream 指令使其失效:
要求
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
回應
{}
錯誤
系統可能會傳回以下與此裝置相關的錯誤代碼:
錯誤訊息 | 單次點擊收益 | 疑難排解 |
---|---|---|
不再提供攝影機影像下載功能。 | DEADLINE_EXCEEDED |
事件圖片會在事件發布 30 秒後失效。請務必在到期前下載圖片。 |
事件 ID 不屬於攝影機。 | FAILED_PRECONDITION |
使用相機事件傳回的正確 eventID 。 |
如需 API 錯誤代碼的完整清單,請參閱 API 錯誤代碼參考資料。