يمكن استخدام لغة النطاق الخاصة بالأتمتة لإنشاء عمليات أتمتة أكثر تعقيدًا من تلك التي تمّت مناقشتها في دليل لغة النطاق الخاصة بالأتمتة - عمليات الأتمتة الأساسية على أجهزة iOS.
عمليات متسلسلة تتضمّن إجراءات متعدّدة
يمكن أن تنفّذ عملية الأتمتة أكثر من إجراء واحد. على سبيل المثال، بدلاً من عقدة 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
تمثّل مدة الإيقاف المؤقت قبل مواصلة التنفيذ. قد تكون مدة الإيقاف المؤقت خمس ثوانٍ أو 24 ساعة.
على سبيل المثال، لتبديل مصباح أربع مرات مع إيقاف مؤقت لمدة خمس ثوانٍ بين كل عملية تبديل:
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 يتم تشغيله من خلال ميزة كشف الحركة، وإذا حدّدت مدة إيقاف المشغِّل بخمس دقائق، فعندما يتم تشغيل starter، لن يتم تشغيله مرة أخرى خلال الدقائق الخمس التالية. يمنع ذلك عملية التشغيل الآلي من التشغيل بشكل متكرّر وسريع.
لتطبيق ميزة إيقاف المشغِّل على عملية الأتمتة، استخدِم الكلمة الرئيسية
suppress(for:)
مع وسيطة
Duration
تمثّل مدة الانتظار قبل الاستجابة للمشغّلات اللاحقة.
قد تكون مدة الإيقاف المؤقت خمس ثوانٍ أو 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 يمكن أن تتضمّن دوال معدِّلة متعدّدة. في ما يلي مثال يتم فيه تعديل سمتَين:
typealias FanDeviceType = Matter.FanDeviceType
typealias FanControlTrait = Matter.FanControlTrait
action(fan, FanDeviceType.self) {
update(FanControlTrait.self) {
$0.setFanMode(.on)
}
}