Gli operatori ti consentono di verificare il valore degli attributi dei tratti rispetto a valori specifici, di confrontarli tra loro e di combinare le espressioni utilizzate nei nodi condition
.
Gli operatori vengono resi disponibili tramite le seguenti istruzioni 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
Operatori di confronto
tra
Restituisce true
quando il valore dell'espressione 1 è compreso tra quello dell'espressione 2 e quello dell'espressione 3 (inclusi). Le espressioni vengono classificate in modo diverso a seconda del loro tipo di dati. I tipi di dati semplici, come numeri e stringhe, sono classificati come in Kotlin.
Espressione 1 | Espressione 2 | Espressione 3 | Risultato |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
Esempio di DSL
val time = stateReader<_>(structure, Time)
condition() {
expression = time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
uguale a
Restituisce true
quando l'espressione 1 è uguale all'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
Esempio di DSL
washer.operationalState equals STOPPED
greaterThan
Restituisce true
quando l'espressione 1 è maggiore dell'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
Esempio di DSL
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
Restituisce true
quando l'espressione 1 è maggiore o uguale all'espressione
2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
Esempio di DSL
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
restituisce true
quando l'espressione 1 è inferiore all'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
Esempio di DSL
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
Restituisce true
quando l'espressione 1 è minore o uguale all'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
Esempio di DSL
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
Restituisce true
quando l'espressione 1 non è uguale all'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
Esempio di DSL
occupancyStateChange.occupied notEquals 0
Operatori aritmetici
Aggiungi
L'operatore di addizione ( +
).
Esempio di DSL
var totalCount = 0
...
totalCount = totalCount + 1
Sottrazione
L'operatore di sottrazione ( -
).
Esempio di DSL
var countdown = 10
...
countdown = countdown - 1
Moltiplica
L'operatore di moltiplicazione ( *
).
Esempio di DSL
val millis = seconds * 1000
Divisione
L'operatore di divisione ( /
).
Esempio di DSL
val rpm = revolutions / minutes
Operatori logici
e
Combina due espressioni in un'espressione AND logica, con un risultato pari a true
quando entrambe le espressioni sono true
.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
Esempio di DSL
((device.occupied notEquals 0) and
time.currentTime.between(time.sunriseTime, time.sunsetTime))
non
Nega il valore logico di un'espressione.
Espressione | Risultato |
---|---|
true |
false |
false |
true |
Esempio di DSL
time.currentTime not (between(time.sunriseTime, time.sunsetTime))
o
Combina due espressioni in un'espressione OR logica.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
Esempio di DSL
(time.currentTime equals LocalTime.of(10,0,0,0)) or
(time.currentTime equals LocalTime.of(22,0,0,0))