Los operadores te permiten verificar el valor de los atributos de rasgos en función de valores específicos, compararlos entre sí y combinar las expresiones que se usan en los nodos condition
.
Los operadores están disponibles a través de las siguientes instrucciones 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
Operadores de comparación
entre
Se evalúa como true
cuando el valor de la expresión 1 está entre el de la expresión 2 y el de la expresión 3 (inclusive). Las expresiones se clasifican de manera diferente según su tipo de datos. Los tipos de datos simples, como números y cadenas, se clasifican de la misma manera que en Kotlin.
Expresión 1 | Expresión 2 | Expresión 3 | Resultado |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
Ejemplo de DSL
val time = stateReader<_>(structure, Time)
condition() {
expression = time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
es igual a
Se evalúa como true
cuando la expresión 1 es igual a la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
Ejemplo de DSL
washer.operationalState equals STOPPED
greaterThan
Se evalúa como true
cuando la expresión 1 es mayor que la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
Ejemplo de DSL
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
Se evalúa como true
cuando la expresión 1 es mayor o igual que la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
Ejemplo de DSL
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
se evalúa como true
cuando la expresión 1 es menor que la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
Ejemplo de DSL
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
Se evalúa como true
cuando la expresión 1 es menor o igual que la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
Ejemplo de DSL
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
Se evalúa como true
cuando la expresión 1 no es igual a la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
Ejemplo de DSL
occupancyStateChange.occupied notEquals 0
Operadores aritméticos
Agregar
El operador de adición ( +
).
Ejemplo de DSL
var totalCount = 0
...
totalCount = totalCount + 1
Restar
El operador de sustracción ( -
).
Ejemplo de DSL
var countdown = 10
...
countdown = countdown - 1
Multiplicar
El operador de multiplicación ( *
).
Ejemplo de DSL
val millis = seconds * 1000
Dividir
El operador de división ( /
).
Ejemplo de DSL
val rpm = revolutions / minutes
Operadores lógicos
y
Combina dos expresiones en una expresión lógica Y, que se evalúa como true
cuando ambas expresiones son true
.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
Ejemplo de DSL
((device.occupied notEquals 0) and
time.currentTime.between(time.sunriseTime, time.sunsetTime))
no
Niega el valor lógico de una expresión.
Expresión | Resultado |
---|---|
true |
false |
false |
true |
Ejemplo de DSL
time.currentTime not (between(time.sunriseTime, time.sunsetTime))
o
Combina dos expresiones en una expresión OR lógica.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
Ejemplo de DSL
(time.currentTime equals LocalTime.of(10,0,0,0)) or
(time.currentTime equals LocalTime.of(22,0,0,0))