Documentation de référence sur l'opérateur DSL

Les opérateurs vous permettent de vérifier la valeur des attributs de trait par rapport à des valeurs spécifiques, de les comparer les uns aux autres et de combiner les expressions utilisées dans les nœuds condition.

Les opérateurs sont mis à disposition via les instructions import suivantes:

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

Opérateurs de comparaison

entre

Renvoie true lorsque la valeur de l'expression 1 est comprise entre celle de l'expression 2 et celle de l'expression 3 (inclus). Les expressions sont classées différemment en fonction de leur type de données. Les types de données simples tels que les nombres et les chaînes sont classés de la même manière qu'en Kotlin.

Exemple
Expression 1 Expression 2 Expression 3 Résultat
6 1 3 false
2 1 3 true

Exemple de DSL

val time = stateReader<_>(structure, Time)
condition() {
  expression = time.currentTime
     .between(
      time.sunsetTime,
      time.sunriseTime)
}

est égal à

Renvoie true lorsque l'expression 1 est égale à l'expression 2.

Exemple
Expression 1 Expression 2 Résultat
6 1 false
2 2 true

Exemple de DSL

washer.operationalState equals STOPPED

greaterThan

Renvoie true lorsque l'expression 1 est supérieure à l'expression 2.

Exemple
Expression 1 Expression 2 Résultat
6 1 true
1 6 false

Exemple de DSL

( blindsPosition.currentPositionLift greaterThan 0u )

greaterThanOrEquals

Prend la valeur true lorsque l'expression 1 est supérieure ou égale à l'expression 2.

Exemple
Expression 1 Expression 2 Résultat
8 6 true
6 6 true
1 6 false

Exemple de DSL

( starterNode.measuredValue greaterThanOrEquals 50 )

lessThan

renvoie true lorsque l'expression 1 est inférieure à l'expression 2.

Exemple
Expression 1 Expression 2 Résultat
6 1 false
1 6 true

Exemple de DSL

time.currentTime lessThan LocalTime.of(22,0,0,0)

lessThanOrEquals

Renvoie true lorsque l'expression 1 est inférieure ou égale à l'expression 2.

Exemple
Expression 1 Expression 2 Résultat
8 6 false
6 6 true
1 6 true

Exemple de DSL

( starterNode.measuredValue lessThanOrEquals 25 )

notEquals

Renvoie true lorsque l'expression 1 n'est pas égale à l'expression 2.

Exemple
Expression 1 Expression 2 Résultat
6 1 true
1 6 true
2 2 false

Exemple de DSL

occupancyStateChange.occupied notEquals 0

Opérateurs arithmétiques

Ajouter

Opérateur d'addition ( +)

Exemple de DSL

var totalCount = 0
...
totalCount = totalCount + 1

Soustraire

Opérateur de soustraction ( -)

Exemple de DSL

var countdown = 10
...
countdown = countdown - 1

Multiplier

Opérateur de multiplication ( *)

Exemple de DSL

val millis = seconds * 1000

Diviser

L'opérateur de division ( /)

Exemple de DSL

val rpm = revolutions / minutes

Opérateurs logiques

et

Combine deux expressions dans une expression logique AND, qui est évaluée à true lorsque les deux expressions sont true.

Exemple
Expression 1 Expression 2 Résultat
false false false
true false false
false true false
true true true

Exemple de DSL

((device.occupied notEquals 0) and
   time.currentTime.between(time.sunriseTime, time.sunsetTime))

not

Négation de la valeur logique d'une expression.

Exemple
Expression Résultat
true false
false true

Exemple de DSL

time.currentTime not (between(time.sunriseTime, time.sunsetTime))

ou

Combine deux expressions dans une expression logique OR.

Exemple
Expression 1 Expression 2 Résultat
false false false
true false true
false true true

Exemple de DSL

(time.currentTime equals LocalTime.of(10,0,0,0)) or
  (time.currentTime equals LocalTime.of(22,0,0,0))