Ankündigung

Einklappen
Keine Ankündigung bisher.

item.updatedSince() Rule funktioniert nicht, was mache ich denn da falsch..?

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

    item.updatedSince() Rule funktioniert nicht, was mache ich denn da falsch..?

    Hallo zusammen,

    ich bin seit kurzem stiller Leser des Forums und muss jetzt mal selber eine Frage stellen.

    Ich speichere einen Wert (der über Rest kommt) und möchte nun prüfen, ob dieser in den letzten x Minuten bzw. Sekunden gekommen ist.
    Wie im Log zu sehen ist funktioniert persistance, ich gebe .lastupdate des Items mit aus. Die Zeit ändert sich, wenn ein Update kommt (alle 5 Minuten)
    Die Rule dazu ist absolut überschaubar, funktioniert aber nicht, was habe ich denn hier übersehen? Log File erkläre ich unten.

    Item:
    Number Brightness "Licht Draussen [%.0f]" <sun> (Draussen, Astro)
    Rule:
    rule "Test Brightness last change"
    when
    Time cron "0/15 * * * * ?"
    then
    if(!Brightness.updatedSince(now.minusSeconds(10))) {
    logInfo("Brightness","Brightness Update nicht ok "+Brightness.lastUpdate.toString)
    } else {
    logInfo("Brightness","Brightness Update ok "+Brightness.lastUpdate.toString)
    }
    end
    2015-05-11 17:47:30.018 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 17:42:00 CEST 2015 <- Altes last.update
    2015-05-11 17:47:31.586 [INFO ] [runtime.busevents ] - Brightness state updated to 336 <- Event kommt an
    2015-05-11 17:47:45.017 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 17:47:00 CEST 2015 <- neues lastupdate korrekt gesetzt und gespeichert
    2015-05-11 17:48:00.124 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 17:47:00 CEST 2015 - Wert eindeutig innerhalb 10 Sekunden geändert, Rule wertet falsch aus
    2015-05-11 17:48:15.018 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 17:47:00 CEST 2015

    Satt updatedSince habe ich auch changedSince versucht, die Vergleichszeit auf 2 Minuten gesetzt, gleiches Ergebnis.
    Irgendjemand eine Idee?

    Gruß
    Michael


    #2
    Bekommst Du denn überhaupt alle 10 Sekunden ein Update? Wenn ich Dein Log richtig interpretiere:
    17:42:00 Brightness Update nicht ok
    17:47:31 Brightness 336
    17:47:45 Brightness Update nicht ok

    Da sind 14 Sekunden dazwischen, damit feuert die "update in den letzten 10 Sekunden"-Regel nicht. Mach doch mal aus den 10 Sekunden 60 Sekunden und schau's Dir nochmal an.

    Kommentar


      #3
      Poll Frequenz geändert auf 60 Sekunden - Zu prüfenden Zeitraum geändert auf 3 Minuten:

      when
      Time cron "0/60 * * * * ?"
      then
      if(!Brightness.updatedSince(now.minusMinutes(3))) {
      ....

      Ich frage minütlich ab, ob in das letzte Update älter als 3 Minuten ist.
      Jedenfalls verstehe ich now.minusMinutes(3) so.

      2015-05-11 20:22:00.089 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 20:17:00 CEST 2015
      2015-05-11 20:22:41.455 [INFO ] [runtime.busevents ] - Brightness state updated to 61
      2015-05-11 20:23:00.345 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 20:22:00 CEST 2015
      2015-05-11 20:24:00.088 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 20:22:00 CEST 2015
      2015-05-11 20:25:00.020 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 20:22:00 CEST 2015
      2015-05-11 20:26:00.032 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 20:22:00 CEST 2015 <- älter als 3 Minuten
      2015-05-11 20:27:00.093 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 20:22:00 CEST 2015 <- älter als 3 Minuten
      2015-05-11 20:27:41.773 [INFO ] [runtime.busevents ] - Brightness state updated to 55
      2015-05-11 20:28:00.089 [INFO ] [penhab.model.script.Brightness] - Brightness Update nicht ok Mon May 11 20:27:00 CEST 2015


      Noch eine Idee? Es geht mir nicht genau um diese Rule, ich möchte nur verstehen wie es funktioniert bzw. wieso nicht wenn ich mit dieser Funktion etwas machen möchte.

      Kommentar


        #4
        hast Du Brightness persistiert? Soweit ich das verstanden habe, muss das Item persistiert sein, wenn das Element nicht mit der Standard-Persistenz erfasst wird, musst Du bei updatedSince() als zweiten Parameter noch den Service mit übergeben.

        Kommentar


          #5
          Denke schon. rrd4j.persist Datei:

          // persistence strategies have a name and a definition and are referred to in the "Items" section
          Strategies {
          // for rrd charts, we need a cron strategy
          everyMinute : "0 * * * * ?"
          }

          Items {

          Brightness : strategy = everyChange, restoreOnStartup
          Temperature*,Weather_Chart* : strategy = everyMinute, restoreOnStartup
          }

          >>musst Du bei updatedSince() als zweiten Parameter noch den Service mit übergeben.
          Den Service..? Beispiel..? Kapier ich gerade nicht :-)

          Mich wundert halt, dass lastUpdate korrekt gesetzt und im Log angezeigt wird, aber der Vergleich offenbar nicht greift.

          Gruß
          Michael

          Kommentar

          Lädt...
          X