연산자를 사용하면 특정 값을 기준으로 트레잇 속성의 값을 확인하고, 서로 비교하고, 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)
}
같음
표현식 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))