دليل Android DSL للعمليات المبرمَجة المعقّدة

يمكن استخدام لغة 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.

ضبط سمات السمات في إجراء

لضبط قيمة سمة سمة:

  1. أنشئ عقدة update داخل عقدة action، مع تضمين السمة ذات الصلة كوسيطة لعقدة update التالية:
    action(deviceReference, deviceType) {
      update(trait) {
    
      }
    }
  2. ضمن عقدة update، لكل سمة تريد تعديلها، استخدِم دالة مُعدِّلة وأدخِل إليها القيمة الجديدة. لإنشاء اسم دالة المُعدِّل:
    1. اكتب اسم السمة بأحرف كبيرة.
    2. أضِف البادئة set قبل القيمة.
    على سبيل المثال، لتعديل سمة باسم defaultMoveRate، عليك استخدام دالة مُعدِّلة باسم setDefaultMoveRate.

تجدر الإشارة إلى أنّه يمكن أن تتضمّن عقدة update عدة دوالّ مُعدِّلة. في ما يلي مثال على تعديل سمتَين:

action(device, Fan) {
  update(FanControl) {
    setPercentSetting(50u)
    setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
  }
}