פעמון דלת (מדור קודם)

Nest Hello

כל מכשירי Nest Doorbell מדור קודם נתמכים ב-Smart Device Management API (SDM). המכשיר הזה מחזיר DOORBELL מסוג המכשיר:

sdm.devices.types.DOORBELL

Google Nest Doorbell (מדור קודם) כולל מצלמה שפועלת בדיוק כמו סוג המכשיר של המצלמה.

תכונות

חומר עזר

התכונות, הפקודות או האירועים הבאים קשורות למכשיר הזה:

תכונההתיאורפקודותאירועים
CameraEventImageהתכונה הזו שייכת לכל מכשיר שתומך ביצירת תמונות מאירועים.GenerateImage
CameraImageהתכונה הזו שייכת לכל מכשיר שתומך בצילום תמונות.
CameraLiveStreamהתכונה הזו שייכת לכל מכשיר שתומך בסטרימינג בשידור חי.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionהתכונה הזו שייכת לכל מכשיר שתומך באירועי זיהוי תנועה.תנועה
CameraPersonהתכונה הזו שייכת לכל מכשיר שתומך באירועי זיהוי אנשים.אדם
CameraSoundהתכונה הזו שייכת לכל מכשיר שתומך באירועי זיהוי צלילים.צליל
DoorbellChimeהתכונה הזו שייכת לכל מכשיר שתומך במנגנון צלצול בפעמון דלת ובאירועי לחיצה קשורים.פעמון
מידעהתכונה הזו שייכת לכל מכשיר שיש בו מידע שקשור למכשיר.

JSON

אם חסר תכונה בתגובת GET, המשמעות היא שהתכונה או התכונה לא זמינות כרגע במכשיר. מידע נוסף זמין במאמר סוגי מכשירים.

{
  "type" : "sdm.devices.types.DOORBELL",
  "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.DoorbellChime" : {},
    "sdm.devices.traits.Info" : {
      "customName" : "My device"
    }
  }
}

הגדרת אירועים שקשורים לפעמון הדלת ולמצלמה

ייתכן שהאירועים הבאים יופעלו ממכשיר מסוג DOORBELL :

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

מטען ייעודי (payload)

{
  "eventId" : "119bfb86-3c27-4e12-ba3c-b35177badda0",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "i_MVBkcoLJkn7d6J1GIhbq5M5m..." } } } "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" : "3T7wSCdxnQKNnna6Yxg4DXlLFW..."
  }
}

תשובה

{
  "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.