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

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

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

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

একটি অটোমেশন একাধিক জিনিস করতে পারে। উদাহরণস্বরূপ, একক 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) অ্যাক্টিভিটি ট্যাবে থেকে যায়।

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

একটি বৈশিষ্ট্য বৈশিষ্ট্যের মান সেট করতে:

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

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

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