ऑपरेटर की मदद से, खास वैल्यू के आधार पर ट्रेट एट्रिब्यूट की वैल्यू की जांच की जा सकती है. साथ ही, एक-दूसरे की तुलना की जा सकती है और 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 |
डीएसएल का उदाहरण
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 |
डीएसएल का उदाहरण
washer.operationalState equals STOPPED
greaterThan
जब एक्सप्रेशन 1, एक्सप्रेशन 2 से ज़्यादा होता है, तो इसका मान true
होता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
डीएसएल का उदाहरण
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
अगर एक्सप्रेशन 1, एक्सप्रेशन 2 से ज़्यादा या उसके बराबर है, तो यह फ़ंक्शन true
दिखाता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
डीएसएल का उदाहरण
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
एक्सप्रेशन 1, एक्सप्रेशन 2 से कम होने पर, true
का आकलन किया जाता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
डीएसएल का उदाहरण
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
जब एक्सप्रेशन 1, एक्सप्रेशन 2 से कम या उसके बराबर होता है, तो यह true
दिखाता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
डीएसएल का उदाहरण
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
जब एक्सप्रेशन 1, एक्सप्रेशन 2 के बराबर नहीं होता है, तो इसका आकलन true
के तौर पर किया जाता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
डीएसएल का उदाहरण
occupancyStateChange.occupied notEquals 0
अंकगणितीय ऑपरेटर
जोड़ें
जोड़ने वाला ऑपरेटर ( +
).
डीएसएल का उदाहरण
var totalCount = 0
...
totalCount = totalCount + 1
सब्सट्रैक्ट
घटाने वाला ऑपरेटर ( -
).
डीएसएल का उदाहरण
var countdown = 10
...
countdown = countdown - 1
गुणा
गुणा करने वाला ऑपरेटर ( *
).
डीएसएल का उदाहरण
val millis = seconds * 1000
विभाजन करें
भाग देने वाला ऑपरेटर ( /
).
डीएसएल का उदाहरण
val rpm = revolutions / minutes
तार्किक ऑपरेटर
और
दो एक्सप्रेशन को लॉजिकल AND एक्सप्रेशन में जोड़ता है. जब दोनों एक्सप्रेशन true
हों, तो इसका आकलन true
के तौर पर किया जाता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
डीएसएल का उदाहरण
((device.occupied notEquals 0) and
time.currentTime.between(time.sunriseTime, time.sunsetTime))
नहीं
किसी एक्सप्रेशन की लॉजिकल वैल्यू को नेगेटिव बनाता है.
एक्सप्रेशन | नतीजा |
---|---|
true |
false |
false |
true |
डीएसएल का उदाहरण
time.currentTime not (between(time.sunriseTime, time.sunsetTime))
या
दो एक्सप्रेशन को लॉजिकल OR एक्सप्रेशन में जोड़ता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
डीएसएल का उदाहरण
(time.currentTime equals LocalTime.of(10,0,0,0)) or
(time.currentTime equals LocalTime.of(22,0,0,0))