
स्मार्ट डिवाइस मैनेजमेंट (एसडीएम) एपीआई में, Google Nest Hub Max डिसप्ले का इस्तेमाल किया जा सकता है. यह डिवाइस, डिसप्ले के टाइप के तौर पर यह जानकारी दिखाता है:
sdm.devices.types.DISPLAY
Google Nest Hub Max में एक कैमरा है, जो डिवाइस टाइप के तौर पर कैमरे की तरह काम करता है.
विशेषताएं
ये ट्रैट, निर्देश या इवेंट इस डिवाइस से जुड़े हैं:
विशेषता | ब्यौरा | निर्देश | इवेंट |
---|---|---|---|
CameraEventImage | यह ट्रैट किसी भी ऐसे डिवाइस से जुड़ा होता है जिस पर इवेंट से इमेज जनरेट करने की सुविधा काम करती है. | GenerateImage | |
CameraImage | यह एट्रिब्यूट, किसी भी ऐसे डिवाइस पर लागू होता है जिस पर इमेज ली जा सकती हैं. | ||
CameraLiveStream | यह एट्रिब्यूट, लाइव स्ट्रीमिंग की सुविधा वाले किसी भी डिवाइस से जुड़ा होता है. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | यह ट्रैट, किसी भी ऐसे डिवाइस से जुड़ा होता है जिस पर मोशन डिटेक्शन इवेंट काम करते हैं. | मोशन | |
CameraPerson | यह ट्रैट, किसी भी ऐसे डिवाइस से जुड़ा होता है जिस पर व्यक्ति की पहचान करने वाले इवेंट काम करते हैं. | व्यक्ति | |
CameraSound | यह ट्रैट, साउंड डिटेक्शन इवेंट की सुविधा वाले किसी भी डिवाइस से जुड़ा होता है. | साउंड | |
जानकारी | यह ट्रैट, डिवाइस से जुड़ी जानकारी के लिए किसी भी डिवाइस से जुड़ा होता है. |
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" } } }
कैमरे से जुड़े इवेंट मैनेज करना
डिसप्ले डिवाइस टाइप से ये इवेंट ट्रिगर हो सकते हैं:टाइप | एलिमेंट | ब्यौरा |
---|---|---|
इवेंट | CameraMotion ट्रैट का मोशन इवेंट | कैमरे ने मोशन का पता लगाया है. |
इवेंट | CameraPerson ट्रैट का व्यक्ति इवेंट | कैमरे ने किसी व्यक्ति की पहचान की है. |
इवेंट | CameraSound ट्रैट का साउंड इवेंट | कैमरे ने आवाज़ की पहचान की है. |
{ "eventId" : "93779326-2fd6-4623-9e73-7ef91fd85b2c",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id /devices/device-id ", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "jwatvkU6ucTeRHrDJ0FZP32eTF...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id /devices/device-id " ] }
eventId
होता है. इसका इस्तेमाल, GenerateImage कमांड के साथ किया जा सकता है. यह निर्देश, इवेंट से जुड़ी कैमरे की इमेज का डाउनलोड यूआरएल दिखाता है:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.CameraEventImage.GenerateImage
", "params" : { "eventId" : "jYhiD3u7JPZGER8u9B4KfuEUYm..." } }
{ "results" : { "url" : "https://domain /sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
कैमरे से ली गई इमेज डाउनलोड करना
कैमरे की इमेज डाउनलोड करने के लिए, GenerateImage कमांड के रिस्पॉन्स से url
को GET कॉल करें. इसके लिए, HTTP अनुमति वाले हेडर में token
का इस्तेमाल करके, बुनियादी अनुमति दें:
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
डाउनलोड यूआरएल पर ये अन्य पाबंदियां लागू होती हैं:
- अगर यूआरएल में दोनों पैरामीटर दिए गए हैं, तो
width
का इस्तेमाल किया जाता है औरheight
को अनदेखा किया जाता है. - अगर यूआरएल में कोई पैरामीटर नहीं दिया गया है, तो
width
के लिए डिफ़ॉल्ट वैल्यू 480 चुनी जाती है.
इमेज प्रॉपर्टी के बारे में जानकारी के लिए, CameraImage ट्रैट देखें.
लाइव स्ट्रीम ऐक्सेस करना
कैमरे की लाइव स्ट्रीम को ऐक्सेस किया जा सकता है. इस डिवाइस पर ये स्ट्रीम फ़ॉर्मैट काम करते हैं:
- आरटीएसपी
कैमरों और स्ट्रीम के लिए इस्तेमाल किए जा सकने वाले फ़ॉर्मैट की पूरी सूची देखने के लिए, काम करने वाले डिवाइस देखें.
लाइव स्ट्रीम को ऐक्सेस करने के लिए,CameraLiveStreamट्रैट के GenerateFormatStream कमांड का इस्तेमाल करें.
किसी आरटीएसपी स्ट्रीम के लिए, CameraLiveStream ट्रीट की मदद से, GenerateRtspStream कमांड का इस्तेमाल करके, स्ट्रीम का यूआरएल और उससे जुड़ा 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" } }
इसके बाद, कैमरे की लाइव स्ट्रीम को ऐक्सेस करने के लिए, स्ट्रीम के यूआरएल का इस्तेमाल करें:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
आरटीएसपी लाइव स्ट्रीम के यूआरएल, क्लाइंट के बीच शेयर नहीं किए जा सकते. स्ट्रीम के यूआरएल का इस्तेमाल, एक बार में सिर्फ़ एक क्लाइंट कर सकता है. अगर एक से ज़्यादा क्लाइंट एक ही समय पर एक ही कैमरे से स्ट्रीम करना चाहते हैं, तो हर क्लाइंट के लिए आरटीएसपी निर्देश भेजने होंगे. साथ ही, हर क्लाइंट को अपने स्ट्रीम यूआरएल का इस्तेमाल करना होगा.
लाइव स्ट्रीम को ज़्यादा समय तक चलाना
कैमरे से लाइव स्ट्रीम करने की सुविधा, सिर्फ़ पांच मिनट के लिए उपलब्ध है. अगर आपको लाइव स्ट्रीम के दिखने का समय बढ़ाना है, तो अपने जनरेट किए गए स्ट्रीम फ़ॉर्मैट के लिए, ExtendFormatStream command CameraLiveStream ट्रैट का सही इस्तेमाल करें.
किसी आरटीएसपी स्ट्रीम को बढ़ाने के लिए, CameraLiveStream ट्रीट की वैल्यू पाने के लिए, ExtendRtspStream कमांड का इस्तेमाल करें. इससे आपको नई 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" } }
लाइव स्ट्रीम को देखना जारी रखने के लिए, स्ट्रीम के यूआरएल को इन नई वैल्यू के साथ अपडेट करें:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
लाइव स्ट्रीम बंद करना
जब भी कैमरे की मदद से की जाने वाली लाइव स्ट्रीम का इस्तेमाल न किया जा रहा हो, तो आपको उसे बंद कर देना चाहिए और स्ट्रीम को अमान्य कर देना चाहिए. ऐसा करने के लिए, अपने जनरेट किए गए स्ट्रीम फ़ॉर्मैट के लिए,CameraLiveStream ट्रैट के StopFormatStream कमांड का इस्तेमाल करें.
किसी आरटीएसपी स्ट्रीम को बंद करने के लिए, CameraLiveStream ट्रैट कमांड के StopRtspStream कमांड की मदद से, टोकन को अमान्य करें:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
", "params" : { "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..." } }
{}
गड़बड़ियां
इस डिवाइस से जुड़ी गड़बड़ी के लिए, ये कोड दिख सकते हैं:
गड़बड़ी का मैसेज | RPC | समस्या का हल |
---|---|---|
कैमरे की इमेज अब डाउनलोड करने के लिए उपलब्ध नहीं है. | DEADLINE_EXCEEDED |
इवेंट पब्लिश होने के 30 सेकंड बाद, इवेंट की इमेज दिखना बंद हो जाती हैं. समयसीमा खत्म होने से पहले, इमेज डाउनलोड कर लें. |
इवेंट आईडी, कैमरे से जुड़ा नहीं है. | FAILED_PRECONDITION |
कैमरा इवेंट से मिले सही eventID का इस्तेमाल करें. |
एपीआई से जुड़ी गड़बड़ियों के कोड की पूरी सूची के लिए, एपीआई से जुड़ी गड़बड़ी के कोड का रेफ़रंस देखें.