ดิสเพลย์

Nest Hub Max

จอแสดงผล Google Nest Hub Max รองรับใน Smart Device Management (SDM) API อุปกรณ์นี้จะแสดงประเภทอุปกรณ์ เป็น DISPLAY:

sdm.devices.types.DISPLAY

Google Nest Hub Max มาพร้อมกับกล้องที่ทํางานเหมือนกับกล้องของอุปกรณ์ประเภทหนึ่ง

ลักษณะเฉพาะ

ข้อมูลอ้างอิง

ลักษณะ คำสั่ง หรือเหตุการณ์ต่อไปนี้เกี่ยวข้องกับอุปกรณ์นี้

ลักษณะคำอธิบายคำสั่งกิจกรรม
CameraEventImageลักษณะนี้เป็นของอุปกรณ์ทั้งหมดที่รองรับการสร้างรูปภาพจากเหตุการณ์GenerateImage
CameraImageลักษณะนี้เป็นของทุกอุปกรณ์ที่รองรับการถ่ายภาพ
CameraLiveStreamลักษณะนี้เป็นของอุปกรณ์ที่รองรับสตรีมมิงแบบสดGenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionลักษณะนี้เป็นของทุกอุปกรณ์ที่รองรับเหตุการณ์การตรวจจับการเคลื่อนไหวเคลื่อนไหว
CameraPersonลักษณะนี้เป็นของทุกอุปกรณ์ที่รองรับเหตุการณ์การตรวจจับคนบุคคล
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 ประเภท

Type องค์ประกอบ คำอธิบาย
เหตุการณ์ เหตุการณ์การเคลื่อนไหวของลักษณะ CameraMotion กล้องตรวจพบการเคลื่อนไหว
เหตุการณ์ เหตุการณ์ Person ของลักษณะของ CameraPerson กล้องตรวจพบบุคคล
เหตุการณ์ เหตุการณ์เสียงของลักษณะของ CameraSound กล้องตรวจพบเสียง
ตัวอย่างเช่น ที่นี่กล้องตรวจพบการเคลื่อนไหว

เพย์โหลด

{
  "eventId" : "f698b6e9-0572-4775-99ab-554c7b944201",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "YtEkPsfcoSs8Gp7h0EJI5xvcHB...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
เพย์โหลดของเหตุการณ์นี้มี eventId ที่ใช้กับคำสั่ง GenerateImage ได้ คำสั่งนี้จะแสดง URL การดาวน์โหลดสำหรับรูปภาพจากกล้องที่เกี่ยวข้องกับเหตุการณ์ ดังนี้

ส่งคำขอ

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

คำตอบ

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

ดาวน์โหลดรูปภาพจากกล้อง

เรียก GET ไปยัง url จาก GenerateImage โดยใช้ token ในส่วนหัวการให้สิทธิ์ HTTP โดยใช้การให้สิทธิ์ขั้นพื้นฐาน เพื่อดาวน์โหลดภาพจากกล้อง:

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

ข้อจำกัดอื่นๆ ของ URL สำหรับดาวน์โหลดจะมีผลดังนี้

  • หากระบุพารามิเตอร์ทั้ง 2 แบบใน URL ระบบจะใช้ width และละเว้น height
  • หากไม่มีพารามิเตอร์ใดใน URL ระบบจะเลือกค่าเริ่มต้น 480 สําหรับ width

ดูลักษณะของ รูปภาพจากกล้อง เพื่อดูข้อมูลเกี่ยวกับคุณสมบัติของรูปภาพ

เข้าถึงสตรีมแบบสด

คุณเข้าถึงสตรีมแบบสดจากกล้องได้ รูปแบบสตรีมต่อไปนี้สนับสนุนสำหรับอุปกรณ์นี้

  • RTSP

ดูรายการกล้องทั้งหมดและรูปแบบสตรีมที่รองรับได้ที่อุปกรณ์ที่รองรับ

หากต้องการเข้าถึงสตรีมแบบสด ให้ใช้คำสั่ง "สร้างFormatสตรีม" ที่เหมาะสมของลักษณะเฉพาะ PicasaLiveStream

RTSP

สำหรับสตรีม RTSP คำสั่ง GenerateRtspStream ของคำสั่งลักษณะ CameraLiveStream จะแสดง URL ของสตรีมและ 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"
  }
}

จากนั้นใช้ URL ของสตรีมเพื่อเข้าถึงสตรีมแบบสดของกล้อง ดังนี้

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

แชร์ URL ของสตรีมแบบสด RTSP ระหว่างไคลเอ็นต์ไม่ได้ URL ของสตรีมจะใช้โดยไคลเอ็นต์ได้ครั้งละ 1 รายเท่านั้น หากมีไคลเอ็นต์หลายคนต้องการสตรีมจากกล้องเดียวกันพร้อมกัน ก็จะต้องส่งคำสั่ง RTSP สำหรับไคลเอ็นต์แต่ละเครื่อง และไคลเอ็นต์แต่ละเครื่องต้องใช้ URL สตรีมของตนเอง

ขยายสตรีมแบบสด

เซสชันสตรีมแบบสดของกล้องจะใช้งานได้เพียง 5 นาที หากต้องการยืดอายุการใช้งานของสตรีมแบบสด ให้ใช้คำสั่ง ExtendFormatStream ที่เหมาะสมสำหรับลักษณะของ PicasaLiveStream สำหรับรูปแบบสตรีมที่คุณสร้างขึ้น

RTSP

หากต้องการขยายสตรีม RTSP ให้ใช้คำสั่ง ExtendRtspStream ของคำสั่งลักษณะ CameraLiveStream เพื่อรับค่า 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"
  }
}

อัปเดต URL ของสตรีมด้วยค่าใหม่เหล่านี้เพื่อดูสตรีมแบบสดต่อไป

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

หยุดสตรีมแบบสด

เมื่อใดก็ตามที่ไม่ใช้สตรีมแบบสดของกล้องแล้ว คุณควรหยุดสตรีมและทำให้สตรีมถูกยกเลิก โดยใช้คำสั่ง "หยุดFormatสตรีม" ที่เหมาะสมสำหรับ กล้องสตรีมแบบสด สำหรับรูปแบบสตรีมที่คุณสร้างขึ้น

RTSP

หากต้องการหยุดสตรีม RTSP ให้ใช้โทเค็นเพื่อทำให้เป็นโมฆะด้วยคำสั่ง StopRtspStream ของคำสั่งลักษณะ CameraLiveStream ดังนี้

ส่งคำขอ

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

คำตอบ

{}

ข้อผิดพลาด

ระบบอาจส่งคืนรหัสข้อผิดพลาดต่อไปนี้ที่เกี่ยวข้องกับอุปกรณ์นี้

ข้อความแสดงข้อผิดพลาด RPC การแก้ปัญหา
รูปภาพจากกล้องไม่พร้อมให้ดาวน์โหลดอีกต่อไป DEADLINE_EXCEEDED รูปภาพกิจกรรมจะหมดอายุภายใน 30 วินาทีหลังจากเผยแพร่กิจกรรม โปรดดาวน์โหลดรูปภาพก่อนหมดอายุ
รหัสเหตุการณ์ไม่ได้เป็นของกล้อง FAILED_PRECONDITION ใช้ eventID ที่ถูกต้องซึ่งเหตุการณ์จากกล้องแสดงผล

ดูรายการรหัสข้อผิดพลาด API ทั้งหมดได้ที่ข้อมูลอ้างอิงรหัสข้อผิดพลาดของ API