יש תמיכה במסך של Google Nest Hub Maxב-Smart Device Management (SDM) API. המכשיר הזה מחזיר את סוג המכשיר 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" : "f39b35b7-21ba-4cf4-bbf0-5d36b21b345d",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.CameraMotion.Motion" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "hkDG-nDge7SgosWYto0eOCLQeQ...",
}
}
}
"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" : "Xza0fN83xY5p88UNrpa-Bx55Hh..."
}
}
תשובה
{
"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, ערך ברירת המחדל של
widthהוא 480.
מידע על מאפייני התמונה זמין במאפיין 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..."
}
}
תשובה
{}
שגיאות
יכול להיות שהמערכת תחזיר את קודי השגיאה הבאים שקשורים למכשיר הזה:
| הודעת השגיאה | RPC | פתרון בעיות |
|---|---|---|
| התמונה מהמצלמה כבר לא זמינה להורדה. | DEADLINE_EXCEEDED |
תוקף התמונות של האירוע פג 30 שניות אחרי שהאירוע מפורסם. חשוב להוריד את התמונה לפני שהתוקף שלה פג. |
| מזהה האירוע לא שייך למצלמה. | FAILED_PRECONDITION |
השתמשו בערך הנכון של eventID שמוחזר מאירוע המצלמה. |
רשימה מלאה של קודי השגיאה של ה-API מפורטת בדף קודי השגיאה.