Ankündigung

Einklappen
Keine Ankündigung bisher.

Vergleich mit historcState funktioniert nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Vergleich mit historcState funktioniert nicht

    Hallo,

    Ich möchte in einer Rule den Wert eines Items mit dem Wert vor einer Stunde vergleichen und wenn diese gleich sind eine Meldung ausgeben.
    Dazu habe ich folgende Rule.

    Code:
    rule"Ueberwachung Temperaturaenderung"
    when
         Time cron "0 0 0/1 1/1 * ? *" // Alle 1 Stunde
    then
    
        if (KG_WEZ_Aussentemp.state == KG_WEZ_Aussentemp.historicState(now.minusMinutes(60),"rrd4j"))
        {
             CountNotification.postUpdate(CountNotification.state asNumber + 1)
             AllgemeineMeldung.postUpdate("Die Temperatur im Norden Aussen ändert sich nicht mehr")
        }
        else
        {
             logInfo("Notifikation","Keine Meldung")
              logInfo("Notifikation2", KG_WEZ_Aussentemp.state.toString )
              logInfo("Notifikation3", KG_WEZ_Aussentemp.historicState(now.minusMinutes(60),"rrd4j").state.toString )
            AllgemeineMeldung.postUpdate("---")
        }
    end
    Aber die Rule geht nicht in den If-Zweig obwohl mir beide Werte als gleich angezeigt werden.

    2021-11-28 17:18:00.013 [INFO ] [.smarthome.model.script.Notifikation] - Keine Meldung
    2021-11-28 17:18:00.019 [INFO ] [smarthome.model.script.Notifikation2] - 5.1000000000000005
    2021-11-28 17:18:00.029 [INFO ] [smarthome.model.script.Notifikation3] - 5.1000000000000005
    Kann es an den Kommastellen liegen, dass die nach der xten Stelle unterschiedlich sind?
    Aber wie bekomme ich einen Vergleich auf 2 Kommastellen hin?

    Gruß Tom
    Zuletzt geändert von TomW80; 28.11.2021, 17:58.

    #2
    Du vergleichst state mit historicState (bei der Ausgabe unten verwendest Du allerdings dessen state state)

    Zitat von TomW80 Beitrag anzeigen
    Aber wie bekomme ich einen Vergleich auf 2 Kommastellen hin?
    Prüfe ob der Betrag der Differenz unter einem definierten Schwellwert liegt. Das ist das übliche Vorgehen beim Vergleich von Fließkommawerten.

    Btw.: Du prüfst auf mit Deinem Vorgehen übrigens nicht ob sich der Wert in der letzten Stunde geändert hat, sondern nur ob er vor genau einer Stunde identisch war. AFAIR kannst Du über die History auch abfragen wann zuletzt eine Änderung erfolgt ist. In Deinem Fall wäre wohl interessant ob das länger als eine Stunde her ist oder nicht.

    Kommentar


      #3
      Zitat von wknx Beitrag anzeigen
      Du vergleichst state mit historicState (bei der Ausgabe unten verwendest Du allerdings dessen state state)
      Genau das war das Problem.
      Danke

      Kommentar

      Lädt...
      X