दरवाज़े की घंटी (लेगसी)

Nest Hello

Smart Device Management (SDM) API में, सभी लेगसी Nest Doorbell काम करते हैं. यह डिवाइस, डिवाइस टाइप के तौर पर DOORBELL दिखाता है:

sdm.devices.types.DOORBELL

Google Nest Doorbell (लेगसी) में एक कैमरा होता है, जो CAMERA टाइप के डिवाइस की तरह ही काम करता है.

विशेषताएं

रेफ़रंस

यहां दिए गए लक्षण, निर्देश या इवेंट इस डिवाइस से जुड़े हैं:

विशेषताब्यौरानिर्देशइवेंट
CameraEventImageयह ट्रैट किसी भी ऐसे डिवाइस से जुड़ा होता है जिस पर इवेंट से इमेज जनरेट करने की सुविधा काम करती है.GenerateImage
CameraImageयह एट्रिब्यूट, किसी भी ऐसे डिवाइस पर लागू होता है जिस पर इमेज ली जा सकती हैं.
CameraLiveStreamयह Trait ऐसे किसी भी डिवाइस से जुड़ा है जिसमें लाइव स्ट्रीमिंग की सुविधा काम करती है.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 ट्रैट का साउंड इवेंट कैमरे ने आवाज़ की पहचान की है.
इवेंट दरवाज़े की घंटी के ट्रैट का चाइम इवेंट दरवाज़े की घंटी बजाई गई है.
उदाहरण के लिए, यहां दरवाज़े की घंटी का बटन दबाया गया है:

पेलोड

{
  "eventId" : "76f85e13-cc15-4705-83c3-0b3838118524",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "cV7T3NiEMXH5ZmQz21AwMaW0mF..." } } } "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" : "mFNqXZk08luMZuuBBPCPbS7mZ4..."
  }
}

जवाब

{
  "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 ट्रैट देखें.

लाइव स्ट्रीम ऐक्सेस करना

कैमरे की लाइव स्ट्रीम को ऐक्सेस किया जा सकता है. इस डिवाइस पर ये स्ट्रीम फ़ॉर्मैट काम करते हैं:

  • आरटीएसपी

कैमरों और साथ काम करने वाले स्ट्रीम फ़ॉर्मैट की पूरी सूची देखने के लिए, इस्तेमाल किए जा सकने वाले डिवाइस देखें.

लाइव स्ट्रीम को ऐक्सेस करने के लिए, जनरेट करेंFormatस्ट्रीम CameraLiveStream एट्रिब्यूट के सही कमांड का इस्तेमाल करें.

आरटीएसपी

आरटीएसपी स्ट्रीम के लिए, CameraLiveStream trait कमांड का 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 trait कमांड के 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 का इस्तेमाल करें.

एपीआई से जुड़ी गड़बड़ियों के कोड की पूरी सूची के लिए, एपीआई से जुड़ी गड़बड़ी के कोड का रेफ़रंस देखें.