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
ที่แสดงระยะเวลาในการหยุดชั่วคราวก่อนที่จะดำเนินการต่อ ระยะเวลาหยุดชั่วคราวอาจสั้นเพียง 5 วินาทีหรือนานถึง 24 ชั่วโมง
ตัวอย่างเช่น หากต้องการเปิด/ปิดไฟ 4 ครั้งโดยหยุดชั่วคราว 5 วินาทีระหว่างแต่ละครั้ง ให้ทำดังนี้
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
ที่ทริกเกอร์โดยการตรวจจับการเคลื่อนไหว และหากคุณระบุระยะเวลาการระงับทริกเกอร์ไว้ 5 นาที เมื่อ starter
ทริกเกอร์ ระบบจะไม่ทริกเกอร์อีกเป็นเวลา 5 นาที ซึ่งจะช่วยป้องกันไม่ให้การทำงานอัตโนมัติทริกเกอร์ซ้ำๆ อย่างรวดเร็ว
หากต้องการใช้การระงับทริกเกอร์กับการทำงานอัตโนมัติ ให้ใช้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
ให้ใช้ฟังก์ชันตัวเปลี่ยนรูปแบบและส่งค่าใหม่ให้กับแต่ละแอตทริบิวต์ที่จะแก้ไข วิธีสร้างชื่อของฟังก์ชันตัวเปลี่ยนรูปแบบมีดังนี้- ใช้อักษรตัวพิมพ์ใหญ่สำหรับชื่อแอตทริบิวต์
- ใส่คำว่า
set
นำหน้า
defaultMoveRate
คุณจะใช้ฟังก์ชันตัวเปลี่ยนรูปแบบชื่อsetDefaultMoveRate
โปรดทราบว่าโหนด update
อาจมีฟังก์ชันตัวแปลงหลายรายการ ต่อไปนี้คือตัวอย่างการอัปเดตแอตทริบิวต์ 2 รายการ
action(device, Fan) {
update(FanControl) {
setPercentSetting(50u)
setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
}
}