meine Rule für die Warnung zum Lüften (Fenstersensoren) bestand bisher aus einer Regel pro Sensor.
Das habe ich nun deutlich abgekürzt.
Code: Alles auswählen
rule "Fenster Status"
when
Member of Fenstersensoren changed
then
val String itemLabel = triggeringItem.label.toString
val String itemName = triggeringItem.name.toString
val String itemNameSperren = itemName.replace("Kontakt","Sperren")
var Number nCount = 0
var Timer nTimer = null
if (triggeringItem.state == "Offen") {
nCount = 0
nTimer = createTimer(now.plusMinutes(13), [|
nCount = nCount + 1
if (nCount == 1)
{
AlexaWohnzimmer_Ankuendigung.sendCommand(itemLabel + "ist seit 13 Minuten geöffnet")
logInfo(itemNameSperren)
}
if (nCount > 1)
{
AlexaWohnzimmer_Ankuendigung.sendCommand(itemLabel + "ist länger als 13 Minuten geöffnet")
}
nTimer.reschedule(now.plusMinutes(5))
])
}
else {
nTimer.cancel
nTimer = null
}
end
Das war in der alten Rule wie folgt berücksichtigt:
Code: Alles auswählen
rule "Wohnzimmer-Fenster Status"
when
Item MQTTSensorWohnzimmerTerrasse_Kontakt changed
then
if ( (MQTTSensorWohnzimmerTerrasse_Kontakt.state == "Offen") && (MQTTSensorWohnzimmerTerrasse_Sperren.state != ON) ) {
nCountWohnzimmerFenster = 0
nTimerWohnzimmerFenster = createTimer(now.plusMinutes(13), [|
nCountWohnzimmerFenster = nCountWohnzimmerFenster + 1
if (nCountWohnzimmerFenster == 1)
{
AlexaWohnzimmer_TTS.sendCommand("Terassentür im Wohnzimmer ist seit 13 Minuten geöffnet")
}
if (nCountWohnzimmerFenster > 1)
{
AlexaWohnzimmer_TTS.sendCommand("Terassentür im Wohnzimmer ist länger als 13 Minuten geöffnet")
}
nTimerWohnzimmerFenster.reschedule(now.plusMinutes(5))
])
}
else {
nTimerWohnzimmerFenster.cancel
nTimerWohnzimmerFenster = null
}
end
Wie kann ich also den in der Variable gespeicherten Namen des Item verwenden um für diesen Item den Wert (state) zu ermitteln?
Gruß
Robert