Display Network में दिखने वाले विज्ञापन

Nest Hub Max

स्मार्ट डिवाइस मैनेजमेंट (एसडीएम) एपीआई में, Google Nest Hub Max डिसप्ले का इस्तेमाल किया जा सकता है. यह डिवाइस, डिसप्ले के टाइप के तौर पर यह जानकारी दिखाता है:

sdm.devices.types.DISPLAY

Google Nest Hub Max में एक कैमरा है, जो डिवाइस टाइप के तौर पर कैमरे की तरह काम करता है.

विशेषताएं

रेफ़रंस

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

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

JSON

जीईटी रिस्पॉन्स में Trait के न होने का मतलब है कि डिवाइस के लिए Trait या सुविधा उपलब्ध नहीं है. ज़्यादा जानकारी के लिए, डिवाइस टाइप देखें.

{
  "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" : "aedf6813-6b9e-465a-a42a-4358b8b6161f",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "-o1dVlAEusEUetEQB5hzQTXSAr...", } } } "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" : "Wh6SNjOxmdq1RNCDrK_ANe2rd0..."
  }
}

जवाब

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

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

कैमरे की इमेज डाउनलोड करने के लिए, एचटीटीपी ऑथराइज़ेशन हेडर में मौजूद token का इस्तेमाल करके, GenerateImage कमांड रिस्पॉन्स से url को GET कॉल करें.

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 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 का इस्तेमाल करें.

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