אפשר להשתמש ב-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
.
הגדרת מאפייני מאפיין בפעולה
כדי להגדיר את הערך של מאפיין מאפיין:
- יוצרים צומת
update
בתוך צומתaction
, כולל המאפיין הרלוונטי כארגומנטים לצומתupdate
:action(
deviceReference ,deviceType ) { update(trait ) { } } - בצומת
update
, לכל מאפיין שרוצים לשנות, משתמשים בפונקציית mutator ומעבירים לה את הערך החדש. כדי ליצור את השם של פונקציית המוטאטור:- כותבים את שם המאפיין באותיות רישיות
- מוסיפים את המילה
set
כקידומת.
defaultMoveRate
, משתמשים בפונקציית mutator שנקראתsetDefaultMoveRate
.
שימו לב שאפשר להגדיר כמה פונקציות mutator באותו צומת update
. דוגמה לעדכון של שני מאפיינים:
action(device, Fan) {
update(FanControl) {
setPercentSetting(50u)
setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
}
}