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