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

Nest Hello

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

sdm.devices.types.DOORBELL

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

תכונות

חומרי עזר

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

מאפייןתיאורפקודותאירועים
CameraEventImageהמאפיין הזה שייך לכל מכשיר שתומך ביצירת תמונות מאירועים.GenerateImage
CameraImageהמאפיין הזה שייך לכל מכשיר שתומך בצילום תמונות.
CameraLiveStreamהמאפיין הזה שייך לכל מכשיר שתומך בסטרימינג בשידור חי.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionהמאפיין הזה שייך לכל מכשיר שתומך באירועי זיהוי תנועה.צילום בתנועה
CameraPersonהמאפיין הזה שייך לכל מכשיר שתומך באירועי זיהוי בני אדם.Person
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 המצלמה זיהתה אדם.
אירוע אירוע Sound במאפיין CameraSound המצלמה זיהתה קול.
אירוע אירוע Chime במאפיין DoorbellChime פעמון הדלת נלחץ.
לדוגמה, כאן נלחץ לחצן פעמון הדלת:

מטען ייעודי

{
  "eventId" : "3e7b7488-09ad-41f5-8381-165d5a589759",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "rjn57L02poi7gTFbOCYg0ocaKz..." } } } "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" : "nrbIeLo2lIzhuzLdJD7ARyfrsS..."
  }
}

תשובה

{
  "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 מפורטת בדף קודי השגיאה.