Rule für Lüften Warnung basierend auf Änderung der Gruppenmitglieder
Verfasst: 11. Jan 2023 19:23
Hallo,
meine Rule für die Warnung zum Lüften (Fenstersensoren) bestand bisher aus einer Regel pro Sensor.
Das habe ich nun deutlich abgekürzt.
Jedoch habe ich ein Item um die Regel außer Kraft zu setzen.
Das war in der alten Rule wie folgt berücksichtigt:
Den Namen des Items zum Sperren ermittle ich bereits in meiner Rule. Aber das ist dann ein Stringobjekt, mit dem kann ich nicht den Wert des entsprechenden Items abrufen.
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
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