
מסך 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" ] }
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.