يمكن استخدام لغة Automation DSL لإنشاء عمليات مبرمَجة أكثر تعقيدًا من تلك التي تمت مناقشتها في دليل DSL: العمليات المبرمَجة الأساسية.
تسلسلي مع إجراءات متعددة
يمكن أن تُنفِّذ قاعدة التشغيل الآلي أكثر من إجراء واحد. على سبيل المثال، بدلاً من استخدام مثيل واحد من العقدة
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)
}
}