يمكن استخدام شاشة Google Nest Hub Max في واجهة برمجة التطبيقات لإدارة الأجهزة الذكية (SDM). يعرض هذا الجهاز نوع جهاز شاشة:
sdm.devices.types.DISPLAY
يتضمّن Google Nest Hub Max كاميرا تعمل بالطريقة نفسها التي يعمل بها نوع جهاز الكاميرا.
السمات
مَراجع
السمات أو الأوامر أو الأحداث التالية مرتبطة بهذا الجهاز:
السمة | الوصف | الطلبات الصوتية | الفعاليات |
---|---|---|---|
CameraEventImage | تنتمي هذه السمة إلى أي جهاز يدعم إنشاء الصور من الأحداث. | GenerateImage | |
CameraImage | تنتمي هذه السمة إلى أي جهاز يتيح التقاط الصور. | ||
CameraLiveStream | تنتمي هذه السمة إلى أي جهاز يتيح البث المباشر. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | تنتمي هذه السمة إلى أي جهاز يتيح أحداث اكتشاف الحركة. | الحركة | |
CameraPerson | تنتمي هذه السمة إلى أي جهاز يتيح أحداث رصد الأشخاص. | الشخص | |
CameraSound | تنتمي هذه السمة إلى أي جهاز يتيح رصد الأصوات. | الصوت | |
المعلومات | تنتمي هذه السمة إلى أي جهاز للحصول على معلومات متعلقة بالجهاز. |
JSON
يشير عدم توفّر سمة في استجابة GET إلى أنّ السمة أو الميزة غير متاحة حاليًا للجهاز. اطّلِع على أنواع الأجهزة للحصول على مزيد من المعلومات.
{ "type" : "sdm.devices.types.DISPLAY", "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.Info" : { "customName" : "My device" } } }
التعامل مع أحداث الكاميرا
قد يتم بدء الأحداث التالية من نوع جهاز DISPLAY:النوع | العنصر | الوصف |
---|---|---|
الحدث | حدث الحركة لسمة CameraMotion | رصدت الكاميرا حركة. |
الحدث | حدث شخص لسمة CameraPerson | رصدت الكاميرا شخصًا. |
الحدث | حدث الصوت لسمة CameraSound | رصدت الكاميرا صوتًا. |
الحمولة
{ "eventId" : "aedf6813-6b9e-465a-a42a-4358b8b6161f",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "-o1dVlAEusEUetEQB5hzQTXSAr...", } } } "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" : "Wh6SNjOxmdq1RNCDrK_ANe2rd0..."
}
}
الرد
{ "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 دقائق فقط. إذا كنت بحاجة إلى إطالة مدّة البث المباشر، استخدِم الأمر المناسب لتمديد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 الصحيح الذي يعرضه حدث الكاميرا. |
اطّلِع على مرجع رموز الخطأ في واجهة برمجة التطبيقات للحصول على القائمة الكاملة لرموز الخطأ في واجهة برمجة التطبيقات.