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

Nest Hello

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

sdm.devices.types.DOORBELL

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

מאפיינים

חומרי עזר

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

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

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:

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

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

{
  "eventId" : "48d37271-301c-486f-9266-edcb53982e06",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "B_NM_J0fhsbLeJBLdjLJmvlFmS..." } } } "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" : "TLJkb40AC62FKKrZvfBe1DPbhD..."
  }
}

תשובה

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