門鈴 (舊版)

Nest Hello

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...

使用 widthheight 查詢參數自訂下載圖片的解析度。您只需指定其中一個參數,另一個參數會根據相機的顯示比例自動調整。

舉例來說,如果攝影機的顯示比例為 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 指令,取得新的 streamExtensionTokenstreamToken 值:

要求

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 錯誤代碼參考資料