ইভেন্টগুলো অ্যাসিঙ্ক্রোনাস এবং প্রতিটির জন্য একটি একক টপিকে Google Cloud Pub/Sub দ্বারা পরিচালিত হয়। Projectইভেন্টগুলো সমস্ত ডিভাইস এবং কাঠামোর জন্য আপডেট প্রদান করে এবং যতক্ষণ পর্যন্ত ব্যবহারকারী অ্যাক্সেস টোকেনটি প্রত্যাহার না করেন ও ইভেন্ট বার্তাগুলোর মেয়াদ শেষ না হয়, ততক্ষণ পর্যন্ত ইভেন্ট প্রাপ্তি নিশ্চিত থাকে।
ইভেন্ট হলো SDM API-এর একটি ঐচ্ছিক বৈশিষ্ট্য। আপনার গুগল ক্লাউড প্রজেক্ট ব্যবহার করে এগুলো সহজেই বাস্তবায়ন ও যাচাই করা যায়।
ইভেন্টগুলি সক্ষম করুন
ইভেন্টগুলি সক্রিয় করা যেতে পারে Device Access কনসোল। যদি আগে থেকে না করে থাকেন, তাহলে কনসোলে আপনার প্রজেক্টটি নির্বাচন করুন।
আপনি যদি ইতিমধ্যেই ইভেন্টগুলি সক্রিয় করে থাকেন (উদাহরণস্বরূপ, প্রজেক্ট তৈরির সময়), তাহলে 'Enable Pubsub topic for Events' বিভাগের 'Pub/Sub topic' ফিল্ডে আগে থেকেই একটি ভ্যালু থাকার কথা, যাকে 'Topic ID' বলা হয় এবং যা নিম্নলিখিত পুরোনো ফরম্যাটে থাকে:
projects/sdm-prod/topics/enterprise-project-id
এই টপিক ফরম্যাটটি গুগল-হোস্টেড এবং আপনি গুগল-হোস্টেড পাব/সাব টপিকটি নিষ্ক্রিয় না করা পর্যন্ত এটি আপনার প্রোজেক্টের জন্য বহাল থাকবে। আপনি যদি পরে এটি পুনরায় সক্রিয় করেন, তাহলে আপনাকে সেলফ-হোস্টেড পাব/সাব টপিকে স্থানান্তরিত করা হবে।
একজন ডেভেলপার তার নিজের গুগল ক্লাউড প্রজেক্টে সেলফ-হোস্টেড পাব/সাব টপিক তৈরি বা পরিবর্তন করতে পারেন। পাব/সাব ব্যবহারের সাথে সম্পর্কিত সমস্ত খরচের জন্যও ডেভেলপার দায়ী থাকবেন; আরও তথ্যের জন্য পাব/সাব প্রাইসিং দেখুন।
পাব/সাব টপিক তৈরি করুন:
gcloud pubsub topics create {topic} --message-retention-duration=0sআপনার প্রোজেক্টের টপিক আইডির জন্য ইভেন্ট ডেটা অ্যাক্সেস ও প্রকাশ করতে প্রয়োজনীয় SDM API অনুমতি প্রদান করুন:
gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"আপনার নতুন তৈরি করা টপিক আইডি-র ফরম্যাটটি দেখতে এইরকম হবে:
projects/gcp-project-name/subscriptions/topic-id
আপনার টপিক আইডিটি লিখে রাখুন, ইভেন্ট সক্রিয় করার কাজটি সম্পন্ন করতে এটি প্রয়োজন হবে। আরও তথ্যের জন্য ‘একটি টপিক তৈরি করুন’ দেখুন।
ইভেন্টগুলি সক্রিয় করতে:
- ইভেন্ট সক্ষম করুন (Enable events) বিকল্পটি চেক করুন এবং প্রজেক্ট তৈরি করুন (Create Project) বোতামে ক্লিক করুন।
- Pub/Sub টপিকের জন্য আইকনে ক্লিক করুন এবং ‘Enable events with PubSub topic’ নির্বাচন করুন।
- পূর্বে প্রদান করা বা তৈরি করা পাব/সাব টপিক আইডিটি প্রবেশ করান।
আপনার টপিক আইডিটি কপি করুন, টপিকটিতে সাবস্ক্রিপশন তৈরি করতে এটি প্রয়োজন হবে, যার মাধ্যমে ইভেন্ট মেসেজগুলো পাওয়া যাবে।
একটি পুল সাবস্ক্রিপশন তৈরি করুন
পুল সাবস্ক্রিপশন হলো এমন একটি ব্যবস্থা যেখানে একজন সাবস্ক্রাইবার কিউতে থাকা ইভেন্ট মেসেজের জন্য পাব/সাব সার্ভারে অনুরোধ পাঠায়। আপনার অনুমোদিত ডিভাইসগুলোর জন্য ইভেন্ট তৈরি হচ্ছে কিনা, তা যাচাই করার এটি একটি দ্রুত ও সহজ উপায়।
আপনার গুগল ক্লাউড প্রোজেক্টের জন্য ক্লাউড শেল খুলুন:
ক্লাউড শেল প্রম্পটে, আপনার পছন্দের যেকোনো subscription-id এবং আপনার অনন্য টপিক আইডি ব্যবহার করে আপনার টপিকের জন্য একটি পুল সাবস্ক্রিপশন তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:
gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].ইভেন্ট শুরু করুন
পাব/সাব সাবস্ক্রিপশন তৈরি হয়ে গেলে প্রথমবারের মতো ইভেন্ট শুরু করতে, এককালীন ট্রিগার হিসেবে আপনার ডিভাইসগুলোর তালিকা করার জন্য একটি কল করুন:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'এই এপিআই কলের পর সকল কাঠামো ও ডিভাইসের ইভেন্টগুলো প্রকাশিত হবে।
ইভেন্ট তৈরি করুন
সমস্ত ট্রেইট ফিল্ড পরিবর্তনের জন্য ইভেন্ট তৈরি হয়, যার মধ্যে কিছু স্বয়ংক্রিয় এবং কিছু ম্যানুয়াল।
উদাহরণস্বরূপ, যদি আপনার নেস্ট থার্মোস্ট্যাটের নিকটবর্তী পারিপার্শ্বিক তাপমাত্রা পরিবর্তিত হয়, তাহলে একটি ইভেন্ট তৈরি হবে।তাপমাত্রা ট্রেইটটি স্বয়ংক্রিয়ভাবে একটি নতুন ambientTemperatureCelsius মান সহ পাঠানো হবে।
ম্যানুয়ালি একটি তৈরি করতে, হয়:
- আপনার ডিভাইসের অবস্থা বাহ্যিকভাবে পরিবর্তন করুন, যেমন আপনার নেস্ট থার্মোস্ট্যাটের মোড পরিবর্তন করা।
- গুগল নেস্ট ক্যাম ইনডোরে গতি, ব্যক্তি বা শব্দের মতো কোনো ইভেন্ট ট্রিগার করুন।
- SDM API ব্যবহার করে একটি ডিভাইস কমান্ড কার্যকর করুন ।
বার্তাগুলি দেখুন
ইভেন্ট বার্তাগুলি আপনার গুগল ক্লাউড প্রজেক্টের পাব/সাব সাবস্ক্রিপশন বিভাগে দেখা যাবে:
গুগল ক্লাউড পাব/সাব সাবস্ক্রিপশন-এ যান
- আপনার পূর্বে তৈরি করা সাবস্ক্রিপশন আইডিটিতে ক্লিক করুন।
- সাবস্ক্রিপশন ডিটেইল স্ক্রিনে, আপনি আনঅ্যাকড মেসেজ কাউন্ট চার্টে অ্যাক্টিভিটি দেখতে পাবেন। এটি নির্দেশ করে যে আপনার সাবস্ক্রিপশনের জন্য ইভেন্ট মেসেজ এসেছে। যদি আপনি কোনো অ্যাক্টিভিটি দেখতে না পান, তাহলে কিছুক্ষণ অপেক্ষা করুন অথবা আরও কয়েকটি ইভেন্ট তৈরি করুন।
- মেসেজ প্যানেলটি খুলতে ‘ভিউ মেসেজেস’ ক্লিক করুন।
- বার্তাগুলো দেখতে PULL-এ ক্লিক করুন। ইভেন্টগুলো তৈরি করতে আপনি যে পদক্ষেপগুলো নিয়েছিলেন, বার্তাগুলো সেগুলোর সাথে সঙ্গতিপূর্ণ হওয়া উচিত।
একটি সাধারণ pull কমান্ড ব্যবহার করে ক্লাউড শেলেও বার্তাগুলি দেখা যেতে পারে:
gcloud pubsub subscriptions pull subscription-idসাবস্ক্রিপশনের প্রকারভেদ, সেইসাথে SDM API দ্বারা প্রেরিত ইভেন্টের ধরন এবং সেগুলি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, ইভেন্টস (Events) দেখুন।
বার্তাগুলি পরিচালনা করুন
সাবস্ক্রিপশন পরিষ্কার রাখতে এবং অন্যান্য সাবস্ক্রাইবারদের কাছে একই মেসেজ বারবার যাওয়া এড়াতে, মেসেজগুলো নিয়মিতভাবে স্বীকার করে মুছে ফেলা উচিত। পাব/সাব সাবস্ক্রিপশন সেকশন থেকে সমস্ত সাবস্ক্রিপশন মেসেজ ম্যানুয়ালি মুছে ফেলা যাবে:
গুগল ক্লাউড পাব/সাব সাবস্ক্রিপশন-এ যান
- সাবস্ক্রিপশন আইডিতে ক্লিক করুন।
- স্বীকার করার এবং শুদ্ধ করার কয়েকটি উপায় আছে:
- মেসেজ প্যানেলটি খুলতে ‘ভিউ মেসেজেস’ (VIEW MESSAGES) ক্লিক করুন। সমস্ত মেসেজ দেখতে এবং অ্যাকনলেজ করতে ‘এনাবল অ্যাক মেসেজেস’ (Enable ack messages) চেকবক্সটি চেক করুন এবং ‘পুল’ (PULL) অপশনে ক্লিক করুন।
- না দেখে শুধু স্বীকার করে সমস্ত বিদ্যমান বার্তা মুছে ফেলতে PURGE MESSAGES- ক্লিক করুন। নিশ্চিত করতে PURGE-এ ক্লিক করুন।
একটি সাধারণ pull কমান্ডের সাথে --auto-ack ফ্ল্যাগ ব্যবহার করে ক্লাউড শেলে মেসেজগুলি মুছে ফেলাও যায়:
gcloud pubsub subscriptions pull subscription-id --auto-ackসাবস্ক্রিপশন পরিচালনা করুন
সাবস্ক্রিপশন প্রোপার্টি ব্যবহার অংশে বর্ণিত পদ্ধতি অনুযায়ী সাবস্ক্রিপশন বিভিন্ন উপায়ে কনফিগার করা যেতে পারে।
আপনি কীভাবে সাবস্ক্রিপশন এবং মেসেজ পরিচালনা করতে চান তা আপনার উপর নির্ভর করলেও, একটি প্রোডাকশন অ্যাপ্লিকেশনের জন্য আমরা সুপারিশ করি যে, এই কুইক স্টার্ট গাইডে এখন পর্যন্ত ব্যবহৃত ইউজার অ্যাকাউন্টের পরিবর্তে অথেনটিকেশনের জন্য সার্ভিস অ্যাকাউন্ট ব্যবহার করুন। একটি সার্ভিস অ্যাকাউন্ট কোনো ব্যক্তি নয়, বরং একটি অ্যাপ্লিকেশন বা ভার্চুয়াল মেশিন দ্বারা ব্যবহৃত হয় এবং এর নিজস্ব একটি অনন্য অ্যাকাউন্ট কী থাকে।
পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ সম্পর্কে আরও তথ্যের জন্য Device Access, ইভেন্টসমূহ দেখুন।