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

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

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

  • הנסיבות שבהן כדאי להציע למשתמש את האוטומציה. לדוגמה, אם המשתמש הוסיף לאחרונה שלוש מנורות חדשות לבית, יכול להיות שהוא יתעניין באוטומציה מסוימת שמותאמת לשליטה במנורות.
  • אילו סוגי מכשירים נדרשים לאוטומציה. לדוגמה, אם המשתמש הוסיף לאחרונה שלושה גופי תאורה חדשים לבית, יכול להיות שהוא יתעניין באוטומציה מסוימת שמותאמת לשליטה בתאורה. דוגמאות לסוגי מכשירים קלים: OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice או ExtendedColorLightDevice.
  • אילו מאפייני תכונות ופקודות נדרשים לאוטומציה, ואם הם נתמכים על ידי Automation API ב-Android.
  • המאפיינים שצריכים להפעיל את האוטומציה כסימנים לתחילת פעולות אוטומטיות. הסברים על Starter מופיעים במאמר רכיבי אוטומציה ב-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 נתמכים במכשירים
  • אילו התחלות ופקודות זמינות בתכונות האלה
  • אילו אילוצים קיימים לגבי הפרמטרים של הפקודות האלה