automations Struct הוא הליבה של סקריפט אוטומציה. כאן מציינים את אופן הפעולה של האוטומציה, כולל תנאים, פעולות וטריגרים.
הפעולות האלה נקראות גם כלל אוטומטי.
automations Struct מכיל כלל אוטומציה אחד או יותר, וכל כלל תמיד מכיל קבוצה של התחלות ופעולות. כלל יכול להכיל תנאים, שהם מסננים נוספים שצריכים להתקיים כדי שהסקריפט יופעל.
| Key | סוג | תיאור |
|---|---|---|
|
|
אופציונלי שם האוטומציה. המידע הזה לא גלוי למשתמשים, הוא מיועד רק למפתחים. |
|
|
|
[Starter] |
חובה רשימת התחלות. |
|
|
אופציונלי תנאי |
|
|
|
[Action] |
חובה רשימת פעולות |
דוגמאות
בהמשך מופיעות שתי דוגמאות להצגת מבני נתונים מסוג automations Structs.
בדוגמה הראשונה, האוטומציה מופעלת כשמפעילים את TV שנקרא "הטלוויזיה שלי".
אחרי ההפעלה, הפעולות הבאות מתבצעות:
שני מכשירי LIGHT, בשמות Light A ו-Light B, מופעלים ומוגדרים לרמת בהירות 50.
automations:
- name: Dim the lights
starters:
- type: device.state.OnOff
device: My TV - Living Room
state: on
is: true
actions:
- type: device.command.OnOff
devices:
- Light A - Living Room
- Light B - Living Room
on: true
- type: device.command.BrightnessAbsolute
devices:
- Light A - Living Room
- Light B - Living Room
brightness: 50
בדוגמה השנייה, אותה אוטומציה מופעלת בשעת השקיעה בכל יום שני וחמישי:
automations:
- name: Dim the lights
starters:
- type: time.schedule
at: SUNSET
weekday:
- MONDAY
- THURSDAY
state: on
is: true
actions:
- type: device.command.OnOff
devices:
- Light A - Living Room
- Light B - Living Room
on: true
- type: device.command.BrightnessAbsolute
devices:
- Light A - Living Room
- Light B - Living Room
brightness: 50
הרכב פותח
במבנה Starter מציינים את הפעולות הראשוניות שגורמות להפעלת סקריפט האוטומציה. כל automation יכול להכיל סימן לתחילת פעולה אחד או יותר, ולפחות סימן אחד לתחילת פעולה צריך להחזיר את הערך true כדי שהתנאים הבאים יוערכו.
דוגמה לtime.schedule למתחילים:
type: time.schedule
at: sunrise+30min
weekdays:
- MON
- TUE
דוגמה לטריגר לשינויים במצב המכשיר:
type: device.state.Volume
device: My TV - Living Room
state: currentVolume
greaterThan: 1
lessThan: 10
דוגמה לסימן לתחילת פעולה באירוע של מכשיר:
type: device.event.DoorbellPress
device: My doorbell - Frontdoor
דוגמה לשינויים במצב הנוכחות בבית:
type: home.state.HomePresence
state: homePresenceMode
is: HOME
תנאי
אפשר לשלב תנאים עם האופרטורים הלוגיים and, or ו-not כדי לבטא לוגיקה מורכבת יותר.
בדוגמה הבאה יש condition Struct עם תנאי time
אחד ותנאי device.state אחד. המבנה הזה מאפשר לסקריפט לפעול אם השעה היא בין השקיעה לזריחה ביום שני או ביום שלישי, או אם עוצמת הקול בטלוויזיה היא בין 1 ל-10:
type: or
conditions:
- type: time.between
before: sunrise
after: sunset
weekdays:
- MON
- TUE
- type: device.state
device: My TV - Living Room
trait: Volume
state: currentVolume
greaterThanOrEqualTo: 1
lessThanOrEqualTo: 10
דוגמה לתנאי בסיסי time שמגביל את ההרצה של סקריפט אוטומציה לסופי שבוע לפני השעה 10:00 בבוקר:
type: time.between
before: 10am
weekdays:
- SAT
- SUN
תנאי טמפרטורה של חיישן במכשיר תרמוסטט:
type: device.state.TemperatureSetting
device: My Thermostat - Living Room
state: thermostatTemperatureAmbient
greaterThan: 65F
דוגמה לתנאי home.state.HomePresence:
type: home.state.HomePresence
state: homePresenceMode
is: AWAY
פעולות
בדומה לנקודות התחלה ולתנאים, לכל פעולה יש type שמציין את סוג הפעולה.
החשובים והשימושיים ביותר הם סוגי הפקודות device.command. דוגמה לפעולה של כיבוי אורות.
type: device.command.OnOff
devices:
- Light A - Living Room
on: false
פעולה להוספת השהיה בין כמה פעולות אחרות.
type: time.delay
for: 5min