 
Smart Device Management (SDM) API 支援 Google Nest Hub Max 螢幕。這部裝置會傳回 DISPLAY 裝置類型:
sdm.devices.types.DISPLAY
Google Nest Hub Max 搭載攝影機,功能與 CAMERA 裝置類型相同。
特徵
參考資料
下列特徵、指令或事件與這部裝置相關:
| 特徵 | 說明 | 指令 | 事件 | 
|---|---|---|---|
| CameraEventImage | 只要裝置支援從事件生成圖片,就屬於這項特徵。 | GenerateImage | |
| CameraImage | 只要裝置支援拍攝圖片,就屬於這項特徵。 | ||
| CameraLiveStream | 只要裝置支援直播,就會有這項特徵。 | GenerateRtspStream ExtendRtspStream StopRtspStream | |
| CameraMotion | 只要裝置支援動作偵測事件,就屬於這項特徵。 | 動態 | |
| CameraPerson | 只要裝置支援人物偵測事件,就會具備這項特徵。 | Person | |
| CameraSound | 這項特徵屬於支援聲響偵測事件的任何裝置。 | 音效 | |
| 資訊 | 這個特徵屬於任何裝置,可提供裝置相關資訊。 | 
JSON
如果 GET 回應中沒有某項特徵,表示該特徵或功能目前不適用於裝置。詳情請參閱裝置類型。
{
  "type" : "sdm.devices.types.DISPLAY",
  "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.Info" : {
      "customName" : "My device"
    }
  }
}處理攝影機事件
下列事件可能會從 DISPLAY 裝置類型觸發:| 類型 | 元素 | 說明 | 
|---|---|---|
| 活動 | CameraMotion 特徵的動作事件 | 攝影機偵測到動作。 | 
| 活動 | 攝影機人員特徵的人員事件 | 攝影機偵測到有人。 | 
| 活動 | CameraSound 特徵的聲音事件 | 攝影機偵測到聲響。 | 
酬載
{
  "eventId" : "7bf5adeb-7450-417f-9351-680c53d4e60c",
  "timestamp" : "2019-01-01T00:00:01Z",
  "resourceUpdate" : {
    "name" : "enterprises/project-id/devices/device-id",
    "events" : {
      "sdm.devices.events.CameraMotion.Motion" : {
        "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
        "eventId" : "NPj3lyz812wHKfWtMLN5aMkN8i...",
      }
    }
  }
  "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" : "NGXtKdYeJnP-1KCuCsUbIL3V2_..."
  }
}
回應
{
  "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特徵的適當 GenerateFormatStream 指令。
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 錯誤代碼參考資料。
