অটোমেশন ডিএসএল অটোমেশন তৈরি করতে ব্যবহার করা যেতে পারে যা ডিএসএল গাইডে আলোচিত- আইওএস-এ মৌলিক অটোমেশনগুলির চেয়ে জটিল।
একাধিক ক্রিয়া সহ অনুক্রমিক
একটি অটোমেশন একাধিক জিনিস করতে পারে। উদাহরণস্বরূপ, একক 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 {...}
}
}
যদি parallel
নোডের পরে আসা sequential
নোডে 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
ট্রিগার হলে, পরবর্তী পাঁচ মিনিটের জন্য এটি আবার ট্রিগার হবে না। এটি অটোমেশনকে দ্রুত ট্রিগার হতে বাধা দেয়।
আপনার অটোমেশনে ট্রিগার দমন প্রয়োগ করতে, পরবর্তী ট্রিগারগুলিতে সাড়া দেওয়ার আগে কতক্ষণ অপেক্ষা করতে হবে তা উপস্থাপন করে একটি Duration
যুক্তি সহ suppress(for:)
কীওয়ার্ড ব্যবহার করুন। দমনের সময়কাল পাঁচ সেকেন্ডের মতো বা 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
আগে থাকে।
একটি কর্মে বৈশিষ্ট্য বৈশিষ্ট্য সেট করুন
একটি বৈশিষ্ট্য বৈশিষ্ট্যের মান সেট করতে:
-
update
নোডের আর্গুমেন্ট হিসাবে প্রাসঙ্গিক বৈশিষ্ট্য সহ একটিaction
নোডের মধ্যে একটি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)
}
}