Les opérateurs vous permettent de vérifier la valeur des attributs de caractéristiques par rapport à des valeurs spécifiques, de les comparer entre elles et de combiner les expressions utilisées dans les nœuds condition
.
Les opérateurs sont disponibles 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
La valeur renvoyée est true
lorsque la valeur de l'expression 1 est comprise entre celle de l'expression 2 et celle de l'expression 3 (incluses). Le classement des expressions varie 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)
}
Utiliser des dates avec between()
Lorsque vous utilisez l'opérateur between()
, vous pouvez spécifier une plage de dates :
val exp2 =
time.currentDate.between(
LocalDate.of(2025, Month.OCTOBER, 1),
LocalDate.of(2025, Month.DECEMBER, 15),
)
Toutefois, vous n'êtes pas limité aux dates complètes. Le DSL d'automatisation vous permet également d'exprimer une plage de dates de différentes manières :
- En utilisant uniquement l'année et le mois :
val exp2 =
time.currentDate.yearMonth.between(
YearMonth.of(2024, Month.OCTOBER),
YearMonth.of(2026, Month.JANUARY),
)
- En utilisant uniquement le mois et le jour :
val exp2 =
time.currentDate.monthDay.between(
MonthDay.of(Month.OCTOBER, 1),
MonthDay.of(Month.DECEMBER, 15),
)
- En utilisant uniquement le jour du mois :
val exp2 = time.currentDate.day.between(1, 15)
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
Renvoie 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
prend la valeur 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
L'opérateur d'addition ( +
).
Exemple de DSL
var totalCount = 0
...
totalCount = totalCount + 1
Soustraire
L'opérateur de soustraction ( -
).
Exemple de DSL
var countdown = 10
...
countdown = countdown - 1
Multiplier
L'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 prend la valeur 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
Inverse 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 en une expression OR logique.
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))