কলিং বেল (পুরনো)

Nest Hello

Smart Device Management (SDM) API-তে সবকটি পুরনো Nest Doorbell কাজ করে। এই ডিভাইসটি DOORBELL ধরনের ডিভাইস হিসেবে রিটার্ন করে:

sdm.devices.types.DOORBELL

Google Nest Doorbell (legacy)-তে একটি ক্যামেরা আছে, যা 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" : ["OPUS"],
      "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 ট্রেটের Person ইভেন্ট ক্যামেরা কোনও ব্যক্তিকে শনাক্ত করেছে।
ইভেন্ট CameraSound ট্রেটের সাউন্ড ইভেন্ট ক্যামেরা সাউন্ড শনাক্ত করেছে।
ইভেন্ট DoorbellChime ট্রেটের Chime ইভেন্ট কলিং বেল প্রেস করা হয়েছে।
যেমন, এখানে ডোরবেল বোতাম প্রেস করা হয়েছে:

পেলোড

{
  "eventId" : "685ac14f-b107-48dc-9352-320960c2bc40",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "Tfo5xZrIKoRwvn2GuyzkIRB_zI..." } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
এই ইভেন্টের পেলোডে একটি eventId আছে যা GenerateImage কমান্ডের সাথে ব্যবহার করা যেতে পারে। এই কমান্ডটি ইভেন্টের সাথে সম্পর্কিত ক্যামেরা ছবির জন্য একটি ডাউনলোড URL প্রদান করে:

অনুরোধ করুন

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
  "params" : {
    "eventId" : "PItrAR0_gG2hd2Frwja8eOczyx..."
  }
}

রেসপন্স

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

ক্যামেরার ছবি ডাউনলোড করা

url-এ একটি GET কল করুন, যা GenerateImage কমান্ডের উত্তর থেকে পাওয়া গেছে, HTTP অনুমোদনের হেডার থেকে token ব্যবহার করে, যাতে বেসিক অনুমোদন সহ ক্যামেরার ছবি ডাউনলোড করা যায়:

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...

ডাউনলোড করা ছবির রেজোলিউশন কাস্টমাইজ করতে width বা height কোয়েরি প্যারামিটার ব্যবহার করুন। এই প্যারামিটারগুলির মধ্যে শুধুমাত্র একটি উল্লেখ করতে হবে। ক্যামেরার অ্যাস্পেক্ট রেশিও অনুযায়ী অন্যান্য প্যারামিটার অটোমেটিক স্কেল করা হয়।

যেমন, ক্যামেরার অ্যাস্পেক্ট রেশিও ৪:৩ হলে, ৪৮০ x ৩৬০ রেজোলিউশনের ক্যামেরা ইমেজ ডাউনলোড করতে, প্রস্থ বা উচ্চতা উল্লেখ করুন:

প্রস্থ

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

ডাউনলোড URL-এর উপর অন্যান্য বিধিনিষেধ প্রযোজ্য:

  • URL-এ দুটি প্যারামিটারই দেওয়া থাকলে, width ব্যবহার করা হয় এবং height উপেক্ষা করা হয়।
  • URL-এ কোনও প্যারামিটার না দেওয়া থাকলে, width-এর জন্য ডিফল্ট ভ্যালু হিসেবে ৪৮০ বেছে নেওয়া হয়।

ইমেজ প্রপার্টি সম্পর্কে তথ্যের জন্য CameraImage ট্রেইট দেখুন ।

লাইভ স্ট্রিম অ্যাক্সেস করা

ক্যামেরা থেকে লাইভ স্ট্রিম অ্যাক্সেস করা যাবে। এই ডিভাইসে নিম্নলিখিত স্ট্রিম ফর্ম্যাট কাজ করে:

  • RTSP

ক্যামেরা ও কাজ করে এমন স্ট্রিম ফর্ম্যাটের সম্পূর্ণ তালিকা দেখতে, কাজ করে এমন ডিভাইস দেখুন।

লাইভ স্ট্রিম অ্যাক্সেস করতে,CameraLiveStream ট্রেডের উপযুক্ত GenerateFormatStream কমান্ড ব্যবহার করুন।

RTSP

RTSP স্ট্রিমের জন্য, CameraLiveStream trait কমান্ডের GenerateRtspStream কমান্ড স্ট্রিম URL ও সম্পর্কিত 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"
  }
}

তারপর ক্যামেরা লাইভ স্ট্রিম অ্যাক্সেস করতে স্ট্রিম URL ব্যবহার করুন:

rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken

RTSP লাইভ স্ট্রিম URL ক্লায়েন্টদের মধ্যে শেয়ার করা যায় না। একটি স্ট্রিম URL একবারে শুধুমাত্র একটি ক্লায়েন্টই ব্যবহার করতে পারে। একাধিক ক্লায়েন্ট যদি একই ক্যামেরা থেকে একই সময়ে স্ট্রিম করতে চান, তাহলে প্রত্যেক ক্লায়েন্টের জন্য আলাদা আলাদা RTSP কমান্ড পাঠাতে হবে এবং প্রত্যেক ক্লায়েন্টকে নিজস্ব স্ট্রিম URL ব্যবহার করতে হবে।

লাইভ স্ট্রিমের সময়সীমা বাড়ানো

ক্যামেরা লাইভ স্ট্রিম সেশন শুধুমাত্র ৫ মিনিটের জন্য বৈধ থাকে। আপনি যদি কোনও লাইভ স্ট্রিমের লাইফটাইম বাড়াতে চান, তাহলে আপনার জেনারেট করা স্ট্রিম ফর্ম্যাটের জন্য উপযুক্তFormatStream কমান্ড ব্যবহার করুন CameraLiveStream ট্রেইট।

RTSP

RTSP স্ট্রিম বাড়ানোর জন্য, 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"
  }
}

লাইভ স্ট্রিম দেখা চালিয়ে যেতে, এইসব নতুন ভ্যালু দিয়ে স্ট্রিম URL আপডেট করুন:

rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken

লাইভ স্ট্রিম বন্ধ করা

আপনি কোনও ক্যামেরা লাইভ স্ট্রিম আর ব্যবহার না করলে, সেটি বন্ধ করে স্ট্রিম বাতিল করে দেওয়া উচিত। এটি করতে, আপনার তৈরি করা স্ট্রিম ফর্ম্যাটের জন্য CameraLiveStream ট্রেটের উপযুক্ত StopFormatStream কমান্ড ব্যবহার করুন।

RTSP

RTSP স্ট্রিম বন্ধ করতে, CameraLiveStream ট্রেট কমান্ডের StopRtspStream কমান্ডের মাধ্যমে টোকেনটি বাতিল করুন:

অনুরোধ করুন

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}

রেসপন্স

{}

সমস্যা

এই ডিভাইসের ক্ষেত্রে নিম্নলিখিত সমস্যার কোড দেখানো হতে পারে:

ত্রুটি বার্তা RPC সমস্যার সমাধান
ক্যামেরার ছবি আর ডাউনলোড করা যাবে না। DEADLINE_EXCEEDED ইভেন্ট প্রকাশিত হওয়ার ৩০ সেকেন্ড পরে ইভেন্টের ছবির মেয়াদ শেষ হয়ে যায়। মেয়াদ শেষ হওয়ার আগেই ছবিটি ডাউনলোড করে নিতে ভুলবেন না।
ইভেন্ট আইডি ক্যামেরার নয়। FAILED_PRECONDITION ক্যামেরা ইভেন্ট থেকে পাওয়া সঠিক eventID ব্যবহার করুন।

API সমস্যার কোডের সম্পূর্ণ তালিকা পেতে API সমস্যার কোডের রেফারেন্স দেখুন।