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

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

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

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

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

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

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

সহজ অটোমেশন

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

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

তাই এক্সিকিউশন ফ্লোটি এই ধরনের কিছু হবে:

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

জটিল অটোমেশন

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

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

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

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

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

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

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

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

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

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

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

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