Smart Device Management (SDM) API में, सभी लेगसी Nest Doorbell काम करते हैं. यह डिवाइस, डिवाइस टाइप के तौर पर DOORBELL दिखाता है:
sdm.devices.types.DOORBELL
Google Nest Doorbell (लेगसी) में एक कैमरा होता है, जो डिवाइस टाइप के तौर पर कैमरे की तरह ही काम करता है.
विशेषताएं
रेफ़रंस
ये ट्रैट, निर्देश या इवेंट इस डिवाइस से जुड़े हैं:
विशेषता | ब्यौरा | निर्देश | इवेंट |
---|---|---|---|
CameraEventImage | यह ट्रैट किसी भी ऐसे डिवाइस से जुड़ा होता है जिस पर इवेंट से इमेज जनरेट करने की सुविधा काम करती है. | GenerateImage | |
CameraImage | यह एट्रिब्यूट, किसी भी ऐसे डिवाइस से जुड़ा होता है जिस पर इमेज ली जा सकती हैं. | ||
CameraLiveStream | यह एट्रिब्यूट, लाइव स्ट्रीमिंग की सुविधा वाले किसी भी डिवाइस से जुड़ा होता है. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | यह ट्रैट, किसी भी ऐसे डिवाइस से जुड़ा होता है जिस पर मोशन डिटेक्शन इवेंट काम करते हैं. | मोशन | |
CameraPerson | यह ट्रैट, किसी भी ऐसे डिवाइस से जुड़ा होता है जिस पर व्यक्ति की पहचान करने वाले इवेंट काम करते हैं. | व्यक्ति | |
CameraSound | यह ट्रैट, साउंड डिटेक्शन इवेंट की सुविधा वाले किसी भी डिवाइस से जुड़ा होता है. | साउंड | |
DoorbellChime | यह ट्रैट किसी भी ऐसे डिवाइस से जुड़ा होता है जिस पर दरवाज़े की घंटी बजने की सुविधा और उससे जुड़े प्रेस इवेंट काम करते हैं. | चिम | |
जानकारी | यह ट्रैट, डिवाइस से जुड़ी जानकारी के लिए किसी भी डिवाइस से जुड़ा होता है. |
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 ट्रैट का मोशन इवेंट | कैमरे ने मोशन का पता लगाया है. |
इवेंट | CameraPerson ट्रैट का व्यक्ति इवेंट | कैमरे ने किसी व्यक्ति की पहचान की है. |
इवेंट | CameraSound ट्रैट का साउंड इवेंट | कैमरे ने आवाज़ की पहचान की है. |
इवेंट | DoorbellChime ट्रैट का Chime इवेंट | दरवाज़े की घंटी बजाई गई है. |
पेलोड
{ "eventId" : "48d37271-301c-486f-9266-edcb53982e06",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "B_NM_J0fhsbLeJBLdjLJmvlFmS..." } } } "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" : "TLJkb40AC62FKKrZvfBe1DPbhD..."
}
}
जवाब
{ "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 कमांड का इस्तेमाल करें.
आरटीएसपी
किसी आरटीएसपी स्ट्रीम को बंद करने के लिए, StopRtspStream कमांड का इस्तेमाल करके, टोकन को अमान्य करें. यह कमांड, CameraLiveStream ट्रैट कमांड में मौजूद होता है:
अनुरोध
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
जवाब
{}
गड़बड़ियां
इस डिवाइस से जुड़ी गड़बड़ी के लिए, ये कोड दिख सकते हैं:
गड़बड़ी का मैसेज | RPC | समस्या का हल |
---|---|---|
कैमरे की इमेज अब डाउनलोड करने के लिए उपलब्ध नहीं है. | DEADLINE_EXCEEDED |
इवेंट पब्लिश होने के 30 सेकंड बाद, इवेंट की इमेज दिखना बंद हो जाती हैं. समयसीमा खत्म होने से पहले, इमेज डाउनलोड कर लें. |
इवेंट आईडी, कैमरे से जुड़ा नहीं है. | FAILED_PRECONDITION |
कैमरा इवेंट से मिले सही eventID का इस्तेमाल करें. |
एपीआई से जुड़ी गड़बड़ियों के कोड की पूरी सूची के लिए, एपीआई से जुड़ी गड़बड़ी के कोड का रेफ़रंस देखें.