يمكن استخدام لغة DSL للتشغيل الآلي لإنشاء عمليات تشغيل آلي أكثر تعقيدًا من تلك التي تمت مناقشتها في دليل DSL: العمليات الأساسية للتشغيل الآلي على Android.
تسلسلي مع إجراءات متعددة
يمكن أن تُنفِّذ قاعدة التشغيل الآلي أكثر من إجراء واحد. على سبيل المثال، بدلاً من استخدام مثيل واحد من العقدة
action
، يمكنك استخدام عدّة عقد action
يتم تشغيلها بترتيب
تسلسلي:
automation {
sequential {
starter<_>(...)
condition {...}
action {...}
action {...}
action {...}
}
}
تسلسلي مع إجراءات متوازية متعددة
في حال وضعت عدّة عقد action
في عقدة parallel
، سيتم تنفيذ الإجراءات
بالتزامن.
automation {
sequential {
starter<_>(...)
condition {...}
parallel {
action {...}
action {...}
action {...}
}
}
}
إذا كانت هناك action
عقدة في عقدة sequential
تأتي بعد node
parallel
، تنتظر التنفيذ إلى أن تنتهي جميع العقد ضمن nodeparallel
.
التأخيرات
يمكنك إدراج فترات توقف في عمليات التشغيل الآلي باستخدام الكلمة الرئيسية
delayFor
التي تأخذ مَعلمة
java.time.Duration
تمثّل مدة التوقف المؤقت قبل مواصلة التنفيذ. يمكن أن تتراوح مدة التوقف مؤقتًا عن البث بين خمس ثوانٍ و24 ساعة.
على سبيل المثال، لتبديل مصباح أربع مرات مع التوقف لمدة خمس ثوانٍ بين كل عملية تبديل:
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
يتم تشغيله من خلال رصد الحركة،
وإذا حدّدت مدة إيقاف تشغيل المشغّل لمدة خمس دقائق، عند بدء
starter
، لن يتم تشغيله مرة أخرى خلال الدقائق الخمس التالية. ويؤدي ذلك
إلى منع تفعيل الإجراء المبرمَج بشكل متكرّر ومتكرّر.
لتطبيق ميزة "توقّف العوامل المشغِّلة" على الإجراء المبرمَج، استخدِم suppressFor
الكلمة الرئيسية مع java.time.Duration
الوسيطة التي تمثّل مدة الانتظار قبل الاستجابة للعوامل المشغِّلة اللاحقة.
يمكن أن تتراوح مدة الإخفاء بين خمس ثوانٍ و24 ساعة.
automation {
sequential {
val starterNode = starter<_>(device, OccupancySensor, MotionDetection)
suppressFor(Duration.ofMinutes(30))
action(light, OnOffLightDevice) { command(OnOff.toggle()) }
}
يُرجى العلم أنّ إخفاء المشغّل يؤثر في جميع starters
في عملية التشغيل الآلي التي preceded the suppressFor
.
ضبط سمات السمات في إجراء
لضبط قيمة سمة سمة:
- أنشئ عقدة
update
داخل عقدةaction
، مع تضمين السمة ذات الصلة كوسيطة لعقدةupdate
التالية:action(
deviceReference ,deviceType ) { update(trait ) { } } - ضمن عقدة
update
، لكل سمة تريد تعديلها، استخدِم دالة مُعدِّلة وأدخِل إليها القيمة الجديدة. لإنشاء اسم دالة المُعدِّل:- اكتب اسم السمة بأحرف كبيرة.
- أضِف البادئة
set
قبل القيمة.
defaultMoveRate
، عليك استخدام دالة مُعدِّلة باسمsetDefaultMoveRate
.
تجدر الإشارة إلى أنّه يمكن أن تتضمّن عقدة update
عدة دوالّ مُعدِّلة. في ما يلي مثال
على تعديل سمتَين:
action(device, Fan) {
update(FanControl) {
setPercentSetting(50u)
setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
}
}