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

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

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

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

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

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

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

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

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

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

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

  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 نشان می‌دهد که ساختار اشغال شده است، چراغ‌های انتخاب‌شده را چشمک بزنید.

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

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

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

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

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

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

در سطح بالا، چنین خودکارسازی‌ای باید چندین مجموعه داده درباره خانه کاربر بااستفاده از میانای برنامه‌سازی کاربردی ساختار برای Android، میانای برنامه‌سازی کاربردی دستگاه برای Android، و «میانای برنامه‌سازی کاربردی اکتشاف» جمع‌آوری کند.

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