המסך של Google Nest Hub Max נתמך ב-Smart Device Management API (SDM). המכשיר הזה מחזיר סוג מכשיר 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:תיאור | רכיב | התיאור |
---|---|---|
אירוע | אירוע Motion של תכונת CameraMotion | המצלמה זיהתה תנועה. |
אירוע | אירוע Person של תכונת CameraPerson | המצלמה זיהתה אדם כלשהו. |
אירוע | אירוע קול של תכונת CameraSound | המצלמה זיהתה צליל. |
מטען ייעודי (payload)
{ "eventId" : "abdca053-df77-4bfe-ab4c-7a8919221dac",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "1CzjQK8gRceLQKicCqviUyEV9u...", } } } "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" : "IQ9v77zWX73H9geKbkPGKBnPvP..."
}
}
תשובה
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
הורדת תמונה מהמצלמה
כדי להוריד את תמונת המצלמה, מבצעים קריאת GET ל-url
מתגובת פקודה GenerateImage באמצעות token
בכותרת HTTP Authorization עם הרשאה בסיסית:
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
במאמר מכשירים נתמכים תוכלו למצוא רשימה מלאה של המצלמות והפורמטים הנתמכים של השידורים.
כדי לגשת לשידור חי, משתמשים בפקודה GenerateFormatהשידור המתאימה של התכונה cameraLiveStream.
RTSP
לזרם RTSP, הפקודה GenerateRtspStream בפקודת ה-trait של 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 דקות בלבד. כדי להאריך את משך החיים של שידור חי, יש להשתמש בפקודת 'הרחבה'Format'סטרימינג' המתאימה של התכונה cameraLiveStream לפורמט השידור שיצרתם.
RTSP
כדי להרחיב שידור RTSP, משתמשים בפקודה ExtendRtspStream בפקודה trait של 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הסטרימינג של השידור החי של מאפיין התוכןCameraLiveStream המתאימה לפורמט השידור שיצרתם.
RTSP
כדי להפסיק שידור מסוג RTSP, אפשר להשתמש באסימון כדי לבטל את התוקף באמצעות StopRtspStream של פקודת ה-trait של 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.