ऑटोमेशन डीएसएल का इस्तेमाल, ऐसे ऑटोमेशन बनाने के लिए किया जा सकता है जो डीएसएल गाइड - बुनियादी ऑटोमेशन में बताए गए ऑटोमेशन से ज़्यादा जटिल हों.
एक से ज़्यादा कार्रवाइयों वाला क्रम
ऑटोमेशन एक से ज़्यादा काम कर सकता है. उदाहरण के लिए, एक 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
पर असर पड़ता है.
किसी कार्रवाई में ट्रैट एट्रिब्यूट सेट करना
किसी ट्रैट एट्रिब्यूट की वैल्यू सेट करने के लिए:
action
नोड मेंupdate
नोड बनाएं. साथ ही,update
नोड के लिए, ज़रूरी ट्रैट को आर्ग्युमेंट के तौर पर शामिल करें:action(deviceReference, deviceType) { update(trait) { } }
update
नोड में, बदलाव किए जाने वाले हर एट्रिब्यूट के लिए, म्यूटेट करने वाले फ़ंक्शन का इस्तेमाल करें और उसे नई वैल्यू पास करें. म्यूटेटर फ़ंक्शन का नाम बनाने के लिए:- एट्रिब्यूट के नाम को कैपिटल लेटर में लिखें
- इसके आगे
set
शब्द जोड़ें.
defaultMoveRate
नाम के एट्रिब्यूट को अपडेट करने के लिए, आपकोsetDefaultMoveRate
नाम के म्यूटेटर फ़ंक्शन का इस्तेमाल करना होगा.
ध्यान दें कि update
नोड में कई म्यूटेटर फ़ंक्शन हो सकते हैं. यहां एक उदाहरण दिया गया है, जिसमें दो एट्रिब्यूट अपडेट किए गए हैं:
action(device, Fan) {
update(FanControl) {
setPercentSetting(50u)
setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
}
}