ऑटोमेशन डीएसएल का इस्तेमाल, उन ऑटोमेशन को बनाने के लिए किया जा सकता है जो डीएसएल गाइड - Android पर बुनियादी ऑटोमेशन में बताए गए ऑटोमेशन से ज़्यादा जटिल हैं.
एक के बाद एक कई कार्रवाइयां
ऑटोमेशन की मदद से एक से ज़्यादा काम किए जा सकते हैं. उदाहरण के लिए, एक action
नोड की जगह, आपके पास कई action
नोड हो सकते हैं. ये नोड क्रम से चलते हैं:
automation {
sequential {
starter<_>(...)
condition {...}
action {...}
action {...}
action {...}
}
}
एक के बाद एक होने वाली कई कार्रवाइयां
अगर किसी parallel
नोड में एक से ज़्यादा action
नोड रखे जाते हैं, तो कार्रवाइयां एक साथ होती हैं.
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)
}
}