Mithilfe von Operatoren können Sie den Wert von Merkmalattributen mit bestimmten Werten vergleichen, sie miteinander vergleichen und in condition
-Knoten verwendete Ausdrücke kombinieren.
Operatoren werden über die folgenden import
-Anweisungen verfügbar gemacht:
import GoogleHomeSDK
Vergleichsoperatoren
zwischen
Wird zu 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 Swift eingestuft.
Ausdruck 1 | Ausdruck 2 | Ausdruck 3 | Ergebnis |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
DSL-Beispiel
let time = stateReader(structure, Google.TimeTrait)
condition {
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
lightOnOffState.onOff.equals(true)
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
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
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
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
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(50)
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
occupancySensorStarter.occupancy.notEquals(.occupied)
Arithmetische Operatoren
Infixoperatoren wie +, -, * oder / werden für Automatisierungsausdrücke in Swift nicht unterstützt. Verwenden Sie stattdessen die vom SDK bereitgestellten Operatoren, z. B. Plus
oder Minus
.
Hinzufügen
Der Additionsoperator .plus( )
.
DSL-Beispiel
var totalCount = 0
...
totalCount = totalCount.plus(1)
Subtrahieren
Der Subtraktionsoperator .minus( )
.
DSL-Beispiel
var countdown = 10
...
countdown = countdown.minus(1)
Multiplizieren
Der Multiplikationsoperator .multiply( )
.
DSL-Beispiel
val millis = seconds.multiply(1000)
Dividieren
Der Divisionsoperator .divide( )
.
DSL-Beispiel
val rpm = revolutions.divide(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
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2)
}
nicht
Negiert den logischen Wert eines Ausdrucks.
Ausdruck | Ergebnis |
---|---|
true |
false |
false |
true |
DSL-Beispiel
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2.not())
}
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
condition {
let exp1 = doorLockState.lockState.equals(.unlocked)
let exp2 = contactSensorState.stateValue.equals(false)
exp1.or(exp2)
}