DSL-Operator-Referenz

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.

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

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

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

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

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

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

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

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

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

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