מדריך ל-Android DSL לפעולות אוטומציה מורכבות

אפשר להשתמש ב-Automation DSL כדי ליצור פעולות אוטומטיות מורכבות יותר מאלה שמפורטות במדריך ל-DSL – פעולות אוטומטיות בסיסיות ב-Android.

רציפה עם מספר פעולות

רציפה עם מספר פעולות

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

automation {
  sequential {
    starter<_>(...)
    condition {...}
    action {...}
    action {...}
    action {...}
    }
}

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

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

אם מניחים כמה צמתים מסוג action בצומת parallel, הפעולות מתבצעות בו-זמנית.

automation {
  sequential {
    starter<_>(...)
    condition {...}
    parallel {
      action {...}
      action {...}
      action {...}
    }
  }
}

אם יש צמתים action בצומת sequential שמגיעים אחרי הצומת parallel, הם ממתינים לביצוע עד שכל הצמתים בצומת parallel יסתיימו את הביצוע.

עיכובים

אפשר להוסיף השהיות בתהליכים האוטומטיים באמצעות מילת המפתח delayFor, שמקבלת את הארגומנט java.time.Duration שמייצג את משך ההשהיה לפני המשך הביצוע. משך ההשהיה יכול להיות בין חמש שניות ל-24 שעות.

לדוגמה, כדי להפעיל ולכבות תאורה ארבע פעמים עם הפסקה של חמש שניות בין כל הפעלה וכיבוי:

sequential {
  action(light, OnOffLightDevice) { command(OnOff.toggle()) }
  delayFor(Duration.ofSeconds(5))
  action(light, OnOffLightDevice) { command(OnOff.toggle()) }
  delayFor(Duration.ofSeconds(5))
  action(light, OnOffLightDevice) { command(OnOff.toggle()) }
  delayFor(Duration.ofSeconds(5))
  action(light, OnOffLightDevice) { command(OnOff.toggle()) }
}

ביטול מודעות בתגובה לטריגר

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

כדי להחיל דיכוי טריגרים על האוטומציה, משתמשים במילות המפתח suppressFor עם הארגומנט java.time.Duration שמייצג את משך ההמתנה לפני התגובה לטריגרים הבאים. משך ההשתקה יכול להיות קצר (5 שניות) או ארוך (24 שעות).

automation {
  sequential {
    val starterNode = starter<_>(device, OccupancySensor, MotionDetection)
    suppressFor(Duration.ofMinutes(30))
    action(light, OnOffLightDevice) { command(OnOff.toggle()) }
}

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

הגדרת מאפייני מאפיין בפעולה

כדי להגדיר את הערך של מאפיין מאפיין:

  1. יוצרים צומת update בתוך צומת action, כולל המאפיין הרלוונטי כארגומנטים לצומת update:
    action(deviceReference, deviceType) {
      update(trait) {
    
      }
    }
  2. בצומת update, לכל מאפיין שרוצים לשנות, משתמשים בפונקציית mutator ומעבירים לה את הערך החדש. כדי ליצור את השם של פונקציית המוטאטור:
    1. כותבים את שם המאפיין באותיות רישיות
    2. מוסיפים את המילה set כקידומת.
    לדוגמה, כדי לעדכן מאפיין שנקרא defaultMoveRate, משתמשים בפונקציית mutator שנקראת setDefaultMoveRate.

שימו לב שאפשר להגדיר כמה פונקציות mutator באותו צומת update. דוגמה לעדכון של שני מאפיינים:

action(device, Fan) {
  update(FanControl) {
    setPercentSetting(50u)
    setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
  }
}