Mit Operatoren können Sie den Wert von Attributen für Merkmale mit bestimmten Werten vergleichen, sie miteinander vergleichen und Ausdrücke kombinieren, die in condition
-Knoten verwendet werden.
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 von „Ausdruck 2“ und „Ausdruck 3“ liegt (einschließlich). Ausdrücke werden je nach Datentyp unterschiedlich eingestuft. Einfache Datentypen wie Zahlen und Strings werden auf dieselbe Weise wie in Swift sortiert.
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
wird zu true
ausgewertet, 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
Wird zu true
ausgewertet, 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 gleich „Ausdruck 2“ ist.
Ausdruck 1 | Ausdruck 2 | Ergebnis |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
DSL-Beispiel
occupancySensorStarter.occupancy.notEquals(.occupied)
Arithmetische Operatoren
Infix-Operatoren wie +, -, * oder / werden für die Erstellung von Automatisierungsausdrücken in Swift nicht unterstützt. Verwenden Sie stattdessen die vom SDK bereitgestellten Operatoren wie 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 Ausdruck wird zu true
ausgewertet, 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 Wahrheitswert 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)
}