ऑटोमेशन डीएसएल का इस्तेमाल, डीएसएल गाइड - Android पर बुनियादी ऑटोमेशन में बताए गए ऑटोमेशन से ज़्यादा जटिल ऑटोमेशन बनाने के लिए किया जा सकता है.
एक के बाद एक कई कार्रवाइयां
ऑटोमेशन की मदद से एक से ज़्यादा काम किए जा सकते हैं. उदाहरण के लिए, एक action
नोड की जगह, आपके पास कई action
नोड हो सकते हैं. ये नोड क्रम से चलते हैं:
automation {
sequential {
starter<_>(...)
condition {...}
action {...}
action {...}
action {...}
}
}
एक के बाद एक होने वाली कई कार्रवाइयां
अगर किसी action
नोड में एक से ज़्यादा action
नोड रखे जाते हैं, तो कार्रवाइयां एक साथ होती हैं.parallel
automation {
sequential {
starter<_>(...)
condition {...}
parallel {
action {...}
action {...}
action {...}
}
}
}
अगर sequential
नोड में parallel
नोड के बाद आने वाले action
नोड हैं, तो वे तब तक एक्ज़ीक्यूट नहीं होते, जब तक 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
से पहले आते हैं.
एक्ज़ीक्यूशन की संख्या सीमित करें
यह तय किया जा सकता है कि किसी ऑटोमेशन को कितनी बार चलने की अनुमति है.
उदाहरण के लिए, आपको एक बार चलने वाला ऐसा ऑटोमेशन सेट अप करना हो सकता है जो दिन भर घर से बाहर रहने के दौरान वैक्यूम को चालू कर दे.
इसके लिए, ऑटोमेशन के maxExecutionCount
मेटाडेटा फ़ील्ड को सेट करें.
यहां एक ऐसे ऑटोमेशन का उदाहरण दिया गया है जिसे सिर्फ़ एक बार लागू किया जा सकता है:
automation { // The automation can only be executed once. maxExecutionCount = 1 // When the door lock state changes sequential { val doorLockEvent = starter<_>(doorLock, DoorLockDevice, LockOperationEvent) // if the door is unlocked condition() { expression = (doorLockEvent.lockOperationType equals LockOperationTypeEnum.Unlock) } // turn the light on action(light, DimmableLightDevice) { command(OnOff.on()) } } }
ऑटोमेशन के आखिरी बार लागू होने और maxExecutionCount
तक पहुंचने के बाद, उसे तुरंत मिटा दिया जाता है. ऑटोमेशन के इतिहास की एंट्री, Google Home app (GHA) गतिविधि टैब में बनी रहती है. इसमें automation_id
भी शामिल है.
किसी कार्रवाई में ट्रेट एट्रिब्यूट सेट करना
किसी ट्रेट एट्रिब्यूट की वैल्यू सेट करने के लिए:
action
नोड मेंupdate
नोड बनाएं. साथ ही,update
नोड में आर्ग्युमेंट के तौर पर, काम की विशेषता शामिल करें:action(deviceReference, deviceType) { update(trait) { } }
update
नोड में, बदलाव की जाने वाली हर एट्रिब्यूट के लिए, म्यूटेटर फ़ंक्शन का इस्तेमाल करें और उसे नई वैल्यू पास करें. म्यूटेटर फ़ंक्शन का नाम बनाने के लिए:- एट्रिब्यूट के नाम का पहला अक्षर कैपिटल करें
- इसके पहले
set
शब्द जोड़ें.
defaultMoveRate
नाम के एट्रिब्यूट को अपडेट करने के लिए, आपकोsetDefaultMoveRate
नाम के म्यूटेटर फ़ंक्शन का इस्तेमाल करना होगा.
ध्यान दें कि किसी update
नोड में एक से ज़्यादा म्यूटेटर फ़ंक्शन हो सकते हैं. यहां एक उदाहरण दिया गया है, जिसमें दो एट्रिब्यूट अपडेट किए गए हैं:
action(device, Fan) {
update(FanControl) {
setPercentSetting(50u)
setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
}
}