CameraEventImage 架构

Nest Cam(旧版) Nest Hub Max Nest Doorbell(旧版) 

sdm.devices.traits.CameraEventImage

此特征属于支持根据事件生成图片的任何设备。

字段

此特征没有可用的字段。

命令

GenerateImage

提供用于下载摄像头图片的网址。

此命令支持以下事件:

类型 元素 说明
事件 Motion 特征的运动事件 摄像头检测到有动作。
事件 CameraPerson 特征的事件 摄像头检测到有人。
事件 声音事件,属于 CameraSound 特征 摄像头检测到有声音。
事件 电铃事件 DoorbellChime trait 的 门铃被按下。
在命令请求中使用受支持事件的 eventId,即可收到与该事件相关的摄像头图片的下载网址。

GenerateImage 请求和响应

请求

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
  "params" : {
    "eventId" : "-SN9UDcIBMGCQhoGXLhXU6lbpA..."
  }
}

响应

{
  "results" : {
    "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "token" : "g.0.eventToken"
  }
}

GenerateImage 请求字段

字段 说明 数据类型
eventId 用于请求相关摄像头图片的事件的 ID。 string
示例:“-SN9UDcIBMGCQhoGXLhXU6lbpA...”

GenerateImage 响应字段

字段 说明 数据类型
url 用于下载摄像头图片的网址。 string
示例:“https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...”
token 下载图片时要在 HTTP Authorization 标头中使用的令牌。 string
示例:“g.0.eventToken”

下载摄像头图片

使用基本授权,通过 HTTP Authorization 标头中的 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
  • 如果网址中未提供这两个参数,系统会为默认值 480 选择 width

如需了解图片 属性,请参阅 CameraImage trait。

错误

系统可能会返回与此特征相关的以下错误代码:

错误消息 RPC 问题排查
摄像头图片已无法下载。 DEADLINE_EXCEEDED 事件图片会在事件发布 30 秒后过期。请务必在过期前下载图片。
事件 ID 不属于摄像头。 FAILED_PRECONDITION 使用摄像头记录的事件返回的正确 eventID

如需查看完整的 API 错误代码列表,请参阅 API 错误代码参考文档