ऑटोमेशन डीएसएल का इस्तेमाल, ऐसे ऑटोमेशन बनाने के लिए किया जा सकता है जो डीएसएल गाइड - iOS पर बुनियादी ऑटोमेशन में बताए गए ऑटोमेशन से ज़्यादा जटिल हों.
एक के बाद एक कई कार्रवाइयां
ऑटोमेशन की मदद से एक से ज़्यादा काम किए जा सकते हैं. उदाहरण के लिए, एक action
नोड की जगह, आपके पास कई action
नोड हो सकते हैं. ये नोड क्रम से चलते हैं:
import GoogleHomeSDK
import GoogleHomeTypes
automation (
...
) {
starter(...)
condition {...}
action {...}
action {...}
action {...}
}
एक के बाद एक होने वाली कई कार्रवाइयां
अगर किसी parallel
नोड में एक से ज़्यादा action
नोड रखे जाते हैं, तो कार्रवाइयां एक साथ होती हैं.
import GoogleHomeSDK
import GoogleHomeTypes
automation (
...
) {
starter(...)
condition {...}
parallel {
action {...}
action {...}
action {...}
}
}
अगर sequential
नोड में parallel
नोड के बाद आने वाले action
नोड हैं, तो वे तब तक एक्ज़ीक्यूट नहीं होते, जब तक parallel
नोड के सभी नोड एक्ज़ीक्यूट नहीं हो जाते.
पैसे ट्रांसफ़र करने में देरी
ऑटोमेशन में कुछ देर के लिए रोकने की सुविधा का इस्तेमाल किया जा सकता है. इसके लिए, delay(for:)
तरीके का इस्तेमाल करें. यह Duration
आर्ग्युमेंट लेता है, जो यह दिखाता है कि प्रोसेस को फिर से शुरू करने से पहले कितनी देर तक रोकना है. वीडियो को पांच सेकंड से लेकर 24 घंटे तक रोका जा सकता है.
उदाहरण के लिए, किसी लाइट को चार बार टॉगल करने के लिए, हर टॉगल के बीच पांच सेकंड का समय दें:
typealias OnOffLightDevice = Matter.OnOffLightDeviceType
typealias OnOffTrait = Matter.OnOffTrait
sequential {
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
delay(for:.seconds(5))
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
delay(for:.seconds(5))
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
delay(for:.seconds(5))
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
}
ट्रिगर को दबाना
ट्रिगर को दबाने की सुविधा, ऑटोमेशन को यह अनुमति देती है कि वह शुरुआती ट्रिगर इवेंट के बाद, तय समय के लिए starter
को अनदेखा कर सके. उदाहरण के लिए, अगर ऑटोमेशन में starter
है, जो मोशन डिटेक्शन से ट्रिगर होता है और आपने ट्रिगर को बंद करने की अवधि पांच मिनट तय की है, तो starter
के ट्रिगर होने के बाद, अगले पांच मिनट तक यह फिर से ट्रिगर नहीं होगा. इससे ऑटोमेशन को बार-बार ट्रिगर होने से रोका जा सकता है.
अपने ऑटोमेशन में ट्रिगर सप्रेस करने की सुविधा लागू करने के लिए, suppress(for:)
कीवर्ड का इस्तेमाल करें. साथ ही, Duration
आर्ग्युमेंट का इस्तेमाल करके यह बताएं कि अगले ट्रिगर का जवाब देने से पहले कितनी देर तक इंतज़ार करना है.
वीडियो को छिपाने की अवधि पांच सेकंड से लेकर 24 घंटे तक हो सकती है.
typealias OccupancySensorDevice = Matter.OccupancySensorDeviceType
typealias OnOffLightDevice = Matter.OnOffLightDeviceType
typealias MotionDetectionTrait = Google.MotionDetectionTrait
typealias OnOffTrait = Matter.OnOffTrait
automation {
let starterNode = starter(device, OccupancySensorDevice.self, MotionDetectionTrait.self)
starterNode
suppress(for: .seconds(30 * 60) // 30 minutes
action(light, OnOffLightDevice.self) { OnOffTrait.toggle() }
}
ध्यान दें कि ट्रिगर को दबाने की सुविधा, ऑटोमेशन में मौजूद उन सभी starters
पर असर डालती है जो Suppression
से पहले आते हैं.
किसी कार्रवाई में ट्रेट एट्रिब्यूट सेट करना
किसी ट्रेट एट्रिब्यूट की वैल्यू सेट करने के लिए:
action
नोड मेंupdate
नोड बनाएं. साथ ही,update
नोड के लिए आर्ग्युमेंट के तौर पर, काम की विशेषता शामिल करें:action(deviceReference, deviceType) { update(trait) { } }
update
नोड में, बदलाव की जाने वाली हर एट्रिब्यूट के लिए, म्यूटेटर फ़ंक्शन का इस्तेमाल करें और उसे नई वैल्यू पास करें. म्यूटेटर फ़ंक्शन का नाम बनाने के लिए:- एट्रिब्यूट के नाम का पहला अक्षर कैपिटल करें
- इसके पहले
set
शब्द जोड़ें.
defaultMoveRate
नाम के एट्रिब्यूट को अपडेट करने के लिए, आपकोsetDefaultMoveRate
नाम के म्यूटेटर फ़ंक्शन का इस्तेमाल करना होगा.
ध्यान दें कि किसी update
नोड में एक से ज़्यादा म्यूटेटर फ़ंक्शन हो सकते हैं. यहां एक उदाहरण दिया गया है, जिसमें दो एट्रिब्यूट अपडेट किए गए हैं:
typealias FanDeviceType = Matter.FanDeviceType
typealias FanControlTrait = Matter.FanControlTrait
action(fan, FanDeviceType.self) {
update(FanControlTrait.self) {
$0.setFanMode(.on)
}
}