ऑपरेटर की मदद से, किसी खास वैल्यू के मुकाबले, एट्रिब्यूट की वैल्यू की जांच की जा सकती है. साथ ही, उनकी तुलना की जा सकती है. इसके अलावा, 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
तुलना करने वाले ऑपरेटर
बीच में
जब एक्सप्रेशन 1 की वैल्यू, एक्सप्रेशन 2 और एक्सप्रेशन 3 के बीच में होती है, तो true के तौर पर नतीजा दिखाता है. एक्सप्रेशन को उनके डेटा टाइप के हिसाब से अलग-अलग रैंक किया जाता है. नंबर और स्ट्रिंग जैसे सामान्य डेटा टाइप को उसी तरह रैंक किया जाता है जैसे Kotlin में किया जाता है.
| एक्सप्रेशन 1 | एक्सप्रेशन 2 | एक्सप्रेशन 3 | नतीजा |
|---|---|---|---|
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)
बराबर
जब एक्सप्रेशन 1, एक्सप्रेशन 2 के बराबर होता है, तो true के तौर पर नतीजा दिखाता है.
| एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
|---|---|---|
6 |
1 |
false |
2 |
2 |
true |
DSL का उदाहरण
washer.operationalState equals STOPPED
greaterThan
जब एक्सप्रेशन 1, एक्सप्रेशन 2 से ज़्यादा होता है, तो true के तौर पर नतीजा दिखाता है.
| एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
|---|---|---|
6 |
1 |
true |
1 |
6 |
false |
DSL का उदाहरण
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
जब एक्सप्रेशन 1, एक्सप्रेशन 2 से ज़्यादा या इसके बराबर होता है, तो true के तौर पर नतीजा दिखाता है.
| एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
|---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
DSL का उदाहरण
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
जब एक्सप्रेशन 1, एक्सप्रेशन 2 से कम होता है, तो true के तौर पर नतीजा दिखाता है.
| एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
|---|---|---|
6 |
1 |
false |
1 |
6 |
true |
DSL का उदाहरण
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
जब एक्सप्रेशन 1, एक्सप्रेशन 2 से कम या इसके बराबर होता है, तो true के तौर पर नतीजा दिखाता है.
| एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
|---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
DSL का उदाहरण
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
जब एक्सप्रेशन 1, एक्सप्रेशन 2 के बराबर नहीं होता है, तो true के तौर पर नतीजा दिखाता है.
| एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
|---|---|---|
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 के तौर पर नतीजा दिखाता है.
| एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
|---|---|---|
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 एक्सप्रेशन में जोड़ता है.
| एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
|---|---|---|
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))