অটোমেশন ডিএসএল অটোমেশন তৈরি করতে ব্যবহার করা যেতে পারে যা ডিএসএল গাইড-এ আলোচিত অটোমেশনগুলির তুলনায় আরও জটিল - অ্যান্ড্রয়েডে মৌলিক অটোমেশন ।
একাধিক ক্রিয়া সহ অনুক্রমিক
একটি অটোমেশন একাধিক জিনিস করতে পারে। উদাহরণস্বরূপ, একক action
নোডের জায়গায়, আপনার একাধিক action
নোড থাকতে পারে, যা ক্রমানুসারে চলে:
automation {
sequential {
starter<_>(...)
condition {...}
action {...}
action {...}
action {...}
}
}
একাধিক সমান্তরাল ক্রিয়া সহ ক্রমিক
আপনি যদি একটি parallel
নোডে একাধিক action
নোড রাখেন, তাহলে অ্যাকশনগুলি একযোগে কার্যকর হয়।
automation {
sequential {
starter<_>(...)
condition {...}
parallel {
action {...}
action {...}
action {...}
}
}
}
যদি parallel
নোডের পরে আসা sequential
নোডে 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
ট্রিগার হলে, পরবর্তী পাঁচ মিনিটের জন্য এটি আবার ট্রিগার হবে না। এটি অটোমেশনকে দ্রুত ট্রিগার হতে বাধা দেয়।
আপনার অটোমেশনে ট্রিগার দমন প্রয়োগ করতে, একটি java.time.Duration
আর্গুমেন্ট সহ suppressFor
কীওয়ার্ড ব্যবহার করুন যা পরবর্তী ট্রিগারগুলিতে প্রতিক্রিয়া জানানোর আগে কতক্ষণ অপেক্ষা করতে হবে তা উপস্থাপন করে। দমনের সময়কাল পাঁচ সেকেন্ডের মতো বা 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
পৌঁছে গেলে অবিলম্বে মুছে ফেলা হয়। অটোমেশনের ইতিহাসের এন্ট্রি automation_id
সহ Google Home app (GHA) অ্যাক্টিভিটি ট্যাবে থেকে যায়।
একটি কর্মে বৈশিষ্ট্য বৈশিষ্ট্য সেট করুন
একটি বৈশিষ্ট্য বৈশিষ্ট্যের মান সেট করতে:
-
update
নোডের আর্গুমেন্ট হিসাবে প্রাসঙ্গিক বৈশিষ্ট্য সহ একটিaction
নোডের মধ্যে একটিupdate
নোড তৈরি করুন:action(deviceReference, deviceType) { update(trait) { } }
update
নোডের মধ্যে, প্রতিটি বৈশিষ্ট্য পরিবর্তন করার জন্য, একটি মিউটেটর ফাংশন ব্যবহার করুন এবং এটিকে নতুন মান দিন। মিউটেটর ফাংশনের নাম গঠন করতে:- অ্যাট্রিবিউটের নাম ক্যাপিটাল করুন
- শব্দ
set
সাথে এটি উপসর্গ করুন।
defaultMoveRate
নামক একটি বৈশিষ্ট্য আপডেট করতে, আপনিsetDefaultMoveRate
নামক একটি মিউটেটর ফাংশন ব্যবহার করবেন।
নোট করুন যে একটি update
নোডে একাধিক মিউটেটর ফাংশন থাকতে পারে। এখানে একটি উদাহরণ যেখানে দুটি বৈশিষ্ট্য আপডেট করা হয়েছে:
action(device, Fan) {
update(FanControl) {
setPercentSetting(50u)
setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
}
}