Màn hình

Nest Hub Max

Google Nest Hub Max màn hình được hỗ trợ trong API Quản lý thiết bị thông minh (SDM). Thiết bị này trả về một loại thiết bị trong số DISPLAY:

sdm.devices.types.DISPLAY

Google Nest Hub Max có một camera, hoạt động giống như một loại thiết bị CAMERA.

Đặc điểm

Tài liệu tham khảo

Các đặc điểm, lệnh hoặc sự kiện sau đây liên quan đến thiết bị này:

Đặc điểmMô tảLệnhSự kiện
CameraEventImageĐặc điểm này thuộc về bất kỳ thiết bị nào hỗ trợ tính năng tạo hình ảnh từ sự kiện.GenerateImage
CameraImageĐặc điểm này thuộc về bất kỳ thiết bị nào có hỗ trợ tính năng chụp ảnh.
CameraLiveStreamĐặc điểm này thuộc về bất kỳ thiết bị nào có hỗ trợ tính năng phát trực tiếp.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionTrait này thuộc về bất kỳ thiết bị nào hỗ trợ sự kiện phát hiện chuyển động.Chuyển động
CameraPersonĐặc điểm này thuộc về bất kỳ thiết bị nào hỗ trợ sự kiện phát hiện người.Person
(Người)
CameraSoundTrait này thuộc về bất kỳ thiết bị nào có hỗ trợ sự kiện phát hiện âm thanh.Âm thanh
Thông tinTrait này thuộc về bất kỳ thiết bị nào có thông tin liên quan đến thiết bị.

JSON

Việc không có đặc điểm trong phản hồi GET cho thấy đặc điểm hoặc tính năng hiện không khả dụng cho thiết bị này. Xem Loại thiết bị để biết thêm thông tin của bạn.

{
  "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"
    }
  }
}

Xử lý các sự kiện do camera ghi lại

Các sự kiện sau đây có thể được kích hoạt từ loại thiết bị DISPLAY:

Loại Phần tử Mô tả
Sự kiện Sự kiện Chuyển động của tính năng CameraMotion Camera đã phát hiện thấy chuyển động.
Sự kiện Sự kiện Person của đặc điểm CameraPerson Camera đã phát hiện thấy một người.
Sự kiện Sự kiện Âm thanh của trait CameraÂm thanh Camera đã phát hiện thấy âm thanh.
Ví dụ: ở đây, camera đã phát hiện thấy chuyển động:

Dung lượng

{
  "eventId" : "0cd20ce7-e09a-4bbc-9ffe-95962fa9632e",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "x7pibn5HLOScYYgkJQNvQaKo-e...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Tải trọng của sự kiện này chứa eventId có thể được sử dụng với GenerateImage . Lệnh này trả về URL tải xuống cho hình ảnh camera liên quan đến sự kiện:

Yêu cầu

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

Phản hồi

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

Tải hình ảnh camera xuống

Gọi GET đến url từ Phản hồi lệnh GenerateImage, sử dụng token trong tiêu đề Uỷ quyền HTTP với Uỷ quyền cơ bản để tải xuống hình ảnh camera:

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...

Sử dụng tham số truy vấn width hoặc height để tuỳ chỉnh độ phân giải của hình ảnh đã tải xuống. Bạn chỉ cần chỉ định một trong các tham số này. Khác được tự động điều chỉnh tỷ lệ theo tỷ lệ khung hình của máy ảnh.

Ví dụ: nếu tỷ lệ khung hình của máy ảnh là 4:3, để tải hình ảnh từ máy ảnh xuống, có độ phân giải 480 x 360, hãy chỉ định chiều rộng hoặc chiều cao:

Chiều rộng

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480

Chiều cao

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360

Các hạn chế khác đối với URL tải xuống sẽ được áp dụng:

  • Nếu bạn cung cấp cả hai tham số trong URL, thì width sẽ được sử dụng và height sẽ bị bỏ qua.
  • Nếu bạn không cung cấp tham số nào trong URL, thì giá trị mặc định là 480 sẽ được chọn cho thuộc tính width.

Hãy xem đặc điểm CameraImage cho thông tin về thuộc tính hình ảnh.

Truy cập vào sự kiện phát trực tiếp

Bạn có thể truy cập vào sự kiện phát trực tiếp từ camera. Sau đây là các định dạng luồng nội dung được hỗ trợ cho thiết bị này:

  • RTSP

Để xem danh sách đầy đủ các máy ảnh và các định dạng luồng được hỗ trợ, hãy xem Thiết bị được hỗ trợ.

Để truy cập vào sự kiện phát trực tiếp, hãy sử dụng tính năng TạoFormatluồng thích hợp lệnh của CameraLiveStream đặc điểm cơ thể.

RTSP

Đối với luồng RTSP, Lệnh GenerateRtspStream của lệnh trait CameraLiveStream trả về URL luồng và streamToken liên quan:

Yêu cầu

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
  "params" : {}
}

Phản hồi

{
  "results" : {
    "streamUrls" : {
      "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
    },
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
    "streamToken" : "g.0.streamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Sau đó, hãy sử dụng URL của sự kiện phát trực tiếp để truy cập vào sự kiện phát trực tiếp của camera:

rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken

Không thể chia sẻ URL phát trực tiếp RTSP giữa các ứng dụng. Mỗi lần một ứng dụng chỉ có thể sử dụng một URL luồng. Nếu nhiều ứng dụng khách muốn phát trực tuyến từ cùng một máy ảnh cùng một lúc, thì bạn phải gửi các lệnh RTSP cho từng ứng dụng riêng lẻ và mỗi ứng dụng riêng lẻ phải sử dụng URL luồng riêng của ứng dụng đó.

Mở rộng sự kiện phát trực tiếp

Phiên phát trực tiếp trên camera chỉ có hiệu lực trong 5 phút. Nếu bạn cần kéo dài thời gian tồn tại của một sự kiện phát trực tiếp, hãy dùng lệnh ExtendFormatStream thích hợp của CameraLiveStream trait cho định dạng sự kiện phát trực tiếp mà bạn đã tạo.

RTSP

Để mở rộng luồng RTSP, hãy sử dụng Lệnh ExtendRtspStream của lệnh trait CameraLiveStream để nhận streamExtensionTokenstreamToken mới giá trị:

Yêu cầu

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}

Phản hồi

{
  "results" : {
    "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "streamToken" : "g.0.newStreamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Hãy cập nhật các giá trị mới này cho URL của sự kiện phát trực tiếp để tiếp tục xem sự kiện phát trực tiếp:

rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken

Dừng sự kiện phát trực tiếp

Bất cứ khi nào không còn sử dụng tính năng phát trực tiếp qua camera, bạn phải dừng tính năng này và vô hiệu hoá luồng. Để thực hiện việc này, hãy sử dụng tính năng DừngFormatLuồng thích hợp lệnh của CameraLiveStream cho định dạng luồng mà bạn đã tạo.

RTSP

Để dừng truyền trực tuyến RTSP, hãy sử dụng mã thông báo này để vô hiệu hoá với Lệnh StopRtspStream trong lệnh CameraLiveStream trait:

Yêu cầu

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}

Phản hồi

{}

Lỗi

(Các) mã lỗi sau đây có thể được trả về liên quan đến thiết bị này:

Thông báo Lỗi RPC Khắc phục sự cố
Hình ảnh camera không còn có sẵn để tải xuống. DEADLINE_EXCEEDED Hình ảnh sự kiện sẽ hết hạn sau 30 giây kể từ khi sự kiện được xuất bản. Đừng quên tải hình ảnh xuống trước khi hết hạn.
Mã sự kiện không thuộc về camera. FAILED_PRECONDITION Sử dụng đúng eventID do sự kiện máy ảnh trả về.

Hãy xem Tài liệu tham khảo về mã lỗi API để biết danh sách đầy đủ các mã lỗi API.