জটিল অটোমেশনের জন্য iOS DSL গাইড

অটোমেশন ডিএসএল ব্যবহার করে এমন অটোমেশন তৈরি করা যেতে পারে যা ডিএসএল গাইড - আইওএস-এ বেসিক অটোমেশন - এ আলোচনা করা অটোমেশনের চেয়ে জটিল।

একাধিক ক্রিয়া সহ ক্রমিক

একাধিক ক্রিয়া সহ ক্রমিক

একটি অটোমেশন একাধিক কাজ করতে পারে। উদাহরণস্বরূপ, একক 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 ট্রিগার করলে, পরবর্তী পাঁচ মিনিটের জন্য এটি আর ট্রিগার হবে না। এটি অটোমেশনকে দ্রুত বারবার ট্রিগার হতে বাধা দেয়।

আপনার অটোমেশনে ট্রিগার সাপ্রেশন প্রয়োগ করতে, 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 প্রভাবিত করে।

একটি অ্যাকশনে বৈশিষ্ট্য বৈশিষ্ট্য সেট করুন

একটি trait অ্যাট্রিবিউটের মান সেট করতে:

  1. একটি action নোডের মধ্যে একটি update নোড তৈরি করুন, update নোডের আর্গুমেন্ট হিসেবে প্রাসঙ্গিক বৈশিষ্ট্য সহ:
    action(deviceReference, deviceType) {
      update(trait) {
    
      }
    }
    
  2. update নোডের মধ্যে, প্রতিটি অ্যাট্রিবিউট পরিবর্তন করার জন্য, একটি mutator ফাংশন ব্যবহার করুন এবং এটিতে নতুন মানটি পাস করুন। mutator ফাংশনের নাম তৈরি করতে:
    1. অ্যাট্রিবিউটের নাম বড় হাতের অক্ষরে লিখুন
    2. set " শব্দটির সাথে এর উপসর্গ বসাও।
    উদাহরণস্বরূপ, defaultMoveRate নামক একটি অ্যাট্রিবিউট আপডেট করতে, আপনাকে setDefaultMoveRate নামক একটি mutator ফাংশন ব্যবহার করতে হবে।

মনে রাখবেন যে একটি update নোডে একাধিক মিউটেটর ফাংশন থাকতে পারে। এখানে একটি উদাহরণ দেওয়া হল যেখানে দুটি বৈশিষ্ট্য আপডেট করা হয়েছে:

typealias FanDeviceType = Matter.FanDeviceType
typealias FanControlTrait = Matter.FanControlTrait

action(fan, FanDeviceType.self) {
  update(FanControlTrait.self) {
    $0.setFanMode(.on)
  }
}