ऑटोमेशन डीएसएल का इस्तेमाल, ऐसे ऑटोमेशन बनाने के लिए किया जा सकता है जो डीएसएल गाइड - 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 नोड में action नोड हैं, जो parallel नोड के बाद आते हैं, तो वे तब तक एक्ज़ीक्यूट नहीं होते, जब तक 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)
}
}