يمكن استخدام لغة DSL الخاصة بالتشغيل الآلي لإنشاء عمليات تشغيل آلي أكثر تعقيدًا من تلك الموضّحة في دليل لغة DSL - عمليات التشغيل الآلي الأساسية على Android.
تسلسلي مع إجراءات متعددة
يمكن أن ينفّذ التشغيل الآلي أكثر من إجراء واحد. على سبيل المثال، بدلاً من عقدة action الفردية، يمكنك استخدام عقد action متعددة يتم تشغيلها بترتيب تسلسلي:
automation {
sequential {
starter<_>(...)
condition {...}
action {...}
action {...}
action {...}
}
}
تسلسلي مع إجراءات متوازية متعددة
إذا وضعت عُقد action متعددة في عقدة parallel، سيتم تنفيذ الإجراءات بشكل متزامن.
automation {
sequential {
starter<_>(...)
condition {...}
parallel {
action {...}
action {...}
action {...}
}
}
}
إذا كانت هناك عقد action في العقدة sequential تلي العقدة parallel، سيتم تأجيل تنفيذها إلى حين انتهاء تنفيذ جميع العُقد داخل العقدة parallel.
التأخيرات
يمكنك إدراج فواصل في عمليات التشغيل الآلي باستخدام الكلمة الرئيسية
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 في عملية التشغيل الآلي التي تسبق suppressFor.
وضع حدّ لعدد عمليات التنفيذ
يمكنك الحدّ من عدد المرات المسموح فيها بتشغيل عملية آلية.
على سبيل المثال، يمكنك إعداد عملية تشغيل آلي لمرة واحدة تشغّل المكنسة الكهربائية أثناء تواجدك خارج المنزل طوال اليوم.
لإجراء ذلك، اضبط حقل البيانات الوصفية maxExecutionCount في عملية التشغيل الآلي.
المثال التالي هو عملية تشغيل آلي لا يمكن تنفيذها إلا مرة واحدة:
automation { // The automation can only be executed once. maxExecutionCount = 1 // When the door lock state changes sequential { val doorLockEvent = starter<_>(doorLock, DoorLockDevice, LockOperationEvent) // if the door is unlocked condition() { expression = (doorLockEvent.lockOperationType equals LockOperationTypeEnum.Unlock) } // turn the light on action(light, DimmableLightDevice) { command(OnOff.on()) } } }
يتم حذف عملية التشغيل الآلي فور اكتمال تنفيذها لآخر مرة والوصول إلى maxExecutionCount. يبقى إدخال سجلّ التشغيل الآلي في علامة التبويب Google Home app (GHA) النشاط، بما في ذلك automation_id.
ضبط سمات السمة في إجراء
لضبط قيمة سمة السلوك، اتّبِع الخطوات التالية:
- أنشئ عقدة
updateضمن عقدةaction، بما في ذلك السمة ذات الصلة كمعلَمة لعقدةupdate:action(deviceReference, deviceType) { update(trait) { } } - ضمن العقدة
update، لكل سمة سيتم تعديلها، استخدِم دالة معدِّلة، ومرِّر إليها القيمة الجديدة. لتكوين اسم دالة المعدِّل، اتّبِع الخطوات التالية:- كتابة اسم السمة بأحرف كبيرة
- أضِف كلمة
setقبلها.
defaultMoveRate، عليك استخدام دالة معدِّلة باسمsetDefaultMoveRate.
يُرجى العِلم أنّه يمكن أن تتضمّن عقدة update عدة دوال معدِّلة. إليك مثالاً يتم فيه تعديل سمتَين:
action(device, Fan) {
update(FanControl) {
setPercentSetting(50u)
setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
}
}