ich wollte versuchen die Anzahl meiner verwendeten Regeln zu optimieren.
Beispielsweise habe ich diverse Bewegungsmelder im Einsatz, welche mir auch einen Temperaturwert liefern. Für diese habe ich bisher jeweils eine
separate Regel geschrieben welche mir eine Meldung per Telegram schicken, wenn ein bestimmter Schwellenwert unterschritten wird.
Alle diese Bewegungsmelder sind in der Gruppe gTemperatur
Ich habe folgende Items:
Code: Alles auswählen
Number:Temperature LowerHallSensorTemperature "Temperatur Flur unten 1 [%.1f °C]" <temperature> (gTemperatur) {channel="hue:0302:1:tsFlurUnten1:temperature"}
Number:Temperature LowerHallSensorTemperature2 "Temperatur Flur unten 2 [%.1f °C]" <temperature> (gTemperatur) {channel="hue:0302:1:tsFlurUnten2:temperature"}
Number:Temperature UpperHallSensorTemperature "Temperatur Flur oben [%.1f °C]" <temperature> (gTemperatur) {channel="hue:0302:1:tsFlurOben:temperature"}
Switch hs_LowLowerHallSensorTemperature
Switch hs_HighLowerHallSensorTemperature
Switch hs_LowLowerHallSensorTemperature2
Switch hs_HighLowerHallSensorTemperature2
Switch hs_LowUpperHallSensorTemperature
Switch hs_HighUpperHallSensorTemperature
Code: Alles auswählen
val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
rule "Temperatur Bewegungsmelder zu niedrig"
when
Member of gTemperatur changed
then
var Schwellenwert = 15|°C
if((triggeringItem.state < Schwellenwert) && ("hs_Low"+triggeringItem.state != ON)){
val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
telegramAction.sendTelegram(triggeringItem.name.toString + " zu niedrig")
//"hs_Low"+triggeringItem.sendCommand("ON")
//"hs_High"+triggeringItem.sendCommand("OFF")
sendCommand("hs_Low"+triggeringItem, "ON")
sendCommand("hs_High"+triggeringItem, "OFF")
logInfo("Temperatur", triggeringItem.name.toString + " zu niedrig")
}
end
wenn einer der Schwellenwerte unterschritten wurde (weil der Entsprechende Bewegungsmelder alle 5 Minuten aktualisiert).
Dafür waren die mit hs_Low... bzw. hs_High... beginnenden Hilfsswitches gedacht. Diese habe ich absichtlich so benannt, dass ich
an das eigentliche Bewegungsmelder Item lediglich diese Präfixe angehangen habe.
Wenn jetzt z.B. der Schwellenwert vom Item LowerHallSensorTemperature unterschritten wird, soll der Hilfsswitch
hs_LowLowerHallSensorTemperature auf ON gehen und mir damit weitere Meldungen unterdrücken.
Mit meinen Einzelregeln hat das auch perfekt funktioniert. In meiner neuen Regel versuche ich mir quasi das Item
hs_LowLowerHallSensorTemperature zusammenzubauen, damit die Regel allgemeingültig funktioniert. Siehe if-Teil der Regel.
Offensichtlich geht das im if-Teil nicht.
Weiter unten baue ich mir das Item hs_LowLowerHallSensorTemperature für den sendCommand() Befehl nach gleichem Schema auf
und es funktioniert. Das entsprechende Item wechselt zu ON wenn der Schwellenwert unterschritten wird.
Warum geht das also im if-Teil nicht? Vielleicht gibts ja auch noch eine bessere Lösung das gewünschte Verhalten zu realisieren. Also
die wiederholten Meldungen zu unterdrücken.
PS:
Ich hätte natürlich dann noch eine Zweite Regel die mir beim überschreiten des Schwellenwertes eine Meldung schickt, dass die
Temperatur wieder ok ist. Welche dann jeweils das Item mit dem Präfix hs_High... auf ON setzen würde.
Ich hoffe das war jetzt nicht zu umständlich beschrieben und man kann verstehen was ich meine.
In diesem Sinne, besten Dank schon mal fürs Durchhalten bis hier hin und für eventuelle Lösungsansätze.