يمكن استخدام لغة النطاق الخاصة بالأتمتة لإنشاء عمليات أتمتة أكثر تعقيدًا من تلك التي تمّت مناقشتها في دليل لغة النطاق الخاصة بالأتمتة - عمليات الأتمتة الأساسية على أجهزة 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)
}
}