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