جرس باب (قديم)

Nest Hello

تتوفّر جميع أجراس Nest Doorbell القديمة في واجهة برمجة التطبيقات Smart Device Management (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 رصدت الكاميرا حركة.
الحدث حدث شخص لسمة CameraPerson رصدت الكاميرا شخصًا.
الحدث حدث الصوت لسمة CameraSound رصدت الكاميرا صوتًا.
الحدث حدث رنين الخاص بسمة جرس جرس الباب تم الضغط على جرس الباب.
على سبيل المثال، في ما يلي طريقة الضغط على زر جرس الباب:

الحمولة

{
  "eventId" : "76f85e13-cc15-4705-83c3-0b3838118524",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "cV7T3NiEMXH5ZmQz21AwMaW0mF..." } } } "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" : "mFNqXZk08luMZuuBBPCPbS7mZ4..."
  }
}

الرد

{
  "results" : {
    "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "token" : "g.0.eventToken"
  }
}

تنزيل صورة من الكاميرا

يمكنك طلب رمز GET إلى url من استجابة الأمر GenerateImage، واستخدام token في عنوان HTTP الخاص بتفويض 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 دقائق فقط. إذا أردت إطالة فترة البث المباشر، استخدِم الأمر "تمديدFormatالبث" المناسب 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

إيقاف بث مباشر

في أي وقت تتوقف فيه عن استخدام بث مباشر من الكاميرا، عليك إيقافه وإلغاء صلاحيته. لإجراء ذلك، استخدِم الأمر المناسب لإيقافFormatالبث لسمة 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 الصحيحة التي يعرضها حدث الكاميرا.

اطّلِع على مرجع رموز الخطأ في واجهة برمجة التطبيقات للحصول على القائمة الكاملة لرموز الخطأ في واجهة برمجة التطبيقات.