طراحی خودکارسازی در Android

قبل‌از شروع استفاده از Automation API، باید خودکارسازی‌هایتان را طراحی کنید.

پارامترهای زیر را برای هر خودکارسازی تعیین کنید:

  • شرایطی که تحت آن خودکارسازی باید به کاربر پیشنهاد شود. برای مثال، اگر کاربر به‌تازگی سه چراغ جدید به خانه‌اش اضافه کرده باشد، ممکن است به خودکارسازی خاصی که برای کنترل چراغ‌ها طراحی شده است علاقه‌مند باشد.
  • کدام نوع دستگاه‌ها برای خودکارسازی لازم است. برای مثال، اگر کاربر به‌تازگی سه چراغ جدید به خانه‌اش اضافه کرده باشد، ممکن است به خودکارسازی خاصی که برای کنترل چراغ‌ها طراحی شده است علاقه‌مند باشد. نمونه‌هایی از انواع دستگاه‌های روشنایی شامل OnOffLightDevice، ColorTemperatureLightDevice، DimmableLightDevice، یا ExtendedColorLightDevice است.
  • کدام فرمان‌ها و مشخصه‌های ویژگی برای خودکارسازی لازم است، و آیا توسط Automation API در Android پشتیبانی می‌شوند یا نه.
  • ویژگی‌هایی که باید خودکارسازی را به‌عنوان آغازگر فعال کنند. آغازگرها در مؤلفه‌های خودکارسازی در Android توضیح داده شده‌اند.
  • شرایط اضافی که تعیین می‌کند آیا خودکارسازی واقعاً باید اجرا شود یا نه، و کدام کنش‌ها باید انجام شود.
  • جریان اجرا برای خودکارسازی. آیا باید به‌صورت متوالی اجرا شود یا موازی؟ آیا به چندین مسیر منطقی نیاز دارید؟

هنگام طراحی، ممکن است مفید باشد که جریان خودکارسازی را گره به گره با منطق موردنیاز در هر مرحله نمودار کنید.

وقتی خودکارسازی را طراحی کردید، از DSL خودکارسازی برای ساختن آن استفاده کنید. خودکارسازی‌ای که می‌سازید درواقع یک «الگو» است — هر ساختار و دستگاهی که در آن وجود دارد جای‌بان است و وقتی هر کاربر خودکارسازی را برای استفاده خودش «می‌پذیرد»، با ساختار و دستگاه‌های خاص او پر می‌شود.

در زیر انواع مختلف خودکارسازی‌هایی که برنامه می‌تواند بااستفاده از Home API ایجاد کند آورده شده است. برای گزیده‌های کد مربوط به این نمونه‌ها، به صفحه ساختن خودکارسازی مراجعه کنید.

خودکارسازی ساده

فرض کنید می‌خواهید برنامه‌ای بنویسید که خودکارسازی‌ای ایجاد کند که کرکره‌ها را ساعت ۸:۰۰ صبح بالا ببرد. برای انجام این کار، برنامه به فهرستی از کرکره‌ها (دستگاه‌هایی با نوع دستگاه WindowCoveringDevice) موجود در ساختار که از خودکارسازی‌ها پشتیبانی می‌کنند نیاز دارد، که می‌تواند توسط Discovery API ارائه شود.

برای خودکارسازی‌هایی که باید در زمان خاصی اجرا شوند، باید مطمئن شوید که کاربر نشانی خیابان را برای ساختار انتخابی‌اش اختصاص داده باشد (درطول ایجاد ساختار یا در Google Home app (GHA))، درغیراین‌صورت، خودکارسازی منطقه زمانی محل اجرا را نمی‌داند. ‫Discovery API می‌تواند به شما کمک کند تعیین کنید آیا نشانی به ساختار اختصاص داده شده است یا نه.

بنابراین جریان اجرا چیزی شبیه به این خواهد بود:

  1. بااستفاده از Discovery API، فهرست دستگاه‌های WindowCoveringDevice را جمع‌آوری کنید.
  2. اگر نشانی خیابان وارد نشده است، به کاربر اطلاع دهید که باید نشانی خیابان را ارائه دهد (برای مثال، در GHA)، و اجرا را متوقف کنید.
  3. درغیراین‌صورت، خودکارسازی را تعریف کنید:
    1. خودکارسازی را ساعت ۸:۰۰ صبح شروع کن.
    2. برای هریک از کرکره‌ها، فرمان upOrOpen مشخصه WindowCovering را فراخوانی کنید.

خودکارسازی پیچیده

برنامه‌ای را تصور کنید که خودکارسازی‌ای می‌سازد که وقتی حرکتی تشخیص داده می‌شود، چراغ‌ها را به‌صورت چشمک‌زن روشن می‌کند.

یکی از اولین وظایف در پیاده‌سازی این برنامه، یافتن چراغ‌های موجود در خانه کاربر بااستفاده از Discovery API است. با این اطلاعات، برنامه‌تان اکنون می‌تواند چراغ‌های دردسترس را نمایش دهد و شاید به کاربر اجازه دهد چراغ‌هایی را که می‌خواهد چشمک بزنند انتخاب کند.

جریان اجرا:

  1. بااستفاده از Discovery API، فهرست دستگاه‌های روشنایی موجود در ساختار را جمع‌آوری کنید. این دستگاه‌ها شامل هر دستگاهی با نوع دستگاه OnOffLightDevice،‏ ColorTemperatureLightDevice،‏ DimmableLightDevice، یا ExtendedColorLightDevice می‌شود.
  2. روشی برای انتخاب چراغ‌هایی که چشمک می‌زنند ارائه دهید، شاید ازطریق پانل «تنظیمات» سفارشی.
  3. خودکارسازی را تعریف کنید:
    1. با پایش AreaPresenceState، هرگاه شخصی محل را ترک کرد یا به آن وارد شد، خودکارسازی را شروع کن.
    2. اگر presenceState نشان می‌دهد که سازه اشغال شده است، چراغ‌های انتخاب‌شده را چشمک‌زن کن.

خودکارسازی عمومی

برای نمونه‌ای از خودکارسازی پیچیده‌تر، موردی را درنظر بگیرید که کاربر را در ایجاد خودکارسازی نامحدود براساس هرکدام یا همه دستگاه‌هایی که در خانه‌اش دارد راهنمایی می‌کند.

خودکارسازی ممکن است ابتدا از کاربر بخواهد ساختاری را انتخاب کند.

سپس خودکارسازی می‌تواند همه اتاق‌های موجود در ساختار را در نمای طرح کلی گسترش‌پذیر نمایش دهد، که با گسترش دادن اتاق، دستگاه‌های موجود در آن نشان داده می‌شود. با گسترش بیشتر دستگاه، آغازگرها و فرمان‌های پشتیبانی‌شده توسط آن دستگاه فهرست می‌شود.

کاربر می‌تواند دستگاه‌ها، آغازگرها، و فرمان‌هایی را که می‌خواهد استفاده کند انتخاب کند و خودکارسازی کاربر را در فرایند ایجاد خودکارسازی راهنمایی می‌کند.

وقتی همه انتخاب‌ها و تصمیم‌های کاربر نهایی شد، خودکارسازی خودکارسازی را تولید می‌کند و آن را در ساختار انتخابی کاربر ذخیره می‌کند.

در سطح بالا، چنین خودکارسازی‌ای باید چندین مجموعه داده درباره خانه کاربر را بااستفاده از Structure API for Android،‏ Device API for Android، و Discovery API جمع‌آوری کند.

جدول ۱: Home APIs و اطلاعاتی که می‌توانند ارائه دهند
میانای برنامه‌سازی کاربردیاطلاعات
Structure API
  • چه ساختارهایی دردسترس است
  • چه اتاق‌هایی در ساختمان وجود دارد
Device API
  • چه دستگاه‌هایی در ساختار انتخاب‌شده وجود دارد
  • مکان آن دستگاه‌ها (کدام اتاق)
Discovery API
  • دستگاه‌ها از چه ویژگی‌هایی پشتیبانی می‌کنند
  • چه آغازگرها و فرمان‌هایی برای آن مشخصه‌ها دردسترس است
  • چه محدودیت‌هایی برای پارامترهای این فرمان‌ها وجود دارد