ऑटोमेशन डीएसएल का इस्तेमाल, ऐसे ऑटोमेशन बनाने के लिए किया जा सकता है जो डीएसएल गाइड - 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() }
}
ध्यान दें कि ट्रिगर को दबाने से, Suppression
से पहले के ऑटोमेशन में मौजूद सभी starters
पर असर पड़ता है.
किसी कार्रवाई में ट्रैट एट्रिब्यूट सेट करना
किसी ट्रैट एट्रिब्यूट की वैल्यू सेट करने के लिए:
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)
}
}