Android-এ ইন্টারঅপারেবিলিটি

Google Home ইকোসিস্টেমের ডিভাইসগুলি Cloud-to-cloud, Matter বা দু'টিই ব্যবহার করে প্রয়োগ করা যেতে পারে। কিছু ডিভাইস টাইপ অন্যগুলির তুলনায় বেশি জটিল এবং ইকোসিস্টেমের অন্যান্য ডিভাইসের সাথে মসৃণ ইন্টারফেসিংয়ের অনুমতি দেয় এমনভাবে Home API ব্যবহার করার সময় ডেভেলপ করার ক্ষেত্রে চ্যালেঞ্জ তৈরি করে।

এইসব ডিভাইস প্রয়োগ করার ক্ষেত্রে একটি সমস্যা হল যে ডিভাইসগুলি বিভিন্ন ধরনের কম্বিনেশন দিয়ে তৈরি হতে পারে। সব কম্বিনেশন সমানভাবে কাজ করে না। এছাড়াও, Cloud-to-cloud ডেটা মডেল Matter ডেটা মডেলের সাথে ম্যাপ করে, কিন্তু সবসময় স্পষ্ট, ওয়ান-টু-ওয়ান ফ্যাশনে নয়। Android-এ ডেটা মডেল দেখুন, যেখানে ডেটা মডেল ও সেগুলির ম্যাপিং আরও বিস্তারিতভাবে আলোচনা করা হয়েছে।

এই পৃষ্ঠায় নির্দিষ্ট ডিভাইসের ডেটা মডেল একে অপরের সাথে ম্যাপ করার বিষয়ে আরও তথ্য এবং সেইসব ডিভাইসের ধরন প্রয়োগ করার জন্য কোন কোন বৈশিষ্ট্য ব্যবহার করতে হবে সেই বিষয়ে কিছু নির্দেশিকা দেওয়া আছে।

ওভেন

ওভেন (OvenDevice) ডিভাইসের ধরন এবং এর কম্পোনেন্ট ট্রেট অন্যান্য ডিভাইসের ধরনের তুলনায় সহজভাবে প্রয়োগ করা যায় না। Matter-এ ওভেন প্রয়োগ করার একাধিক উপায় আছে, তবে সব উপায়ই অন্যান্য ডিভাইস বা Google Home ইকোসিস্টেমের সাথে নির্বিঘ্নে ইন্টারঅপারেশন প্রদান করে না।

বৈশিষ্ট্য ম্যাপিং

Matter Oven ডিভাইস ইমপ্লিমেন্ট করার জন্য Oven মোড এবং চালু ও বন্ধ করার ক্লাস্টার ব্যবহার না করে, আমরা Oven ক্যাভিটি অপারেশনাল স্টেট ক্লাস্টার ব্যবহার করার সাজেশন দিই। এই ক্লাস্টারটি Home API-তে OvenCavityOperationalState ট্রেটের মাধ্যমে দেখানো হয় এবং Cloud-to-cloud RunCycle ট্রেটের সাথে ম্যাপ করা হয়। এটি "প্রি-হিটিং", "প্রি-হিটেড" এবং "কুলিং ডাউন"-এর মতো ফেজকে সংজ্ঞায়িত করে।

Home API Cloud-to-cloud
OvenCavityOperationalState RunCycle

Cloud-to-cloud ওভেন ডেটা মডেলের কিছু সীমাবদ্ধতা আছে। Cloud-to-cloud ওভেনের ডেটা মডেলে শুধুমাত্র একটি চেম্বার এবং একটি RunCycle ব্যবহার করা যায়। অন্যদিকে, Matter মডেল প্রতিটি চেম্বারের জন্য ওভেন ক্যাভিটি অপারেশনাল স্টেট ক্লাস্টার সহ একটি ডিভাইস এন্ডপয়েন্ট হিসেবে মাল্টি-চেম্বার ওভেনকে মডেল করে।

কিছু ওভেন ডিভাইসের ক্ষেত্রে, রানটাইমে ফেজ লিস্ট পরিবর্তন করা উপযুক্ত হতে পারে। যেমন, প্রিহিট করার সুবিধা আছে এমন ওভেনে প্রিহিট করার সময় ফেজ লিস্টে আলাদা আলাদা এন্ট্রি থাকতে পারে, যা গরম করার বা ঠান্ডা করার সময় থাকে না।

আগের বিভাগে আলোচনা করা হয়েছে, Matter ওভেন ইমপ্লিমেন্টেশনে ওভেন ক্যাভিটি অপারেশনাল স্টেট ক্লাস্টার ইমপ্লিমেন্ট করতে হবে, যা হোম API-তে OvenCavityOperationalState ট্রেড হিসেবে মডেল করা হয়েছে।

সবচেয়ে ভালো ফলাফল পেতে, আপনার Cloud-to-cloud ওভেন ডিভাইস যেন RunCycle ট্রেট প্রয়োগ করে এবং currentRunCycle অ্যাট্রিবিউট সেট করার মাধ্যমে বর্তমান অবস্থা প্রকাশ করে তা নিশ্চিত করুন। এই অ্যাট্রিবিউটটি OvenCavityOperationalState.phaseList এবং OvenCavityOperationalState.currentPhase অ্যাট্রিবিউটের মাধ্যমে Home API-এর সাহায্যে দেখা যায়।

এছাড়াও, ওভেন ডিভাইসকে রান সাইকেল ডিভাইস বিজ্ঞপ্তি প্রকাশ করতে হবে। এটি করার জন্য RunCycle-এর priority, status ও currentCycleRemainingTime অ্যাট্রিবিউট আপডেট করতে হবে। নিচের উদাহরণে একটি OperationalState.OperationCompletion ইভেন্ট পাঠানো হয়েছে এবং এটি ব্যবহার করে বোঝানো যেতে পারে যে ওভেন 'প্রি-হিটিং' সাইকেল থেকে 'প্রি-হিটেড' সাইকেলে পরিবর্তিত হয়েছে:

{
  "currentRunCycle": [
    {
      "currentCycle": "pre-heating",
      "nextCycle": "pre-heated",
      "lang": "en"
    }
  ],
  "currentTotalRemainingTime": 1200,
  "currentCycleRemainingTime": 300
}

অটোমেশনে ওভেন ব্যবহার করা

ওভেনের জন্য অটোমেশন তৈরি করার সময়, ওভেন ক্যাভিটি অপারেশনাল স্টেট ক্লাস্টার ব্যবহার করে, currentPhase অ্যাট্রিবিউটকে রেফার করুন যাতে ওভেন কোন সাইকেলে আছে তা জানা যায়:

   sequential {
    val starterNode =
      starter<_>(oven, OvenDevice, OvenCavityOperationalState /* Or OperationalState */)
    condition {
      expression = starterNode.phaseList[operationalState.currentPhase.toUInt()] equals "pre-heated"
    }
    action(speaker, SpeakerDevice) {
    command(AssistantBroadcast.broadcast("Oven Cycle Complete"))
  }
  // Additional actions here as needed
}

সম্পূর্ণ উদাহরণের জন্য, ওভেন বেছে নেওয়া তাপমাত্রায় পৌঁছালে আলো মিটমিট করে এবং ঘোষণা করে দেখুন।