Seite 2 von 2

Re: Denkfehler

Verfasst: 21. Jun 2021 19:04
von Snatsch
Passiert irgendwie auch nichts :(

Code: Alles auswählen

rule "Betriebsdruck Heizung"

when Item heatQuellen_systemPressure changed 

then
    if ((heatQuellen_systemPressure.state as Number).floatValue < 1.5) {
            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 19:10
von Snatsch
jetzt habe ich es so gemacht wie @KellerK1nd es geschrieben hat und bekomme im Log die Meldung "Validation issues found in configuration model 'Heizung_Warnung_wenig_Druck.rules', using it anyway:"

Re: Denkfehler

Verfasst: 21. Jun 2021 19:14
von peter-pan
...so jetzt bauen wir noch ein Log ein. Due hast doch einen LogViewer (frontail) oder ?

Code: Alles auswählen

rule "Betriebsdruck Heizung"

when Item heatQuellen_systemPressure changed 

then
    logInfo("Heizung", "Rule triggert ! Wert : {} ", heatQuellen_systemPressure.state )
    if ((heatQuellen_systemPressure.state as Number).floatValue < 1.5) {
            logInfo("Heizung", "Achtung in der Heizung muß Wasser aufgefüllt werden ! ")
             Meldung.postUpdate ("Achtung in der Heizung muß Wasser aufgefüllt werden !")

    }
end 
Dann muss eine Info im Log kommen, wenn sich der Status ändert, egal wie sich der Status ändert.

Re: Denkfehler

Verfasst: 21. Jun 2021 19:36
von Snatsch
;) Der Status wird sich ja jetzt nicht ändern. Sonnst müsste ich aus der Heizung ja Wasser ablassen.
Der Wert ist ja jetzt schon bei 1,3 also müsste die Rule doch gleich auslösen wenn ich sie aktiviere oder ?

Re: Denkfehler

Verfasst: 21. Jun 2021 19:38
von Snatsch
ist eventuell das when falsch ? weil es ändert sich ja nichts

Re: Denkfehler

Verfasst: 21. Jun 2021 20:15
von peter-pan
...also die Regel trigger normalerweise nur, wenn sich der Status des triggernden Items ändert, dass wird wahrscheinlich der Grund dafür sein, dass die Rule auch nicht triggert. Nun gibt es zwei Möglihkeiten, die Rule zum Triggern zu bewegen.

Ein Weg wäre ein Dummy-Switch-Item anzulegen und diese Item als zusätzlichen Trigger zu verwenden.

Die zweite Möglichkeit ist in der MainUI unter "Einstellungen -> Rules" nach der Regel "Betriebsdruck Heizung" zu schauen. Die klickst du an und siehst dann unten links den Button "Run Now (Ctrl-R). Auf den klickst du, dann sollte deine Rule auch anlaufen.

Hier nochmal die Regel:

Code: Alles auswählen

rule "Betriebsdruck Heizung"

when 
     Item heatQuellen_systemPressure changed 

then
    logInfo("Heizung", "Rule triggert ! Wert : {} ", heatQuellen_systemPressure.state )
    
    if(!(heatQuellen_systemPressure.state instanceof Number)) {
       logWarn("Betriebsdruck.Heizung", "liefert keinen gültigen Zahlenwert")
       return;
    }
    if((heatQuellen_systemPressure.state as Number).floatValue < 1.5) {
       logInfo("Heizung", "Achtung in der Heizung muß Wasser aufgefüllt werden ! ")
       Meldung.postUpdate ("Achtung in der Heizung muß Wasser aufgefüllt werden !")

    }
end 
Ich habe die erste If-Anweisung nochmal in geschweifte Klammern gesetzt.

Re: Denkfehler

Verfasst: 21. Jun 2021 20:49
von Snatsch
ja die Rule wird getriggert. Im Log steht
2021-06-21 20:45:47.249 [INFO ] [rg.openhab.core.model.script.Heizung] - Rule triggert ! Wert : 1.2
2021-06-21 20:45:47.259 [INFO ] [rg.openhab.core.model.script.Heizung] - Achtung in der Heizung muß Wasser aufgefüllt werden !

vielen Dank für euere Hilfe, denn ohne die wäre ich aufgeschmissen :)

Re: Denkfehler

Verfasst: 21. Jun 2021 20:59
von peter-pan
👍. freut mich, dass es jetzt klappt. Die "logInfos" kannst du ja rausschmeissen, wenn du merkst, dass die Rule richtig triggert und sie dich stören.

Re: Denkfehler

Verfasst: 21. Jun 2021 21:14
von Snatsch
stört mich nicht :P denn so oft sollte die Rule eigentlich nicht getriggert werden ;)
oder ich habe ein Loch in der Heizung :o