Seite 3 von 6

Re: Rules

Verfasst: 4. Feb 2019 14:48
von mamoel
Z.B. so:

Code: Alles auswählen

rule "Temp_Stal_rule"

when
    Item Stall_Temp changed

then
    logInfo("bot1", "Temperaturänderung erkannt.")
    if(Stall_Temp.state instanceof QuantityType) {
        logInfo("Temperaturstatus ist vom Typ QuantityType.") //ist das nicht der Fall, wird auch nichts ausgeführt
        val Number nTemp = Stall_Temp.state as QuantityType<Number>
        val Number nTempPrev = previousState as QuantityType<Number>
        
        logInfo("bot1", "Neuer Wert: " + nTemp)
        logInfo("bot1", "Letzter Wert: " + nTempPrev)

        if(nTemp <= 0 && nTempPrev > 0) {
           logInfo("bot1", "Temperatur unter 0")
           sendTelegram("bot1", "Stall Temperatur ist nun {}",nTemp)
        }

        if(nTemp <= -5 && nTempPrev > -5) {
           logInfo("bot1", "Temperatur unter -5")
           sendTelegram("bot1", "Stall Temperatur ist nun {}",nTemp)
        }

        if(nTemp <= -10 && nTempPrev > -10) {
           logInfo("bot1", "Temperatur unter -10")
           sendTelegram("bot1", "Stall Temperatur ist nun {}",nTemp)
        }

    }
end

Re: Rules

Verfasst: 4. Feb 2019 19:38
von matze.lingen
hab ich so nun eingetragen und warte nun auf log einträge

Re: Rules

Verfasst: 4. Feb 2019 20:02
von mamoel
Es müsste zumindest für jeden Temperaturwechsel ein Eintrag geschrieben werden, nämlich "Temperaturänderung erkannt.". Das müsstest Du sofort im Logfile sehen können.

Re: Rules

Verfasst: 5. Feb 2019 00:32
von udo1toni
Du musst Log-Meldungen einbauen. Die Zeile

Code: Alles auswählen

logInfo("stallTemp","nTemp = {}, nTempPrev = {}",nTemp,nTempPrev)
gibt z.B. die beiden Variablen aus (sofern bereits definiert)
die geschweiften Klammern werden durch die Werte der Variablen ersetzt, in der Reihenfolge der Listung.
Der erste String ist Teil des Loggernamens, darüber kann man das Logging pro Loggernamen steuern - z.B. nur Fehler mit logError(), dann werden die logInfo-Zeilen ignoriert.
Es bietet sich an, eine Logzeile zu Beginn der rule (1. Zeile nach then) einzubauen, damit siehst Du, dass die Rule gestartet wurde.
Eine weitere logZeile könntest Du verwenden, um den Status von Stall_Temp auszugeben, und so weiter.

Re: Rules

Verfasst: 5. Feb 2019 10:39
von matze.lingen
Hab nun nochmal ins Log geguckt, es wird kein Log Eintrag erzeugt.

Re: Rules

Verfasst: 5. Feb 2019 10:51
von mamoel
Wenn Du die log-Ausgaben so wie ich beschrieben habe eingebaut hast und trotzdem nichts im Log erscheint, dann ändert sich entweder die Temperatur nicht (unwahrscheinlich) oder die Regel wird überhaupt nicht ausgeführt.
Bei jeder Temperaturänderung (die auch vom Sensor registriert werden muss), wird ein Logeintrag geschrieben.

Re: Rules

Verfasst: 5. Feb 2019 10:54
von matze.lingen
Ich sehe die Changes für die Temperatur im Log, nur dein Log wird nicht geschrieben.

Re: Rules

Verfasst: 5. Feb 2019 11:02
von mamoel
Dann erstelle mal ein komplett neues File (ohne andere Regeln):

Code: Alles auswählen

rule "Temp_Stal_rule"

when
    Item Stall_Temp changed

then
    logInfo("bot1", "Temperaturänderung erkannt.")
end
Nenne das "temptest.rules" und lege es in den "rules" Ordner. Wenn dann nichts passiert, suchen wir an der falschen Stelle. Achte auch mal darauf, was im Log angezeigt wird, wenn Du dieses File in den "rules" Ordner legst.

Re: Rules

Verfasst: 5. Feb 2019 11:04
von peter-pan
Kannst du die logs (changes) mal posten.

Re: Rules

Verfasst: 5. Feb 2019 12:07
von udo1toni
Und bei der Gelegenheit, schau mal in openhab.log nach, ob dort nach Bearbeiten der Rules eine Meldung kommt, dass openHAB die Datei neu eingelesen hat. Vielleicht gibt es auch eine Meldung der Art

Code: Alles auswählen

dateiname.rules has errors, therefor ignoring it
Da gibt es dann eine Zeilen- und Spaltenangabe, wo der erste schwere Fehler vorhanden ist.