डीएसएल गाइड - जटिल ऑटोमेशन

ऑटोमेशन डीएसएल का इस्तेमाल, ऐसे ऑटोमेशन बनाने के लिए किया जा सकता है जो डीएसएल गाइड - बुनियादी ऑटोमेशन में बताए गए ऑटोमेशन से ज़्यादा जटिल हों.

एक से ज़्यादा कार्रवाइयों वाला क्रम

एक से ज़्यादा कार्रवाइयों वाला क्रम

ऑटोमेशन एक से ज़्यादा काम कर सकता है. उदाहरण के लिए, एक action नोड के बजाय, आपके पास कई action नोड हो सकते हैं, जो क्रम से चलते हैं:

automation {
  sequential {
    starter<_>(...)
    condition {...}
    action {...}
    action {...}
    action {...}
    }
}

एक से ज़्यादा कार्रवाइयों के साथ क्रम से होने वाली कार्रवाइयां

एक से ज़्यादा कार्रवाइयों के साथ क्रम से होने वाली कार्रवाइयां

अगर किसी parallel नोड में एक से ज़्यादा action नोड डाले जाते हैं, तो कार्रवाइयां एक साथ शुरू होती हैं.

automation {
  sequential {
    starter<_>(...)
    condition {...}
    parallel {
      action {...}
      action {...}
      action {...}
    }
  }
}

अगर sequential नोड के बाद action नोड मौजूद हैं, तो वे तब तक एक्ज़ीक्यूट नहीं होते, जब तक 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()) }
}

ध्यान दें कि ट्रिगर को दबाने से, suppressFor से पहले के ऑटोमेशन में मौजूद सभी starters पर असर पड़ता है.

किसी कार्रवाई में ट्रैट एट्रिब्यूट सेट करना

किसी ट्रैट एट्रिब्यूट की वैल्यू सेट करने के लिए:

  1. action नोड में update नोड बनाएं. साथ ही, 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)
  }
}