Операторы позволяют вам сверять значения атрибутов признаков с конкретными значениями, сравнивать их друг с другом и комбинировать выражения, используемые в узлах 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
, если значение выражения 1 находится между значениями выражения 2 и выражения 3 (включительно). Выражения ранжируются по-разному в зависимости от типа данных. Простые типы данных, такие как числа и строки, ранжируются так же, как и в 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)
}
равно
Возвращает значение true
, когда Выражение 1 равно Выражению 2.
Выражение 1 | Выражение 2 | Результат |
---|---|---|
6 | 1 | false |
2 | 2 | true |
Пример DSL
washer.operationalState equals STOPPED
больше, чем
Возвращает значение true
, если выражение 1 больше, чем выражение 2.
Выражение 1 | Выражение 2 | Результат |
---|---|---|
6 | 1 | true |
1 | 6 | false |
Пример DSL
( blindsPosition.currentPositionLift greaterThan 0u )
большечеморравс
Возвращает значение true
, если выражение 1 больше или равно выражению 2.
Выражение 1 | Выражение 2 | Результат |
---|---|---|
8 | 6 | true |
6 | 6 | true |
1 | 6 | false |
Пример DSL
( starterNode.measuredValue greaterThanOrEquals 50 )
меньше, чем
принимает значение true
, если выражение 1 меньше выражения 2.
Выражение 1 | Выражение 2 | Результат |
---|---|---|
6 | 1 | false |
1 | 6 | true |
Пример DSL
time.currentTime lessThan LocalTime.of(22,0,0,0)
МеньшеТханОРевалс
Возвращает значение true
, если выражение 1 меньше или равно выражению 2.
Выражение 1 | Выражение 2 | Результат |
---|---|---|
8 | 6 | false |
6 | 6 | true |
1 | 6 | true |
Пример DSL
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
Возвращает значение true
, если выражение 1 не равно выражению 2.
Выражение 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
Логические операторы
и
Объединяет два выражения в логическое выражение И, вычисляя значение 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))
или
Объединяет два выражения в логическое выражение ИЛИ.
Выражение 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))