Mithilfe von Operatoren können Sie den Wert von Merkmalattributen mit bestimmten Werten vergleichen, sie miteinander vergleichen und Ausdrücke in condition
-Knoten kombinieren.
Operatoren werden über die folgenden import
-Anweisungen verfügbar gemacht:
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
Vergleichsoperatoren
zwischen
Wird mit true
ausgewertet, wenn der Wert von Ausdruck 1 zwischen dem Wert von Ausdruck 2 und Ausdruck 3 liegt (einschließlich). Ausdrücke werden je nach Datentyp unterschiedlich bewertet. Einfache Datentypen wie Zahlen und Strings werden genauso wie in Kotlin eingestuft.
Ausdruck 1 | Ausdruck 2 | Ausdruck 3 | Ergebnis |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
DSL-Beispiel
val time = stateReader<_>(structure, Time)
condition() {
expression = time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
ist gleich
Wird mit true
ausgewertet, wenn Ausdruck 1 gleich Ausdruck 2 ist.
Ausdruck 1 | Ausdruck 2 | Ergebnis |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
DSL-Beispiel
washer.operationalState equals STOPPED
greaterThan
Wird mit true
ausgewertet, wenn Ausdruck 1 größer als Ausdruck 2 ist.
Ausdruck 1 | Ausdruck 2 | Ergebnis |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
DSL-Beispiel
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
Wird mit true
ausgewertet, wenn Ausdruck 1 größer oder gleich Ausdruck 2 ist.
Ausdruck 1 | Ausdruck 2 | Ergebnis |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
DSL-Beispiel
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
ergibt true
, wenn Ausdruck 1 kleiner als Ausdruck 2 ist.
Ausdruck 1 | Ausdruck 2 | Ergebnis |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
DSL-Beispiel
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
Ergibt true
, wenn Ausdruck 1 kleiner oder gleich Ausdruck 2 ist.
Ausdruck 1 | Ausdruck 2 | Ergebnis |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
DSL-Beispiel
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
Wird mit true
ausgewertet, wenn Ausdruck 1 nicht mit Ausdruck 2 übereinstimmt.
Ausdruck 1 | Ausdruck 2 | Ergebnis |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
DSL-Beispiel
occupancyStateChange.occupied notEquals 0
Arithmetische Operatoren
Hinzufügen
Der Additionsoperator ( +
).
DSL-Beispiel
var totalCount = 0
...
totalCount = totalCount + 1
Subtrahieren
Der Subtraktionsoperator ( -
).
DSL-Beispiel
var countdown = 10
...
countdown = countdown - 1
Multiplizieren
Der Multiplikationsoperator ( *
).
DSL-Beispiel
val millis = seconds * 1000
Dividieren
Der Divisionsoperator ( /
).
DSL-Beispiel
val rpm = revolutions / minutes
Logische Operatoren
und
Kombiniert zwei Ausdrücke in einem logischen AND-Ausdruck, der zu true
ausgewertet wird, wenn beide Ausdrücke true
sind.
Ausdruck 1 | Ausdruck 2 | Ergebnis |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
DSL-Beispiel
((device.occupied notEquals 0) and
time.currentTime.between(time.sunriseTime, time.sunsetTime))
nicht
Negiert den logischen Wert eines Ausdrucks.
Ausdruck | Ergebnis |
---|---|
true |
false |
false |
true |
DSL-Beispiel
time.currentTime not (between(time.sunriseTime, time.sunsetTime))
oder
Kombiniert zwei Ausdrücke zu einem logischen OR-Ausdruck.
Ausdruck 1 | Ausdruck 2 | Ergebnis |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
DSL-Beispiel
(time.currentTime equals LocalTime.of(10,0,0,0)) or
(time.currentTime equals LocalTime.of(22,0,0,0))