জটিল অটোমেশনের জন্য অ্যান্ড্রয়েড ডিএসএল গাইড

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

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

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

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

আপনার অটোমেশনে ট্রিগার সাপ্রেশন প্রয়োগ করতে, suppressFor কীওয়ার্ডটি ব্যবহার করুন যার সাথে java.time.Duration আর্গুমেন্টটি পরবর্তী ট্রিগারগুলিতে সাড়া দেওয়ার আগে কতক্ষণ অপেক্ষা করতে হবে তা উপস্থাপন করে। সাপ্রেশন সময়কাল পাঁচ সেকেন্ডের মতো কম বা 24 ঘন্টা পর্যন্ত দীর্ঘ হতে পারে।

automation {
  sequential {
    val starterNode = starter<_>(device, OccupancySensor, MotionDetection)
    suppressFor(Duration.ofMinutes(30))
    action(light, OnOffLightDevice) { command(OnOff.toggle()) }
}

মনে রাখবেন যে ট্রিগার সাপ্রেশন suppressFor এর পূর্ববর্তী অটোমেশনের সমস্ত starters প্রভাবিত করে।

মৃত্যুদণ্ডের সংখ্যা সীমিত করুন

একটি অটোমেশন কতবার চালানোর অনুমতি দেওয়া হবে তা আপনি সীমিত করতে পারেন।

উদাহরণস্বরূপ, আপনি হয়তো এমন একটি এককালীন অটোমেশন সেট আপ করতে চাইতে পারেন যা দিনের বেলায় বাড়ির বাইরে থাকাকালীন ভ্যাকুয়ামটি চালায়।

এটি করার জন্য, অটোমেশনের 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) অ্যাক্টিভিটি ট্যাবে থাকে।

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

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

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

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

action(device, Fan) {
  update(FanControl) {
    setPercentSetting(50u)
    setRockSetting(FanControlCluster.RockBitmap.rockUpDown)
  }
}