অটোমেশন হলো বাড়ির বিভিন্ন কাজ এবং ডিভাইসের সেটিংস স্বয়ংক্রিয় করার একটি উপায়। গুগল হোম ইকোসিস্টেমে Google Home app (GHA) এর রুটিন হিসেবে এবং Google Home for web এর automation script editor মাধ্যমে অটোমেশনগুলো আগে থেকেই উপলব্ধ রয়েছে।
এখন, গুগল হোম ইকোসিস্টেমের অটোমেশনগুলো অ্যান্ড্রয়েডের জন্য হোম এপিআই (Home APIs)-এর মাধ্যমে পাওয়া যায়। এগুলোতে GHA রুটিন (GHA Routines) এবং script editor -এ ব্যবহৃত মৌলিক ধারণাগুলোই ব্যবহার করা হয়, তবে এতে এমন উন্নত বৈশিষ্ট্য ও সক্ষমতা রয়েছে যা শুধুমাত্র হোম এপিআই-এর মাধ্যমেই সম্ভব, যার মধ্যে অন্তর্ভুক্ত রয়েছে:
- হোম এপিআই-তে উপস্থাপিত Matter স্ট্যান্ডার্ড ও smart home সকল বৈশিষ্ট্য একটি ডিভাইসের জন্য ব্যবহারের সুযোগ।
- অনুক্রমিক, সমান্তরাল এবং নির্বাচিত নির্বাহ প্রবাহের জন্য সমর্থন।
অটোমেশন ডিএসএল (Automation DSL) ব্যবহার করে অটোমেশনগুলো লেখা হয়, যা কোটলিনে অটোমেশন তৈরির জন্য ডিজাইন করা একটি ডোমেইন-স্পেসিফিক ল্যাঙ্গুয়েজ।
আপনার অ্যাপে ডিভাইস ও স্ট্রাকচার অথবা অটোমেশন এপিআই-এর সাথে যে কোনো বৈশিষ্ট্য এবং প্রকার ব্যবহার করতে চাইলে, তা ইনিশিয়ালাইজেশনের সময় অবশ্যই রেজিস্টার করতে হবে। অ্যান্ড্রয়েডে হোম ইনিশিয়ালাইজ করা দেখুন।
ব্যবহারকারী সম্পূর্ণ অনুমতি প্রত্যাহার করলে নির্দেশিকা
যদি ব্যবহারকারী সম্পূর্ণ অনুমতি প্রত্যাহার করেন, তাহলে বিদ্যমান সমস্ত অটোমেশন কাজ করা বন্ধ করে দেবে। এছাড়াও, যদি ব্যবহারকারী নির্দিষ্ট ডিভাইসগুলিতে অ্যাক্সেস প্রত্যাহার করেন, তাহলে সেই ডিভাইসগুলির সাথে যুক্ত স্টার্টার, কন্ডিশন এবং অ্যাকশনগুলিও কাজ করা বন্ধ করে দেবে।
প্রতিবার অ্যাপটি চালু করার সময়, অনুমতিগুলো এখনও কার্যকর আছে কিনা তা পরীক্ষা করে দেখুন। যদি সেগুলো বাতিল করা হয়ে থাকে, তাহলে নিশ্চিত করুন যে অ্যাপ্লিকেশনে ক্যাশ করা ডেটা সহ পূর্বের সমস্ত ডেটা মুছে ফেলা হয়েছে।
যখন স্ট্রাকচার অ্যাক্সেস প্রত্যাহার করা হয়, তখন আপনার ক্লাউড ব্যাকএন্ডে একটি StructureAccessRevokedEvent পাঠানো হয়। পার্টনার ক্লাউড এবং মোবাইল অ্যাপের প্রত্যাহার প্রক্রিয়ার সম্পূর্ণ কার্যপ্রবাহের জন্য স্ট্রাকচার গ্রান্টস দেখুন।
ডেভেলপার যাত্রা
অটোমেশন এপিআই হলো একটি বৃহত্তর উন্নয়ন যাত্রার অংশ। স্ট্রাকচার এবং ডিভাইস এপিআই একীভূত করার পরে এটি আসে, যাতে কোনো ব্যবহারকারী যখন অটোমেশন ব্যবহার করতে চান, তখন তিনি তা করতে পারেন।
- ডেভেলপার তাদের অটোমেশনের পরিকল্পনা করেন এবং অটোমেশন ডিএসএল (Automation DSL) ব্যবহার করে তা সংজ্ঞায়িত করেন।
- ডেভেলপার একটি কোটলিন অ্যান্ড্রয়েড অ্যাপে অটোমেশন ডেফিনিশনটি এম্বেড করেন।
- অ্যাপটি ডিসকভারি এপিআই বা ডিভাইস এপিআই ব্যবহার করে সংগৃহীত ব্যবহারকারীর ডিভাইস সম্পর্কিত তথ্য, যেমন—বৈশিষ্ট্য, অ্যাট্রিবিউট, কমান্ড এবং ইভেন্টের ওপর ভিত্তি করে তাকে অটোমেশন উপস্থাপন করে।
- ডিসকভারি এপিআই-এর মাধ্যমে, অ্যাপটি ব্যবহারকারীর ইনপুট সহ বা ইনপুট ছাড়াই, ব্যবহারকারীর কাঠামোতে উপস্থিত ডিভাইসের ধরন এবং বৈশিষ্ট্য অনুযায়ী একটি খসড়া অটোমেশন তৈরি করতে পারে।
- ডিভাইস এপিআই ডিসকভারি এপিআই-এর মতোই বেশিরভাগ তথ্য সরবরাহ করতে পারে, কিন্তু এটি অটোমেশন ব্যবহারের জন্য অপ্টিমাইজ করা হয়নি। আরও বিস্তারিত জানতে ডিভাইস এপিআই এবং ডিসকভারি এপিআই-এর তুলনা দেখুন।
- অ্যাপটি নির্বাচিত কাঠামোর সাথে সংযুক্ত প্রকৃত অটোমেশনটি তৈরি করে।
- অটোমেশনটি এখন ব্যবহারকারীর স্ট্রাকচারে উপলব্ধ এবং স্ট্রাকচার এপিআই মেথড ব্যবহার করে এটি চালানো বা মুছে ফেলা যাবে।
ব্যবহারকারী যেকোনো সময় অটোমেশনটির নতুন ইনস্ট্যান্স তৈরি করতে পারেন, সেক্ষেত্রে তিনি একটি ভিন্ন কাঠামো অথবা, অ্যাপের লজিক অনুযায়ী, হয়তো ভিন্ন কোনো ডিভাইস সেট নির্বাচন করতে পারেন। প্রতিবার এমনটি করার ফলে, অ্যাপটি অটোমেশনটির একটি নতুন ইনস্ট্যান্স তৈরি করে।
সবচেয়ে সাধারণ পরিস্থিতিতে, আপনি আপনার ব্যবহারকারীদের একটি পূর্বনির্ধারিত অটোমেশনের পরামর্শ দিতে পারেন যা তুলনামূলকভাবে একটি সাধারণ কাজ সম্পাদন করে। বিকল্পভাবে, আপনি একটি অটোমেশনের প্রাথমিক কাঠামো উপস্থাপন করতে পারেন যা ব্যবহারকারী তার প্রয়োজন অনুযায়ী সাজিয়ে নিতে পারে। অথবা আপনি একটি উন্মুক্ত অটোমেশন এডিটর লিখতে পারেন যা ব্যবহারকারীকে অটোমেশন এপিআই-তে উপলব্ধ সমস্ত উপাদান ব্যবহার করে জটিল অটোমেশন তৈরি করার সুযোগ দেয়।
স্বয়ংক্রিয়করণের পরামর্শ
হোম এপিআইগুলো কোনো স্পেসে উপস্থিত ডিভাইসের ধরনের মতো বিষয়ের ওপর ভিত্তি করে একটি Structure জন্য অটোমেশনের পরামর্শ দিতে পারে।
অটোমেশন সাজেশনগুলো AutomationSuggestion ক্লাস দ্বারা প্রকাশ করা হয়।
Structure ইন্টারফেসের মধ্যে HasSuggestions ইন্টারফেসটি অন্তর্ভুক্ত, যা suggestions() ফাংশনটি প্রদান করে, এবং এই ফাংশনটি অটোমেশন সাজেশনের একটি সংগ্রহ রিটার্ন করে।
likeSuggestion() এবং dislikeSuggestion() মেথডগুলোকে এবং UI কন্ট্রোলের সাথে সংযুক্ত করার জন্য তৈরি করা হয়েছে, যেগুলোতে ট্যাপ করে ব্যবহারকারী মতামত জানাতে পারবেন।
তৃতীয় একটি পদ্ধতি, clearSuggestionFeedback() , ব্যবহারকারীকে কোনো প্রস্তাবিত অটোমেশনের জন্য তার মতামত প্রত্যাহার করার সুযোগ দেয়।
ব্যবহারকারীর মতামত ভবিষ্যৎ পরামর্শকে প্রভাবিত করে।
এই উদাহরণটি দেখায় কিভাবে একটি Structure জন্য উপলব্ধ অটোমেশন সাজেশনগুলো পুনরুদ্ধার করতে হয়, একটি সাজেশন আইডি বের করতে হয় এবং likeSuggestion() , clearSuggestionFeedback() , ও dislikeSuggestion() ব্যবহার করে ব্যবহারকারীর মতামত রেকর্ড করতে হয়।
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.home.Structure
import kotlinx.coroutines.launch
class AutomationSuggestionsViewModel(private val structure: Structure) : ViewModel() {
fun loadAndGiveFeedback() {
viewModelScope.launch {
// 1. Fetch suggestions from structure
val suggestions = structure.suggestions()
val firstSuggestion = suggestions.firstOrNull() ?: return@launch
// Extract string suggestion ID
val suggestionId: String = firstSuggestion.id.id
// 2. Like the suggestion (thumbs up)
val liked = structure.likeSuggestion(suggestionId)
// 3. Clear previous feedback if the user toggled it off
if (liked) {
structure.clearSuggestionFeedback(suggestionId)
}
// 4. Dislike the suggestion (thumbs down)
structure.dislikeSuggestion(suggestionId)
}
}
}
সম্পদের সীমাবদ্ধতা
হোম এপিআই-এর অটোমেশনগুলির ক্ষেত্রে নিম্নলিখিত সীমাবদ্ধতাগুলি প্রযোজ্য:
| মেট্রিক | সীমা |
|---|---|
| প্রতি কাঠামোতে অটোমেশনের সর্বোচ্চ সংখ্যা | ৬৪ |
| প্রতি অটোমেশনে নোডের সর্বোচ্চ সংখ্যা | ১২৮ |
| প্রতি অটোমেশনে এক্সপ্রেশন নোডের সর্বোচ্চ সংখ্যা | ৬৪ |
| প্রতি কাঠামোতে অটোমেশন ইনস্ট্যান্সের সর্বোচ্চ সংখ্যা | ১০২৪ |
| প্রতি স্ট্রাকচারে প্রতি ডেভেলপারের জন্য অটোমেশন ইনস্ট্যান্সের সর্বোচ্চ সংখ্যা | ৬৪ |
| প্রতিদিন প্রতি কাঠামোতে সর্বোচ্চ সংখ্যক মৃত্যুদণ্ড কার্যকর করা | ১০২৪ |
| প্রতিদিন প্রতি স্ট্রাকচারে প্রতি ডেভেলপারের সর্বোচ্চ এক্সিকিউশন সংখ্যা | ১২৮ |