طراحی اتوماسیون در اندروید

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

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

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

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

پس از طراحی یک اتوماسیون، از Automation DSL برای ساخت آن استفاده کنید. اتوماسیونی که می‌سازید اساساً یک "الگو" است - هر ساختار و دستگاهی در آن، متغیرهایی هستند و با ساختار و دستگاه‌های خاص هر کاربر، زمانی که اتوماسیون را برای استفاده خود "پذیرش" می‌کنند، پر می‌شوند.

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

اتوماسیون ساده

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

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

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

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

اتوماسیون پیچیده

اپلیکیشنی را تصور کنید که اتوماسیونی می‌سازد که هنگام تشخیص حرکت، چراغ‌های چشمک‌زن را فعال می‌کند.

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

جریان اجرا:

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

اتوماسیون عمومی

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

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

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

کاربر می‌تواند دستگاه‌ها، استارترها و دستوراتی را که می‌خواهد استفاده کند انتخاب کند و اتوماسیون، کاربر را در مونتاژ یک اتوماسیون راهنمایی می‌کند.

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

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

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