Ankündigung

Einklappen
Keine Ankündigung bisher.

sumSince führt immer zu einer Fehlermeldung?

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

    sumSince führt immer zu einer Fehlermeldung?

    Moin zusammen,

    vorweg sei erwähnt, dass ich noch relativ neu im openHAB Universum unterwegs bin und ggf. um ein wenig Nachsicht bitte, falls meine Fragestellung/Problemstellung schier lächerlich wirken mag...

    zum eigentlichen Thema:
    Ich werte meinen Stromverbrauch mittels S0-Schnittstelle aus und lasse die Daten in openHAB in einem Item speichern, soweit so gut. Die Berechnung von Durchschnittswerte, sowie min & max etc. funktioniert auch alles reibungslos. Einzig die Funktion "sumSince" führt jedesmal zu einer Fehlermeldung im Log.

    Beispiel rule:
    when
    Item Strom_HH_p1_WH changed
    then
    postUpdate(Strom_HH_p1_WH_24, Strom_HH_p1_WH.averageSince(now.minusHours(24))
    end

    Ergebnis: Durchschnittsverbrauch der letzten 24 Stunden (zumindest so mein Verständnis und vom Ergebnis her stimmig)

    Ersetzte ich jetzt das "averageSince" durch "sumSince" wird mir folgender Fehler im Log ausgeworfen:
    "[ERROR] [.script.engine.ScriptExecutionThread] - Error during the execution of rule 'Haushaltsstrom - Verbrauchswerte der letzten 24 Stunden ': The name '<XFeatureCallImplCustom>.sumSince(<XMemberFeature CallImplCustom>)' cannot be resolved to an item or type."

    Ich habe mittlerweile die wildesten Variationen ausprobiert, leider immer mit dem selben Ergebnis. Verstehe einfach nicht, warum sumSince nicht funktioniert. Die Daten liegen definitiv vor, zum einen am schönen Verlauf im Diagramm zu erkennen und zum anderen lassen sich auch mittels "historicState" etwaige Werte gezielt anzeigen.

    Wäre großartig, wenn Ihr mir auf die Sprünge helfen könntet. Danke.

    MfG
    Smylo

    #2
    Hast Du denn das Item Strom_HH_p1_WH überhaupt persistiert? Wenn Du eine Persistence eingerichtet hast, ist das die defaultpersistence (steht in der openhab.cfg)?

    Kommentar


      #3
      Moin udo1toni,

      danke für Deine Rückmeldung.

      Zitat von udo1toni Beitrag anzeigen
      Hast Du denn das Item Strom_HH_p1_WH überhaupt persistiert? Wenn Du eine Persistence eingerichtet hast, ist das die defaultpersistence (steht in der openhab.cfg)?
      Ich vergaß zu erwähnen, dass ich openHAB in der Version 2.0 (Beta Snapshot) einsetze. Wo ich dort eine "default"-persistence einrichte, entzieht sich meiner Kenntnis.

      Allerdings scheint das Problem tatsächlich in irgendeiner Form mit der Persisitierung im Zusammenhang stehen. Bisher hatte ich mir darum kaum Gedanken gemacht, da alles soweit (ausgenommen sumSince) zu funktionieren schien. Standardmäßig ist rrd4 aktiviert und sollte für die meisten Dinge auch ausreichen, aber wenn ich die Funktionsweise jetzt richtig verstanden habe, so werden ältere Daten verworfen..., was erklären dürfte, warum sumSince nicht funktioniert.

      Welche Persistierung würdest Du empfehlen? - und wie kann ich sicherstellen, dass die Abfrage auf die richtige Persistence abzielt?

      Danke und Gruß

      Kommentar


        #4
        sumSince() ich garnicht als Funktion (gibt es ja laut Doku auch erst seit 1.8.0), aber zumindest als Workaround kannst du ja vielleicht auch avarageSince() mit der Zahl der Stunden multiplizieren. Ich habe das für die Regenmenge wie folgt gemacht und das funktioniert eigentlich recht zuverlässig:

        Code:
        rule "Regenmenge aufsummieren"
        when
                System started or
                Time cron "0 0/5 * * * ?" // alle 5 Minuten
        then
                postUpdate(Regenmenge24h, 24*Rain_WU.averageSince(now.minusHours(24)))
                postUpdate(RegenmengeDay, (now.getHourOfDay()+now.getMinuteOfHour()/60.0)*Rain_WU.averageSince(now.toDateMidnight))
        end
        Aber mit sumSince() wäre insbesondere die Tagesregenmenge einfacher zu bestimmen als mein Gewurstel mit Minuten und Stunden...

        Kommentar


          #5
          Zitat von RoRo Beitrag anzeigen
          Code:
          rule "Regenmenge aufsummieren"
          when
          System started or
          Time cron "0 0/5 * * * ?" // alle 5 Minuten
          then
          postUpdate(Regenmenge24h, 24*Rain_WU.averageSince(now.minusHours(24)))
          postUpdate(RegenmengeDay, (now.getHourOfDay()+now.getMinuteOfHour()/60.0)*Rain_WU.averageSince(now.toDateMidnight))
          end
          Moin RoRo,

          dass wäre sicherlich eine Möglichkeit, allerdings auch wieder nur ein Näherungswert und mit "sumSince" sollte es ja - laut meinem Verständnis - möglich sein, den exakten Wert zu berechnen. Irgendwie muss das doch umzusetzen sein?
          Ich glaube, dass udo1toni hinsichtlich der Persistence Thematik schon den richtigen Riecher hat, wie genau das allerdings konfiguriert werden muss und in wie weit eventuell die Abfrage angepasst werden muss, entzieht aktuell noch meiner Kenntnis.

          Vielleicht ist da draußen ja noch jemand, der Licht ins Dunkel bringen kann und uns aufklärt welche Voraussetzungen geschaffen werden müssen und wie die Abfrage genau auszusehen hat...

          MfG
          Smylo

          Kommentar


            #6
            Wenn Du openHAB2.0beta nutzt, wie sieht Deine conf/services/addons.cfg aus?
            Falls mehr als eine Persistence unter dem Punkt persistence eingetragen ist, gehe ich davon aus, dass der erste eingetragene Service dann der default persistence service ist, aber das ist nur Mutmaßung.

            Hast Du die Items in der passenden *.persist eingetragen? Soweit ich das, was ich bisher über openHAB2 gelesen habe, verstanden habe, muss man das nach wie vor tun.
            Falls Du mehr als eine Persistence eingerichtet hast, kannst Du mit .averageSince(now.minusHours(24),"servicename") auswählen, welcher es denn sein soll (das sollte zumindest immer noch so sein).

            Kommentar

            Lädt...
            X