תכנון פעולה אוטומטית ב-Android

לפני שמתחילים להשתמש ב-Automation API, כדאי לתכנן את האוטומציות.

קובעים את הפרמטרים הבאים לכל אוטומציה:

  • הנסיבות שבהן כדאי להציע למשתמש את האוטומציה. לדוגמה, אם המשתמש הוסיף לאחרונה שלוש מנורות חדשות לבית, יכול להיות שהוא יתעניין באוטומציה מסוימת שמותאמת לשליטה במנורות.
  • אילו סוגי מכשירים נדרשים לאוטומציה. לדוגמה, אם משתמש הוסיף לאחרונה שלוש מנורות חדשות לבית שלו, יכול להיות שהוא יתעניין באוטומציה מסוימת שמותאמת לשליטה במנורות. דוגמאות לסוגי מכשירים קלים: OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice או ExtendedColorLightDevice.
  • אילו מאפייני תכונות ופקודות נדרשים לאוטומציה, ואם הם נתמכים על ידי Automation API ב-Android.
  • המאפיינים שאמורים להפעיל את האוטומציה כסימנים לתחילת פעולה. הסבר על רכיבי התחלה מופיע במאמר רכיבי אוטומציה ב-Android.
  • תנאים נוספים שקובעים אם הפעולה האוטומטית צריכה לפעול בפועל, ואילו פעולות צריך לבצע.
  • רצף הפעולות של האוטומציה. האם הפעולות צריכות להתבצע ברצף או במקביל? האם נדרשים לך כמה נתיבי לוגיקה?

בשלב התכנון, כדאי ליצור תרשים של תהליך האוטומציה, צומת אחר צומת, עם הלוגיקה הנדרשת בכל שלב.

אחרי שתתכננו אוטומציה, תוכלו להשתמש ב-Automation DSL כדי לבנות אותה. האוטומציה שאתם יוצרים היא בעצם 'תבנית' – כל המבנים והמכשירים שבה הם placeholders, והם מתמלאים במבנה ובמכשירים הספציפיים של כל משתמש כשהוא 'מאמץ' את האוטומציה לשימוש שלו.

אלה סוגים שונים של אוטומציות שאפליקציה יכולה ליצור באמצעות ממשקי ה-API של Home. במאמר יצירת אוטומציה מופיעים קטעי קוד שקשורים לדוגמאות האלה.

אוטומציה פשוטה

נניח שאתם צריכים לכתוב אפליקציה שיוצרת אוטומציה להרמת התריסים בשעה 8:00 בבוקר. לשם כך, האפליקציה צריכה רשימה של התריסים (מכשירים עם סוג המכשיר WindowCoveringDevice) שקיימים במבנה ותומכים באוטומציות. אפשר לקבל את הרשימה הזו באמצעות Discovery API.

בנוסף, כדי להפעיל אוטומציות בזמן מסוים, צריך לוודא שהמשתמש הקצה הקצה כתובת רחוב למבנה שבחר ב-Google Home app (GHA). אחרת, האוטומציה לא תדע מהו אזור הזמן שבו היא תפעל. ה-API של Discovery יכול לעזור לכם לקבוע אם כתובת הוקצתה למבנה.

לכן, רצף הפעולות ייראה בערך כך:

  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 for Android,‏ Device API for Android ו-Discovery API.

טבלה 1: Home APIs והמידע שהם יכולים לספק
APIמידע
Structure API
  • אילו מבנים זמינים
  • אילו חדרים יש במבנה
Device API
  • אילו מכשירים נמצאים במבנה שנבחר
  • איפה המכשירים נמצאים (באיזה חדר)
Discovery API
  • אילו סוגי traits נתמכים במכשירים
  • אילו פקודות ומשפטי פתיחה זמינים במאפיינים האלה
  • אילו אילוצים חלים על הפרמטרים של הפקודות האלה