عملگرها به شما امکان میدهند مقدار مشخصههای ویژگی را دربرابر مقادیر خاص بررسی کنید، آنها را با یکدیگر مقایسه کنید، و عبارتهای استفادهشده در گرههای 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 رتبهبندی میشوند رتبهبندی میشوند.
| بیان ۱ | حالت چهره ۲ | بیان ۳ | نتیجه |
|---|---|---|---|
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),
)
بااینحال، شما محدود به تاریخهای کامل نیستید. «زبان نشانهگذاری خودکارسازی» همچنین به شما امکان میدهد محدوده تاریخها را به روشهای مختلف بیان کنید:
- فقط بااستفاده از سال و ماه:
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
عملگرهای منطقی
و
دو عبارت را در عبارت منطقی «و» ترکیب میکند و وقتی هر دو عبارت 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))
یا
دو عبارت را در عبارت «یا» منطقی ترکیب میکند.
| بیان ۱ | حالت چهره ۲ | نتیجه |
|---|---|---|
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))