แสดง

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ลักษณะนี้เป็นของอุปกรณ์ที่รองรับเหตุการณ์การตรวจหาบุคคล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

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

เพย์โหลด

{
  "eventId" : "f1b267ed-dbd1-4e14-a7f7-89d2a40f8005",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "V-w6PSDq_jcwithl7Z6NIadGzt...", } } } "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" : "kG1lXwbJuErTSAJmJdyCBA_Rbs..."
  }
}

การตอบกลับ

{
  "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
  • หากไม่ได้ระบุพารามิเตอร์ทั้ง 2 รายการใน URL ระบบจะเลือกค่าเริ่มต้นเป็น 480 สำหรับ width

ดูข้อมูลเกี่ยวกับพร็อพเพอร์ตี้ของรูปภาพได้ที่ลักษณะ CameraImage

เข้าถึงไลฟ์สด

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

  • RTSP

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

หากต้องการเข้าถึงไลฟ์สด ให้ใช้คำสั่ง GenerateFormatStream ที่เหมาะสมของลักษณะCameraLiveStream

RTSP

สำหรับสตรีม RTSP คำสั่ง GenerateRtspStream ของคำสั่งลักษณะกล้องถ่ายทอดสด จะแสดงผล 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 ของสตรีมใช้ได้โดยไคลเอ็นต์เพียงรายเดียวเท่านั้นในแต่ละครั้ง หากไคลเอ็นต์หลายรายต้องการสตรีมจากกล้องตัวเดียวกันในเวลาเดียวกัน คุณต้องส่งคำสั่ง RTSP สำหรับไคลเอ็นต์แต่ละราย และไคลเอ็นต์แต่ละรายต้องใช้ URL สตรีมของตนเอง

ขยายเวลาไลฟ์สด

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

RTSP

หากต้องการขยายสตรีม RTSP ให้ใช้คำสั่ง 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"
  }
}

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

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

หยุดไลฟ์สด

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

RTSP

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

ส่งคำขอ

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