অপারেটর আপনাকে নির্দিষ্ট ভ্যালুর সাথে ট্রেইট অ্যাট্রিবিউটের ভ্যালু চেক করতে, একে অপরের সাথে তুলনা করতে এবং 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
তুলনাকারী অপারেটর
এর মধ্যে
এক্সপ্রেশন ১-এর ভ্যালু এক্সপ্রেশন ২ ও এক্সপ্রেশন ৩-এর (অন্তর্ভুক্ত) মধ্যে হলে, true হিসেবে মূল্যায়ন করে। ডেটার ধরনের উপর নির্ভর করে এক্সপ্রেশনকে
আলাদাভাবে র্যাঙ্ক করা হয়। Kotlin-এ যেভাবে নম্বর ও স্ট্রিংয়ের মতো সাধারণ ডেটার ধরন র্যাঙ্ক করা হয়,
এখানেও একইভাবে করা হয়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | Expression 3 | ফলাফল |
|---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
DSL example
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 example
washer.operationalState equals STOPPED
greaterThan
এক্সপ্রেশন ১ এক্সপ্রেশন ২-এর থেকে বড় হলে true হিসেবে মূল্যায়ন করে।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
6 |
1 |
true |
1 |
6 |
false |
DSL example
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর থেকে বড় বা সমান হলে true মূল্যায়ন করে।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
DSL example
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
এক্সপ্রেশন ১ এক্সপ্রেশন ২-এর থেকে কম হলে true হিসেবে মূল্যায়ন করে।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
6 |
1 |
false |
1 |
6 |
true |
DSL example
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর থেকে কম বা সমান হলে true হিসেবে মূল্যায়ন করা হয়।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
DSL example
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর সমান না হলে true হিসেবে মূল্যায়ন করে।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
DSL example
occupancyStateChange.occupied notEquals 0
পাটিগণিত অপারেটর
যোগ করুন
যোগ করার অপারেটর ( + )।
DSL example
var totalCount = 0
...
totalCount = totalCount + 1
বিয়োগ
বিয়োগ অপারেটর ( - )।
DSL example
var countdown = 10
...
countdown = countdown - 1
গুণ
গুণ করার অপারেটর ( * ).
DSL example
val millis = seconds * 1000
ভাগ
ভাগ করার অপারেটর ( / ).
DSL example
val rpm = revolutions / minutes
লজিক্যাল অপারেটর
এবং
দুটি এক্সপ্রেশনকে লজিক্যাল AND এক্সপ্রেশনে একত্রিত করে, দুটি এক্সপ্রেশনই true হলে
true হিসেবে মূল্যায়ন করে।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
DSL example
((device.occupied notEquals 0) and
time.currentTime.between(time.sunriseTime, time.sunsetTime))
সম্ভব নয়
কোনও এক্সপ্রেশনের লজিক্যাল ভ্যালু নেগেট করে।
| এক্সপ্রেশন | ফলাফল |
|---|---|
true |
false |
false |
true |
DSL example
time.currentTime not (between(time.sunriseTime, time.sunsetTime))
অথবা
দুটি এক্সপ্রেশনকে একটি লজিক্যাল OR এক্সপ্রেশনে একত্রিত করে।
| এক্সপ্রেশন ১ | এক্সপ্রেশন ২ | ফলাফল |
|---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
DSL example
(time.currentTime equals LocalTime.of(10,0,0,0)) or
(time.currentTime equals LocalTime.of(22,0,0,0))