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

Nest Hello

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

sdm.devices.types.DOORBELL

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

विशेषताएं

रेफ़रंस

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

ट्रेटब्यौरानिर्देशइवेंट
CameraEventImageयह ट्रेट, इवेंट से इमेज जनरेट करने की सुविधा वाले किसी भी डिवाइस के साथ काम करती है.GenerateImage
CameraImageयह ट्रेट, इमेज कैप्चर करने की सुविधा वाले हर डिवाइस में होती है.
CameraLiveStreamयह ट्रेट, लाइव स्ट्रीमिंग की सुविधा वाले हर डिवाइस में होती है.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionयह ट्रेट, हलचल का पता लगाने वाली सुविधा वाले हर डिवाइस में होती है.मोशन
CameraPersonयह ट्रेट, व्यक्ति की हलचल की पहचान करने की सुविधा वाले हर डिवाइस में होती है.व्यक्ति
CameraSoundयह ट्रेट, आवाज़ का पता लगाने की सुविधा वाले किसी भी डिवाइस के साथ काम करती है.आवाज़
DoorbellChimeयह ट्रेट, दरवाज़े की घंटी की आवाज़ और उससे जुड़े प्रेस इवेंट की सुविधा वाले किसी भी डिवाइस के साथ काम करती है.Chime
जानकारीयह ट्रेट, डिवाइस से जुड़ी जानकारी के लिए किसी भी डिवाइस में होती है.

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"
    }
  }
}

दरवाज़े की घंटी और कैमरे से जुड़ी गतिविधियों को मैनेज करना

डोरबेल डिवाइस टाइप से ये इवेंट ट्रिगर किए जा सकते हैं :

टाइप एलिमेंट ब्यौरा
इवेंट CameraMotion trait का Motion इवेंट कैमरे ने हलचल का पता लगाया है.
इवेंट CameraPerson trait की Person इवेंट कैमरे ने किसी व्यक्ति की पहचान की है.
इवेंट CameraSound trait का Sound इवेंट कैमरे ने आवाज़ की पहचान की है.
इवेंट DoorbellChime trait का घंटी बजना इवेंट दरवाज़े की घंटी बजाई गई है.
उदाहरण के लिए, यहां दरवाज़े की घंटी वाले बटन को दबाया गया है:

पेलोड

{
  "eventId" : "3e7b7488-09ad-41f5-8381-165d5a589759",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "rjn57L02poi7gTFbOCYg0ocaKz..." } } } "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" : "nrbIeLo2lIzhuzLdJD7ARyfrsS..."
  }
}

जवाब

{
  "results" : {
    "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "token" : "g.0.eventToken"
  }
}

कैमरे से ली गई इमेज डाउनलोड करना

कैमरे की इमेज डाउनलोड करने के लिए, url को GET कॉल करें. इसके लिए, GenerateImage कमांड के रिस्पॉन्स से मिले 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

लाइव स्ट्रीम बंद करना

जब कैमरे से लाइव स्ट्रीम नहीं की जा रही हो, तब उसे बंद कर देना चाहिए. साथ ही, स्ट्रीम को अमान्य कर देना चाहिए. इसके लिए, जनरेट किए गए स्ट्रीम फ़ॉर्मैट के लिए,CameraLiveStreamट्रेट का सही StopFormatStream कमांड इस्तेमाल करें.

आरटीएसपी

आरटीएसपी स्ट्रीम बंद करने के लिए, टोकन का इस्तेमाल करके अमान्य करें. इसके लिए, CameraLiveStream trait command की 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 का इस्तेमाल करें.

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