
Google Nest Hub Max डिसप्ले, स्मार्ट डिवाइस मैनेजमेंट (एसडीएम) एपीआई के साथ काम करता है. यह डिवाइस, DISPLAY टाइप का डिवाइस दिखाता है:
sdm.devices.types.DISPLAY
Google Nest Hub Max में एक कैमरा होता है, जो CAMERA डिवाइस टाइप की तरह ही काम करता है.
विशेषताएं
रेफ़रंस
इस डिवाइस से जुड़ी ये विशेषताएं, निर्देश या इवेंट हैं:
विशेषता | ब्यौरा | निर्देश | इवेंट |
---|---|---|---|
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" } } }
कैमरे से जुड़े इवेंट मैनेज करना
डिसप्ले डिवाइस टाइप से ये इवेंट ट्रिगर हो सकते हैं:टाइप | एलिमेंट | ब्यौरा |
---|---|---|
इवेंट | CameraMotion trait का Motion इवेंट | कैमरे ने हलचल का पता लगाया है. |
इवेंट | CameraPerson trait की Person इवेंट | कैमरे ने किसी व्यक्ति की पहचान की है. |
इवेंट | CameraSound trait का Sound इवेंट | कैमरे ने आवाज़ की पहचान की है. |
पेलोड
{ "eventId" : "3dd10ce8-d486-4204-a3eb-a122e9c19f08",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "DdWU-Lcm_Tsa_zduASoE-WbRnh...", } } } "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" : "ufD3PFChNS_RuT5pHp-gKP2U4L..."
}
}
जवाब
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
कैमरे से ली गई इमेज डाउनलोड करना
कैमरे की इमेज डाउनलोड करने के लिए, GenerateImage कमांड के जवाब से url
को GET कॉल करें. इसके लिए, एचटीटीपी ऑथराइज़ेशन हेडर में 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 trait देखें.
लाइव स्ट्रीम ऐक्सेस करना
कैमरे की लाइव स्ट्रीम को ऐक्सेस किया जा सकता है. इस डिवाइस पर ये स्ट्रीम फ़ॉर्मैट काम करते हैं:
- आरटीएसपी
कैमरों और स्ट्रीम के साथ काम करने वाले फ़ॉर्मैट की पूरी सूची देखने के लिए, काम करने वाले डिवाइस पर जाएं.
लाइव स्ट्रीम को ऐक्सेस करने के लिए,CameraLiveStreamtrait की GenerateFormatStream कमांड का इस्तेमाल करें.
आरटीएसपी
आरटीएसपी स्ट्रीम के लिए, CameraLiveStream trait command की 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
क्लाइंट के बीच, RTSP लाइव स्ट्रीम के यूआरएल शेयर नहीं किए जा सकते. स्ट्रीम के यूआरएल का इस्तेमाल, एक समय में सिर्फ़ एक क्लाइंट कर सकता है. अगर एक से ज़्यादा क्लाइंट एक ही कैमरे से एक साथ स्ट्रीम करना चाहते हैं, तो हर क्लाइंट के लिए RTSP कमांड भेजनी होंगी. साथ ही, हर क्लाइंट को अपने स्ट्रीम यूआरएल का इस्तेमाल करना होगा.
लाइव स्ट्रीम की अवधि बढ़ाना
कैमरे की लाइव स्ट्रीम के सेशन सिर्फ़ पांच मिनट तक मान्य होते हैं. अगर आपको किसी लाइव स्ट्रीम की अवधि बढ़ानी है, तो जनरेट किए गए स्ट्रीम फ़ॉर्मैट के लिए, CameraLiveStream trait की ExtendFormatStream कमांड का इस्तेमाल करें.
आरटीएसपी
आरटीएसपी स्ट्रीम को बढ़ाने के लिए, 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
लाइव स्ट्रीम बंद करना
जब कैमरे की मदद से की जा रही लाइव स्ट्रीम का इस्तेमाल नहीं किया जा रहा हो, तब आपको उसे बंद कर देना चाहिए और स्ट्रीम को अमान्य कर देना चाहिए. इसके लिए, जनरेट किए गए स्ट्रीम फ़ॉर्मैट के लिए,CameraLiveStreamtrait का सही 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 का इस्तेमाल करें. |
एपीआई वाली गड़बड़ियों के कोड की पूरी सूची देखने के लिए, एपीआई वाली गड़बड़ियों के कोड का रेफ़रंस देखें.