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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

جریان اجرا:

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

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

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

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

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

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

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

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

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