Seite 1 von 2
Denkfehler
Verfasst: 21. Jun 2021 17:42
von Snatsch
Hallo,
habe ich einen Denkfehler ?
Meine Heizung hat zur Zeit einen Betriebsdruck von 1,3 müsste ich nicht mit dieser Rule eine Benachrichtigung bekommen ?
Code: Alles auswählen
rule "Betriebsdruck Heizung"
when Item heatQuellen_systemPressure changed
then
if (heatQuellen_systemPressure.state < 1.4)
Meldung.postUpdate ("Achtung in der Heizung muß Wasser aufgefüllt werden !")
end
Re: Denkfehler
Verfasst: 21. Jun 2021 17:47
von peter-pan
...normales Number-Item oder UoM-Item (Number:Pressure) ?
Re: Denkfehler
Verfasst: 21. Jun 2021 17:53
von Snatsch

verstehe ich nicht
Re: Denkfehler
Verfasst: 21. Jun 2021 17:58
von Snatsch
Das steht im Item
"heatQuellen_systemPressure
Aktueller Betriebsdruck
Number "
Re: Denkfehler
Verfasst: 21. Jun 2021 18:11
von peter-pan
Hier mal auf die Schnelle, die 2 Möglichkeiten. Die Item-Namen habe ich zum Testen geändert Ich vermute du hast ein UoM-Item, das ist der Item-Typ. Wie hast du denn das Item angelegt ? Über die WebUI oder in einer .items Datei ?
Code: Alles auswählen
when Item OC_WaF_Current_Pressure changed
then
// Prüfung mit Suffix/Unit für den Prüf-Vergleichswert
if (OC_WaF_Current_Pressure.state > 1007 | hPa)
logInfo("Heizung", "Achtung in der Heizung muß Wasser aufgefüllt werden ! - Suffix/Unit")
// Prüfung mit Umwandlung in Fliesskomma-Wert als Vergleich
if ((OC_WaF_Current_Pressure.state as Number).floatValue > 1007)
logInfo("Heizung", "Achtung in der Heizung muß Wasser aufgefüllt werden ! - Float")
// Meldung.postUpdate ("Achtung in der Heizung muß Wasser aufgefüllt werden !")
end
den Item-Typ kannst du hier sehen:
number.jpg
Du brauchst aber nur eine If-Anweisung. Die zweite If-Anweisung sollte die "universellere" sein.
Re: Denkfehler
Verfasst: 21. Jun 2021 18:35
von Snatsch
angelegt habe ich sie über die WebUI.Bei mir steht SystemPressure.
Re: Denkfehler
Verfasst: 21. Jun 2021 18:46
von peter-pan
...soweit ich weiss, gibt es keinen Item-Typ "SystemPressure". Vielleicht schaust du mal im Binding nach, ob da was steht. Deine Angaben sind halt etwas "spärlich"....
Re: Denkfehler
Verfasst: 21. Jun 2021 18:46
von KellerK1nd
Das sollte definitiv funktionieren, sofern "heatQuellen_systemPressure" auch ein Number Item ist.
Code: Alles auswählen
rule "Betriebsdruck Heizung"
when Item heatQuellen_systemPressure changed
then
if(!(heatQuellen_systemPressure.state instanceof Number))
logWarn("Betriebsdruck.Heizung", "liefert keinen gültigen Zahlenwert")
return;
if((heatQuellen_systemPressure.state as Number).floatValue < 1.4){
Meldung.postUpdate("Achtung in der Heizung muß Wasser aufgefüllt werden !")
}
end
Re: Denkfehler
Verfasst: 21. Jun 2021 18:49
von Snatsch
Habe sie jetzt mal so wie in deinem erstem Bsp. angelegt aber die Meldung kommt trotzdem nicht
Code: Alles auswählen
rule "Betriebsdruck Heizung"
when Item heatQuellen_systemPressure changed
then
if ((heatQuellen_systemPressure.state as Number).floatValue < 1.4)
logInfo("Heizung", "Achtung in der Heizung muß Wasser aufgefüllt werden ! ")
Meldung.postUpdate ("Achtung in der Heizung muß Wasser aufgefüllt werden !")
end
Re: Denkfehler
Verfasst: 21. Jun 2021 18:57
von peter-pan
Snatsch hat geschrieben: ↑21. Jun 2021 18:49
Habe sie jetzt mal so wie in deinem erstem Bsp. angelegt aber die Meldung kommt trotzdem nicht
Jetzt hast du eine zweizeilige If-Anweisung, dann musst du mit geschweiften Klammern arbeiten
Code: Alles auswählen
rule "Betriebsdruck Heizung"
when Item heatQuellen_systemPressure changed
then
if ((heatQuellen_systemPressure.state as Number).floatValue > 1.4) {
logInfo("Heizung", "Achtung in der Heizung muß Wasser aufgefüllt werden ! ")
Meldung.postUpdate ("Achtung in der Heizung muß Wasser aufgefüllt werden !")
}
end
Natürlich funktioniert das ganze auch nur, wenn sich tatsächlich der Druck ändert und der dann grösser (war da nicht vorher kleiner ???) als 1.4 ist.!!! Du kannst ja mal einen zusätzlichen Dummy-Switch anlegen und über diesen triggern !!!
Edit:
Die Prüfung, ob es überhaupt einen numerischen Wert gibt, wie @KellerK1nd es beschrieben hat ist natürlich noch besser.