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

Nest Hello

تتوافق جميع أجراس الباب القديمة من Nest مع واجهة برمجة التطبيقات لمجموعة أدوات Smart Device Management. يعرض هذا الجهاز نوع الجهاز DOORBELL:

sdm.devices.types.DOORBELL

يتضمّن جرس الباب Google Nest Doorbell (الإصدار القديم) كاميرا تعمل بالطريقة نفسها التي تعمل بها الأجهزة من النوع CAMERA.

السمات

مراجع

تتعلّق بهذا الجهاز السمات أو الأوامر أو الأحداث التالية:

السمةالوصفالطلبات الصوتيةالفعاليات
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 :

النوع العنصر الوصف
الحدث حدث 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" ] }
تحتوي حمولة هذا الحدث على 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 × 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 الصحيح الذي تم إرجاعه من خلال حدث رصدته الكاميرا.

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