
تتوافق جميع أجراس الباب القديمة من 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 الصحيح الذي تم إرجاعه من خلال حدث رصدته الكاميرا. |
يمكنك الاطّلاع على مرجع رموز الخطأ في واجهة برمجة التطبيقات للحصول على القائمة الكاملة بهذه الرموز.