תצוגה

Nest Hub Max

מסך Google Nest Hub Max נתמך ב-API של Smart Device Management‏ (SDM). המכשיר הזה מחזיר את סוג המכשיר 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:

סוג רכיב תיאור
אירוע אירוע Motion של מאפיין CameraMotion המצלמה זיהתה תנועה.
אירוע אירוע Person של מאפיין CameraPerson המצלמה זיהתה אדם.
אירוע אירוע Sound של מאפיין CameraSound המצלמה זיהתה קול.
לדוגמה, המצלמה זיהתה תנועה:

מטען ייעודי

{
  "eventId" : "e0f693ef-10ff-42d4-a739-fe65312b5e4c",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "dpkR6ZXalxvqAy58mjQCS85SLi...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
המטען הייעודי (payload) של האירוע הזה מכיל eventId שאפשר להשתמש בו עם הפקודה GenerateImage. הפקודה הזו מחזירה כתובת URL להורדה של תמונת המצלמה שקשורה לאירוע:

בקשה

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

תשובה

{
  "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 להורדה:

  • אם שני הפרמטרים מופיעים בכתובת ה-URL, המערכת תשתמש בפרמטר width ותתעלם מפרמטר height.
  • אם לא מציינים אף אחד מהפרמטרים בכתובת ה-URL, נבחר ערך ברירת מחדל של 480 לפרמטר width.

מידע על מאפייני התמונה זמין במאפיין CameraImage .

גישה לשידור חי

אפשר לגשת לשידור החי מהמצלמה. המכשיר הזה תומך בפורמטים הבאים של סטרימינג:

  • RTSP

רשימה מלאה של מצלמות ופורמטים נתמכים של סטרימינג זמינה במאמר בנושא מכשירים נתמכים.

כדי לגשת לשידור חי, משתמשים בפקודה המתאימה GenerateFormatStream של המאפייןCameraLiveStream.

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 אחת של שידור בכל פעם. אם כמה לקוחות רוצים להזרים מאותה מצלמה בו-זמנית, צריך לשלוח פקודות RTSP לכל לקוח בנפרד, וכל לקוח צריך להשתמש בכתובת URL משלו להזרמה.

הארכת שידור חי

השידורים החיים מהמצלמה תקפים למשך 5 דקות בלבד. אם אתם צריכים להאריך את משך החיים של שידור חי, אתם יכולים להשתמש בפקודה המתאימה ExtendFormatStream של המאפיין CameraLiveStream עבור פורמט השידור שיצרתם.

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

הפסקת שידור חי

בכל פעם שמפסיקים להשתמש בשידור חי של מצלמה, צריך לעצור אותו ולבטל את הסטרימינג. כדי לעשות זאת, משתמשים בפקודה המתאימה StopFormatStream של המאפייןCameraLiveStream לפורמט הסטרימינג שיצרתם.

RTSP

כדי לעצור שידור RTSP, משתמשים באסימון כדי לבטל את התוקף של הפקודה StopRtspStream של מאפיין הפקודה CameraLiveStream:

בקשה

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

תשובה

{}

שגיאות

יכול להיות שיוחזרו קודי השגיאה הבאים שקשורים למכשיר הזה:

הודעת השגיאה הכנסה לקליק פתרון בעיות
התמונה מהמצלמה כבר לא זמינה להורדה. DEADLINE_EXCEEDED תוקף התמונות של האירוע פג 30 שניות אחרי פרסום האירוע. חשוב להוריד את התמונה לפני שהיא תפוג.
מזהה האירוע לא שייך למצלמה. FAILED_PRECONDITION משתמשים בערך הנכון של eventID שמוחזר מאירוע המצלמה.

רשימה מלאה של קודי שגיאה של API זמינה במאמר API Error Code Reference.