Referencia del operador DSL

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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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))