אפשר להשתמש ב-Automation DSL כדי ליצור תהליכי אוטומציה מורכבים יותר מאלה שמפורטים במדריך ל-DSL – תהליכי אוטומציה בסיסיים.
רציפה עם כמה פעולות
פעולה אוטומטית יכולה לבצע יותר מפעולה אחת. לדוגמה, במקום הצומת היחיד 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
שמייצג את משך ההמתנה לפני התגובה לטריגרים הבאים.
משך ההסתרה יכול להיות קצר כחמש שניות או ארוך כ-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)
}
}