دليل DSL - عمليات التشغيل الآلي المعقدة

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

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

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

  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)
  }
}