iOS-Referenz für DSL-Anbieter

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.

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

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

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

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

// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)

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(50)

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

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.

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

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

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