Riferimento operatore DSL

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.

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

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

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

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

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

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

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

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

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

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