راهنمای DSL - اتوماسیون های پیچیده، راهنمای DSL - اتوماسیون های پیچیده

اتوماسیون DSL می تواند برای ایجاد اتوماسیون هایی استفاده شود که پیچیده تر از آنچه در راهنمای DSL بحث شده است - اتوماسیون های اساسی .

متوالی با اقدامات متعدد

متوالی با اقدامات متعدد

یک اتوماسیون می تواند بیش از یک کار را انجام دهد. به عنوان مثال، به جای گره 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 هستند تأثیر می‌گذارد.

صفات صفت را در یک عمل تنظیم کنید

برای تنظیم مقدار یک صفت:

  1. یک گره update در یک گره action ایجاد کنید، از جمله ویژگی مربوطه را به عنوان آرگومان برای گره update :
    action(deviceReference, deviceType) {
      update(trait) {
    
      }
    }
  2. در گره update ، برای هر ویژگی که باید اصلاح شود، از یک تابع mutator استفاده کنید و مقدار جدید را به آن ارسال کنید. برای تشکیل نام تابع mutator:
    1. نام ویژگی را با حروف بزرگ بنویسید
    2. پیشوند آن را با کلمه set قرار دهید.
    به عنوان مثال، برای به روز رسانی یک ویژگی به نام defaultMoveRate ، باید از یک تابع mutator به نام setDefaultMoveRate استفاده کنید.

توجه داشته باشید که یک گره update می تواند چندین عملکرد جهش دهنده داشته باشد. در اینجا یک مثال است که در آن دو ویژگی به روز می شوند:

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