অপারেটর আপনাকে নির্দিষ্ট ভ্যালুর সাথে ট্রেইট অ্যাট্রিবিউটের ভ্যালু চেক করতে,
সেগুলি একে অপরের সাথে তুলনা করতে এবং
condition নোডে ব্যবহৃত এক্সপ্রেশন একত্রিত করতে দেয়।
নিম্নলিখিত import স্টেটমেন্টের মাধ্যমে অপারেটর উপলভ্য করা হয়:
import com.google.home.automation.and
import com.google.home.automation.between
import com.google.home.automation.contains
import com.google.home.automation.equals
import com.google.home.automation.greaterThan
import com.google.home.automation.greaterThanOrEquals
import com.google.home.automation.lessThan
import com.google.home.automation.not
import com.google.home.automation.notEquals
import com.google.home.automation.or
তুলনাকারী অপারেটর
এর মধ্যে
Expression 1-এর ভ্যালু Expression
2 ও Expression 3-এর মধ্যে (দুটি ভ্যালু সহ) হলে true হিসেবে মূল্যায়ন করা হয়। এক্সপ্রেশনগুলিকে তাদের ডেটার ধরন অনুযায়ী
আলাদাভাবে র্যাঙ্ক করা হয়। সংখ্যা ও স্ট্রিংয়ের মতো সাধারণ ডেটা টাইপকে Kotlin-এর মতো একই
ভাবে র্যাঙ্ক করা হয়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | এক্সপ্রেশন ৩ | ফলাফল |
|---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
DSL উদাহরণ
val time = stateReader<_>(structure, Time)
condition() {
expression = time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
between() সহ তারিখ ব্যবহার করা
between() অপারেটর ব্যবহার করার সময়, আপনি তারিখের একটি রেঞ্জ নির্দিষ্ট করতে পারেন:
val exp2 =
time.currentDate.between(
LocalDate.of(2025, Month.OCTOBER, 1),
LocalDate.of(2025, Month.DECEMBER, 15),
)
তবে, আপনি সম্পূর্ণ তারিখের মধ্যে সীমাবদ্ধ নন। এছাড়াও, অটোমেশন DSL আপনাকে বিভিন্ন উপায়ে তারিখের রেঞ্জ প্রকাশ করতে দেয়:
- শুধুমাত্র বছর ও মাস ব্যবহার করে:
val exp2 =
time.currentDate.yearMonth.between(
YearMonth.of(2024, Month.OCTOBER),
YearMonth.of(2026, Month.JANUARY),
)
- শুধুমাত্র মাস ও দিন ব্যবহার করে:
val exp2 =
time.currentDate.monthDay.between(
MonthDay.of(Month.OCTOBER, 1),
MonthDay.of(Month.DECEMBER, 15),
)
- শুধুমাত্র মাসের দিন ব্যবহার করে:
val exp2 = time.currentDate.day.between(1, 15)
সমান
এক্সপ্রেশন ১ ও এক্সপ্রেশন ২ সমান হলে, এর মূল্যায়ন true হয়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
6 |
1 |
false |
2 |
2 |
true |
DSL উদাহরণ
washer.operationalState equals STOPPED
greaterThan
এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর থেকে বড় হলে true হিসেবে মূল্যায়ন করা হয়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
6 |
1 |
true |
1 |
6 |
false |
DSL উদাহরণ
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর থেকে বড় বা সমান হলে, true হিসেবে মূল্যায়ন করা হয়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
DSL উদাহরণ
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর থেকে ছোট হলে, মূল্যায়ন করে true পাওয়া যায়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
6 |
1 |
false |
1 |
6 |
true |
DSL উদাহরণ
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর চেয়ে ছোট বা সমান হলে true হিসেবে মূল্যায়ন করা হয়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
DSL উদাহরণ
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর সমান না হলে true হয়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
DSL উদাহরণ
occupancyStateChange.occupied notEquals 0
গাণিতিক অপারেটর
যোগ করুন
যোগ করার অপারেটর ( + )।
DSL উদাহরণ
var totalCount = 0
...
totalCount = totalCount + 1
বিয়োগ
বিয়োগ অপারেটর ( - )।
DSL উদাহরণ
var countdown = 10
...
countdown = countdown - 1
গুণ
গুণ করার অপারেটর ( * )।
DSL উদাহরণ
val millis = seconds * 1000
ভাগ
ভাগ করার অপারেটর ( / )।
DSL উদাহরণ
val rpm = revolutions / minutes
লজিক্যাল অপারেটর
এবং
লজিক্যাল AND এক্সপ্রেশনে দুটি এক্সপ্রেশনকে একত্রিত করে, দুটি এক্সপ্রেশনই true হলে
true হিসেবে মূল্যায়ন করা হয়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
DSL উদাহরণ
((device.occupied notEquals 0) and
time.currentTime.between(time.sunriseTime, time.sunsetTime))
না
এক্সপ্রেশনের লজিক্যাল ভ্যালুকে নেগেট করে।
| এক্সপ্রেশন | ফলাফল |
|---|---|
true |
false |
false |
true |
DSL উদাহরণ
time.currentTime not (between(time.sunriseTime, time.sunsetTime))
অথবা
দুটি এক্সপ্রেশনকে একটি যৌক্তিক OR এক্সপ্রেশনে একত্রিত করে।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
DSL উদাহরণ
(time.currentTime equals LocalTime.of(10,0,0,0)) or
(time.currentTime equals LocalTime.of(22,0,0,0))