Android-এ অটোমেশন ডিজাইন করা

Automation API ব্যবহার করা শুরু করার আগে, আপনাকে অটোমেশন ডিজাইন করতে হবে।

প্রতিটি অটোমেশনের জন্য নিম্নলিখিত প্যারামিটার নির্ধারণ করুন:

  • যেসব পরিস্থিতিতে ব্যবহারকারীকে অটোমেশন সাজেস্ট করা উচিত। যেমন, ব্যবহারকারী যদি তার বাড়িতে তিনটি নতুন লাইট যোগ করেন, তাহলে তিনি লাইট কন্ট্রোল করার জন্য বিশেষভাবে তৈরি অটোমেশনে আগ্রহী হতে পারেন।
  • অটোমেশনের জন্য কোন ধরনের ডিভাইস প্রয়োজন। যেমন, ব্যবহারকারী যদি তার বাড়িতে তিনটি নতুন লাইট যোগ করেন, তাহলে তিনি লাইট কন্ট্রোল করার জন্য তৈরি করা নির্দিষ্ট অটোমেশনে আগ্রহী হতে পারেন। উদাহরণ হিসেবে লাইট ডিভাইসের ধরনের মধ্যে রয়েছে OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice বা ExtendedColorLightDevice।
  • অটোমেশনের জন্য কোন কোন ট্রেট অ্যাট্রিবিউট ও কমান্ড প্রয়োজন এবং সেগুলি Android-এ অটোমেশন API-তে কাজ করে কিনা।
  • স্টার্টার হিসেবে অটোমেশন চালু করা উচিত এমন বৈশিষ্ট্য। Android-এ অটোমেশন কম্পোনেন্ট-এ স্টার্টার সম্পর্কে আলোচনা করা হয়েছে।
  • অতিরিক্ত শর্ত যা নির্ধারণ করে যে অটোমেশনটি আসলে চালানো উচিত কিনা এবং কোন অ্যাকশনগুলি সম্পাদন করতে হবে।
  • অটোমেশনের জন্য এক্সিকিউশন ফ্লো। এটি কি ক্রমানুসারে নাকি সমান্তরালভাবে এক্সিকিউট করা উচিত? আপনার কি একাধিক লজিক পাথ প্রয়োজন?

ডিজাইন করার সময়, অটোমেশনের ফ্লো, নোড বাই নোড, প্রতিটি ধাপে প্রয়োজনীয় লজিক সহ ডায়াগ্রাম করা উপযোগী হতে পারে।

আপনি অটোমেশন ডিজাইন করার পরে, এটি তৈরি করতে অটোমেশন DSL ব্যবহার করুন। আপনার তৈরি করা অটোমেশন আসলে একটি "টেমপ্লেট" — এতে থাকা যেকোনও স্ট্রাকচার ও ডিভাইস হল প্লেসহোল্ডার এবং প্রতিটি ব্যবহারকারী যখন নিজের ব্যবহারের জন্য অটোমেশন "গ্রহণ" করেন, তখন তাদের নির্দিষ্ট স্ট্রাকচার ও ডিভাইস দিয়ে তা পূরণ করা হয়।

Home API ব্যবহার করে কোনও অ্যাপ নিম্নলিখিত বিভিন্ন ধরনের অটোমেশন তৈরি করতে পারে। এইসব উদাহরণের সাথে সম্পর্কিত কোড উদ্ধৃতির জন্য অটোমেশন তৈরি করুন পৃষ্ঠা দেখুন।

সহজ অটোমেশন

ধরুন, আপনাকে এমন একটি অ্যাপ লিখতে হবে যা সকাল ৮:০০টায় ব্লাইন্ড তোলার জন্য অটোমেশন তৈরি করে। এটি করার জন্য, অ্যাপটির স্ট্রাকচারে উপস্থিত ব্লাইন্ডের (WindowCoveringDevice ডিভাইসের ধরন সহ ডিভাইস) একটি তালিকা প্রয়োজন যা অটোমেশনকে সমর্থন করে, যা ডিসকভারি API দ্বারা প্রদান করা যেতে পারে।

নির্দিষ্ট সময়ে রান করতে হবে এমন অটোমেশনের ক্ষেত্রে, আপনাকে এটিও নিশ্চিত করতে হবে যে ব্যবহারকারী তার বেছে নেওয়া স্ট্রাকচারের জন্য রাস্তার ঠিকানা অ্যাসাইন করেছেন (স্ট্রাকচার তৈরি করার সময় অথবা Google Home app (GHA)-এ), অন্যথায়, অটোমেশনটি কোন টাইম জোনে রান করবে তা জানতে পারবে না। Discovery API আপনাকে নির্ধারণ করতে সাহায্য করতে পারে যে স্ট্রাকচারে কোনও ঠিকানা অ্যাসাইন করা হয়েছে কিনা।

তাই এক্সিকিউশন ফ্লো এইরকম দেখতে হবে:

  1. ডিসকভারি API ব্যবহার করে, WindowCoveringDevice ডিভাইসের তালিকা সংগ্রহ করুন।
  2. রাস্তার ঠিকানা পূরণ করা না থাকলে, ব্যবহারকারীকে জানান যে তাকে রাস্তার ঠিকানা দিতে হবে (যেমন, GHA-এ) এবং এক্সিকিউশন বন্ধ করুন।
  3. অন্যথায়, অটোমেশনটি সংজ্ঞায়িত করুন:
    1. সকাল ৮:০০টায় অটোমেশন শুরু করুন।
    2. প্রতিটি ব্লাইন্ডের জন্য, WindowCovering ট্রেইটের upOrOpen কমান্ড কল করুন।

জটিল অটোমেশন

এমন একটি অ্যাপের কথা ভাবুন যা একটি অটোমেশন তৈরি করে যা মোশন শনাক্ত করা হলে আলো ব্লিঙ্ক করে।

এই অ্যাপ প্রয়োগ করার প্রথম কাজগুলির মধ্যে একটি হল ডিসকভারি API ব্যবহার করে ব্যবহারকারীর বাড়িতে কী কী আলো উপলভ্য তা খুঁজে বের করা। এই তথ্যের সাহায্যে, আপনার অ্যাপ এখন উপলভ্য লাইটগুলি দেখাতে পারে এবং সম্ভবত ব্যবহারকারীকে কোন লাইটগুলি ব্লিঙ্ক করতে চান তা বেছে নেওয়ার অনুমতি দিতে পারে।

এক্সিকিউশন ফ্লো:

  1. Discovery API ব্যবহার করে, স্ট্রাকচারে উপস্থিত লাইট ডিভাইসের তালিকা সংগ্রহ করুন, যা OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice, বা ExtendedColorLightDevice-এর মতো ডিভাইসের ধরন সহ যেকোনও ডিভাইস হতে পারে।
  2. যে আলো ব্লিঙ্ক করে সেটি বেছে নেওয়ার উপায় প্রদান করুন, সম্ভবত কাস্টম সেটিংস প্যানেলের মাধ্যমে।
  3. অটোমেশন নির্ধারণ করুন:
    1. AreaPresenceState মনিটর করার মাধ্যমে, কেউ প্রাঙ্গণে এলে বা চলে গেলে অটোমেশন শুরু করুন।
    2. presenceState যদি দেখায় যে স্ট্রাকচারটি দখল করা হয়েছে, তাহলে বেছে নেওয়া লাইট ব্লিংক করুন।

সাধারণ অটোমেশন

আরও জটিল অটোমেশনের উদাহরণ হিসেবে, এমন একটি অটোমেশনের কথা ভাবুন যা ব্যবহারকারীকে তার বাড়িতে থাকা যেকোনও বা সব ডিভাইসের উপর ভিত্তি করে একটি ওপেন-এন্ডেড অটোমেশন তৈরি করার মাধ্যমে গাইড করে।

অটোমেশন প্রথমে ব্যবহারকারীকে একটি স্ট্রাকচার বেছে নিতে প্রম্পট করতে পারে।

তারপর অটোমেশনটি স্ট্রাকচারের সব রুমকে বড় করা যায় এমন আউটলাইন ভিউতে দেখাতে পারে, যেখানে কোনও রুম বড় করলে তার মধ্যে থাকা ডিভাইসগুলি দেখা যায়। কোনও ডিভাইস আরও বড় করে দেখলে সেটির স্টার্টার ও কমান্ড দেখা যায়।

ব্যবহারকারী যে ডিভাইস, স্টার্টার ও কমান্ড ব্যবহার করতে চান, সেগুলি বেছে নিতে পারবেন এবং অটোমেশনটি ব্যবহারকারীকে একটি অটোমেশন অ্যাসেম্বল করার মাধ্যমে গাইড করবে।

ব্যবহারকারীর সব পছন্দ ও সিদ্ধান্ত চূড়ান্ত হয়ে গেলে, অটোমেশনটি অটোমেশন তৈরি করবে এবং তার বেছে নেওয়া স্ট্রাকচারে সেটি সেভ করবে।

উচ্চ স্তরে, এই ধরনের অটোমেশনের জন্য Android-এর জন্য Structure API, Android-এর জন্য Device API এবং Discovery API ব্যবহার করে ব্যবহারকারীর হোম সম্পর্কে একাধিক ডেটা সেট সংগ্রহ করতে হবে।

সারণী ১: Home API এবং এটি যেসব তথ্য প্রদান করতে পারে
APIতথ্য
Structure API
  • কী কী স্ট্রাকচার উপলভ্য আছে
  • হোমে কী কী রুম আছে
Device API
  • বেছে নেওয়া স্ট্রাকচারে কোন কোন ডিভাইস আছে
  • সেইসব ডিভাইস কোথায় আছে (কোন রুমে)
Discovery API হল Google Home প্ল্যাটফর্মের মধ্যে থাকা একটি API যা ব্যবহারকারীর হোম স্ট্রাকচারে অটোমেশন এবং বৈশিষ্ট্য সমর্থন করে এমন ডিভাইসগুলি আবিষ্কার করতে ব্যবহৃত হয়।
  • ডিভাইসে কোন কোন ট্রেট কাজ করে
  • সেইসব ট্রেইটে কোন কোন স্টার্টার ও কমান্ড উপলভ্য আছে
  • এইসব কমান্ডের প্যারামিটারে কী কী সীমাবদ্ধতা আছে