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

Nest Hello

تتوافق جميع أجراس الباب القديمة من Nest مع واجهة برمجة التطبيقات لمجموعة أدوات Smart Device Management (SDM). يعرض هذا الجهاز نوع الجهاز 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 :

النوع العنصر الوصف
الحدث حدث الحركة الخاص بسمة CameraMotion رصدت الكاميرا حركة.
الحدث حدث Person الخاص بسمة CameraPerson رصدت الكاميرا شخصًا.
الحدث حدث الصوت الخاص بسمة CameraSound رصدت الكاميرا صوتًا.
الحدث حدث Chime الخاص بسمة DoorbellChime تم الضغط على جرس الباب.
على سبيل المثال، تم الضغط على زر جرس الباب هنا:

الحمولة

{
  "eventId" : "ffe4eef0-9acb-4632-935f-812490778c3f",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "MfXOPQqfVsRpCxIqyGdRVFqbgn..." } } } "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" : "9CGIaxy2OIN7WD5S4vsM8mmD5D..."
  }
}

الردّ

{
  "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 × 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 الصحيح الذي تم عرضه من خلال حدث الكاميرا.

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