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

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

מגדירים את הפרמטרים הבאים לכל אוטומציה:

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

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

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

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

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

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

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

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

  1. באמצעות Discovery API, אוספים את רשימת המכשירים של WindowCoveringDevice.
  2. אם הכתובת לא מאוכלסת, צריך להודיע למשתמש שהוא צריך לספק כתובת (לדוגמה, ב-GHA) ולעצור את הביצוע.
  3. אחרת, מגדירים את האוטומציה:
    1. הפעולה האוטומטית תתחיל בשעה 8:00.
    2. לכל אחד מהתריסים, מפעילים את הפקודה upOrOpen של התכונה WindowCovering.

אוטומציה מורכבת

דמיינו אפליקציה שיוצרת פעולה אוטומטית שמפעילה אורות מהבהבים כשמזוהה תנועה.

אחת המשימות הראשונות בהטמעת האפליקציה הזו היא לגלות אילו נורות זמינות בבית של המשתמש באמצעות Discovery API. בעזרת המידע הזה, האפליקציה יכולה להציג את הנורות הזמינות, ואולי לאפשר למשתמש לבחור אילו נורות הוא רוצה להבהב.

תהליך ההרצה:

  1. באמצעות Discovery API, אוספים את רשימת מכשירי התאורה שקיימים במבנה. אלה כל המכשירים מסוג OnOffLightDevice,‏ ColorTemperatureLightDevice,‏ DimmableLightDevice או ExtendedColorLightDevice.
  2. צריך לספק דרך לבחור את הנורות שמהבהבות, למשל באמצעות חלונית הגדרות בהתאמה אישית.
  3. מגדירים את האוטומציה:
    1. הפעלת האוטומציה כשמישהו עוזב את המקום או מגיע אליו, באמצעות מעקב אחרי AreaPresenceState.
    2. אם presenceState מציין שהמבנה מאוכלס, האורות שנבחרו יהבהבו.

אוטומציה כללית

דוגמה לאוטומציה מתוחכמת יותר: אוטומציה שמדריכה את המשתמש ביצירת אוטומציה פתוחה, על סמך כל המכשירים שיש לו בבית.

יכול להיות שהמשתמש יתבקש קודם לבחור מבנה.

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

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

כשהמשתמש יסיים לבחור את כל האפשרויות, האוטומציה תיווצר ותישמר במבנה שהוא בחר.

ברמה הכללית, אוטומציה כזו צריכה לאסוף כמה קבוצות של נתונים על הבית של המשתמש באמצעות Structure API ל-Android, Device API ל-Android ו-Discovery API.

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