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.