iOS-Referenz für DSL-Anbieter

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.

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

wird zu true ausgewertet, 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

Wird zu true ausgewertet, 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 gleich „Ausdruck 2“ ist.

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

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