Seite 2 von 2

Re: Feuchtigkeit fehlt neuerdings im Widget

Verfasst: 13. Mär 2023 14:32
von udo1toni
Also, wenn Du das Verhalten genau so haben willst, wäre es vermutlich das Einfachste, Du sicherst beim Senden des Alarms den aktuellen Wert (im Zweifel in einem Number:Dimensionless Item) und prüfst innerhalb der Rule, ob der aktuelle Wert um mehr als 1 % von dem gespeicherten Wert abweicht. Ist das der Fall, speicherst der Du den neuen Wert. Falls er außerdem über dem Alarmwert liegt, alarmierst Du.

Re: Feuchtigkeit fehlt neuerdings im Widget

Verfasst: 20. Mär 2023 07:54
von tommesd
Ich krieg es leider nicht hin, könntest Du mir mal zeigen wie man das macht?

Re: Feuchtigkeit fehlt neuerdings im Widget

Verfasst: 20. Mär 2023 18:04
von udo1toni
Na so:

Code: Alles auswählen

rule "Feuchtewarnung"
when
    Item gAlleFeuchtigkeitssensorenKeller changed        // Gruppenstatus geändert
then 
    val Alarmgrenze = 50                                 // Ab hier Alarmmeldung
    val fFeuchteNeu = (newState as Number).floatValue    // aktueller Wert
    var fFeuchteAlt = 0
    if(alterWert.state instanceof Number)       // prüfe ob ein gültiger Wert vorliegt
        (alterWert.state as Number).floatValue   // Wert aus extra Item 'alterWert'

    if(fFeuchteNeu < Alarmgrenze) {                      // neuer Wert unter Alarmgrenze?
        alterWert.postUpdate(fFeuchteNeu)                // Dann extra Item aktualisieren
        return;                                          // und Abbruch
    }
    // ab hier Alarmgrenze überschritten

    if(Math.abs(fFeuchteAlt - fFeuchteNeu) < 1)          // Falls Abweichung neu zu alt kleiner 1
        return;                                          // Abbruch (OHNE Update des alten Werts!)
    // Ab hier Abweichung über 1 %

    alterWert.postUpdate(fFeuchteNeu)                    // Extra Item updaten und Alarm geben
    val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
    telegramAction.sendTelegram("Bitte Keller lüften! Durchnittsfeuchte " + newState.toString)
end 
EDIT: ein fehlendes .state ergänzt, plus Prüfung auf gültigen Wert

Re: Feuchtigkeit fehlt neuerdings im Widget

Verfasst: 20. Mär 2023 19:33
von tommesd
Vielen Dank.
Es kommt allerdings ein Fehler

Code: Alles auswählen

2023-03-20 19:31:46.407 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'feuchtewarnung-1' failed: Could not cast AlleFeuchtigkeitssensorenKeller (Type=NumberItem, State=NULL, Label=Alle Feuchtigkeitssensoren Keller Int, Category=humidity) to java.lang.Number; line 7, column 24, length 41 in feuchtewarnung

Re: Feuchtigkeit fehlt neuerdings im Widget

Verfasst: 20. Mär 2023 22:05
von udo1toni
Ist AlleFeuchtigkeitssensorenKeller Dein Item zum Speichern des alten Werts? Da fehlte noch ein .state :)