Automation DSL สามารถใช้เพื่อสร้างการทำงานอัตโนมัติที่ซับซ้อนกว่าการทำงานอัตโนมัติที่กล่าวถึงในคู่มือ DSL - การทำงานอัตโนมัติพื้นฐานใน iOS
การดำเนินการตามลำดับหลายรายการ
การทำงานอัตโนมัติสามารถทำสิ่งต่างๆ ได้มากกว่า 1 อย่าง ตัวอย่างเช่น คุณอาจมีโหนด action
หลายโหนดแทนโหนด action
เดียว ซึ่งทํางานตามลําดับดังนี้
import GoogleHomeSDK
import GoogleHomeTypes
automation (
...
) {
starter(...)
condition {...}
action {...}
action {...}
action {...}
}
การดำเนินการตามลำดับที่มีการดำเนินการหลายรายการพร้อมกัน
หากคุณวางโหนด action
หลายโหนดในโหนด parallel
ระบบจะดําเนินการพร้อมกัน
import GoogleHomeSDK
import GoogleHomeTypes
automation (
...
) {
starter(...)
condition {...}
parallel {
action {...}
action {...}
action {...}
}
}
หากมีโหนด action
ในโหนด sequential
ที่ตามหลังโหนด parallel
โหนดเหล่านี้จะรอดำเนินการจนกว่าโหนดทั้งหมดในโหนด parallel
จะดำเนินการเสร็จ
ความล่าช้า
คุณสามารถหยุดการทำงานอัตโนมัติชั่วคราวได้โดยใช้เมธอด delay(for:)
ซึ่งใช้อาร์กิวเมนต์ Duration
ที่แสดงระยะเวลาในการหยุดชั่วคราวก่อนที่จะดําเนินการต่อ ระยะเวลาหยุดชั่วคราวอาจสั้นเพียง 5 วินาทีหรือนานถึง 24 ชั่วโมง
ตัวอย่างเช่น หากต้องการเปิด/ปิดไฟ 4 ครั้งโดยเว้นระยะเวลา 5 วินาทีระหว่างการเปิด/ปิดแต่ละครั้ง ให้ทำดังนี้
typealias OnOffLightDevice = Matter.OnOffLightDeviceType
typealias OnOffTrait = Matter.OnOffTrait
sequential {
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
delay(for:.seconds(5))
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
delay(for:.seconds(5))
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
delay(for:.seconds(5))
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
}
การระงับทริกเกอร์
การระงับทริกเกอร์เป็นความสามารถที่ช่วยให้การทำงานอัตโนมัติละเว้นstarter
เป็นระยะเวลาที่ระบุหลังจากเหตุการณ์ที่ทริกเกอร์ครั้งแรก เช่น หากการทำงานอัตโนมัติมี starter
ที่ทริกเกอร์โดยการตรวจจับการเคลื่อนไหว และหากคุณระบุระยะเวลาการระงับทริกเกอร์เป็น 5 นาที เมื่อ starter
ทริกเกอร์ ระบบจะไม่ทริกเกอร์อีกเป็นเวลา 5 นาที ซึ่งจะช่วยป้องกันไม่ให้การทำงานอัตโนมัติทริกเกอร์ซ้ำๆ อย่างรวดเร็ว
หากต้องการใช้การระงับทริกเกอร์กับการทํางานอัตโนมัติ ให้ใช้คีย์เวิร์ด suppress(for:)
ร่วมกับอาร์กิวเมนต์ Duration
ซึ่งแสดงระยะเวลารอก่อนที่จะตอบสนองต่อทริกเกอร์ที่ตามมา
ระยะเวลาการระงับอาจสั้นเพียง 5 วินาทีหรือนานถึง 24 ชั่วโมง
typealias OccupancySensorDevice = Matter.OccupancySensorDeviceType
typealias OnOffLightDevice = Matter.OnOffLightDeviceType
typealias MotionDetectionTrait = Google.MotionDetectionTrait
typealias OnOffTrait = Matter.OnOffTrait
automation {
let starterNode = starter(device, OccupancySensorDevice.self, MotionDetectionTrait.self)
starterNode
suppress(for: .seconds(30 * 60) // 30 minutes
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
}
โปรดทราบว่าการระงับทริกเกอร์จะส่งผลต่อ starters
ทั้งหมดในการทำงานอัตโนมัติซึ่งอยู่ก่อน Suppression
ตั้งค่าแอตทริบิวต์ลักษณะในการดำเนินการ
วิธีตั้งค่าแอตทริบิวต์ลักษณะ
- สร้างโหนด
update
ภายในโหนดaction
โดยใส่ลักษณะที่เกี่ยวข้องเป็นอาร์กิวเมนต์ของโหนดupdate
ดังนี้action(deviceReference, deviceType) { update(trait) { } }
- ภายในโหนด
update
ให้ใช้ฟังก์ชันตัวเปลี่ยนรูปแบบและส่งค่าใหม่ให้กับแต่ละแอตทริบิวต์ที่จะแก้ไข วิธีสร้างชื่อของฟังก์ชันตัวเปลี่ยนรูปแบบมีดังนี้- ใช้อักษรตัวพิมพ์ใหญ่สำหรับชื่อแอตทริบิวต์
- ใส่คำว่า
set
นำหน้า
defaultMoveRate
คุณจะใช้ฟังก์ชันตัวเปลี่ยนรูปแบบชื่อsetDefaultMoveRate
โปรดทราบว่าโหนด update
อาจมีฟังก์ชันตัวแปลงหลายรายการ ต่อไปนี้คือตัวอย่างการอัปเดตแอตทริบิวต์ 2 รายการ
typealias FanDeviceType = Matter.FanDeviceType
typealias FanControlTrait = Matter.FanControlTrait
action(fan, FanDeviceType.self) {
update(FanControlTrait.self) {
$0.setFanMode(.on)
}
}