Ankündigung

Einklappen
Keine Ankündigung bisher.

RRD4J speichert keine neuen Werte

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

    RRD4J speichert keine neuen Werte

    Hallo zusammen,

    nachdem ich mich nun endlich näher mit der Persistence innerhalb von OpenHAB beschäftige, bin ich auf das folgende Problem gestoßen: die RRD4J-Datenbank speichert keine Werte ab. Hier mal ein paar Eckdaten:

    - Es soll ein Item des Typs Number "persistiert" werden
    - RRD4J-jar ist im passenden Ordner
    - .persist - Datei ist angelegt und das entsprechende item konfiguriert; Strategie ist "everyChange"
    - in openhab.log steht, dass das .persist-Model der RRD4J-Datenbank geladen wurde; keine Fehlermeldungen diesbezüglich
    - die .rrd-Datei wird von OpenHAB initial korrekt angelegt - behält dann aber immer das "alte" Datum
    - wird der Wert des Items geändert, so steht in openhab.log (habe ich auf DEBUG-Level umgestellt in der logback.xml), dass der Wert in der RRD4J-Datenbank gespeichert wurde
    - neue Änderungen des Item-Werts werden laut Log auch immer in die Datenbank geschrieben - die .rrd-Dateien werden aber nicht verändert! Das Dateidatum bleibt das der ersten Erzeugung
    - auslesen der Werte aus der Datenbank produziert keine Fehlermeldung; es wird immer der aktuelle (!) Wert ausgegeben, z.B. der Durchschnittswert der letzten fünf Tage wird zwar geliefert, ist aber immer gleich dem ganz aktuellen Wert des Items. Das gleiche gilt für previousState.
    - Besonderheit: ich habe das Verzeichnis openhab/etc/rrd4j im tmpfs gemountet, da bei mir das OpenHAB auf einem Pi läuft und das Löschen der Daten bei Reboot für mich kein Problem ist (langfristiges Loggen will ich mit RRD4J nicht machen, dafür dann vielleicht mal MySQL, RRD4J soll eher wie ein "Kurzzeitgedächtnis" eingesetzt werden). Und ja, Schreibrechte auf dem tmpfs-mount sind vorhanden, die .rrd-Dateien können ja auch vom System angelegt werden!

    Ich komme einfach nicht mehr weiter. Hat jemand eine Idee?

    Vielen Dank schonmal & Grüße

    autom8
    Bei kostenlosen Diensten ist man nicht Kunde, sondern Ware!

    #2
    Hat denn überhaupt niemand eine Idee? Ich weiß einfach nicht weiter.
    Bei kostenlosen Diensten ist man nicht Kunde, sondern Ware!

    Kommentar


      #3
      Also bei mir hat es dann geholfen die entsprechende rrd Datei zu löschen. Danch hat es meistens funktioniert. GGF. solltes Du das Mouten in FStemp mal unterlassen um zu sehen, ob es daran liegt.

      Thomas

      Kommentar


        #4
        Hallo Thomas,

        vielen Dank, vielleicht bringt es tatsächlich was, mal auf ein physikalisches Laufwerk zu schreiben (wobei ich mir nicht erklären kann, warum dann die .rrd-Dateien überhaupt im tmpfs angelegt werden konnten). Löschen habe ich schon probiert; wenn ich danach Openhab neu starte werden wieder die .rrd-Dateien für alle persistierten Items angelegt - dann aber einfach nicht aktualisiert :-(
        Bei kostenlosen Diensten ist man nicht Kunde, sondern Ware!

        Kommentar


          #5
          Ich hatte auch manchmal das Problem, das Updates nicht geschrieben werden sind, hatte aber immer die Standard Installation auf dem RPI. Jetzt bin ich von rrd4j weg und habe auf meine Sysnology eine MariaDB installiert. Da sind noch ca. 5 TB frei, was für die Logdaten ausreichen sollte.

          Thomas

          Kommentar


            #6
            Zitat von autom8 Beitrag anzeigen
            Strategie ist "everyChange"
            Strategie auf "everyMinute" ändern, dann geht es. Warum weiß ich auch nicht, aber wenn man ein wenig in den diversen Foren zum Thema rrd4j stöbert findet man diese Antwort immer wieder ... bei mir hat es auch geholfen.

            Gruß, Sigi

            Kommentar


              #7
              Hallo sihui & alle anderen RRD4J-Verzweifler,

              unabhängig von deinem genialen Hinweis habe ich genau diese Erfahrung neulich auch gemacht: irgendwas scheint zu verhindern, dass RRD4J nur bei Wertänderungen mitschreibt. Speichert man Werte in regelmäßigen Zeitintervallen, dann geht es! Schade zwar, dass man nicht nur bei Änderung einen Schreibvorgang auslösen kann - aber andereseits: grade bei RRD4J ist das ja nicht so wichtig, weil man ja keinen zusätzlichen Speicherplatz verschenkt.

              Von daher bin ich glücklich mit der Lösung!

              Danke & Grüße

              autom8
              Bei kostenlosen Diensten ist man nicht Kunde, sondern Ware!

              Kommentar


                #8
                Hallo Zusammen,

                RRD ist nicht dafür gedacht, nur bei Änderungen zu schreiben. RRD erwartet zyklische Werte. Wie bereits erwähnt, everyMinute bei Strategy verwenden und gut is...

                Kommentar


                  #9
                  Okay, man lernt nie aus... hab ich das nur überlesen, oder steht es tatsächlich bisher nicht in der Doku? Zyklisch alle Viertelstunde hat bei mir auch nicht funktioniert. Mir als blutigem Persistence-Anfänger war diese Besonderheit nicht bewusst. Danke für die Hinweise!
                  Bei kostenlosen Diensten ist man nicht Kunde, sondern Ware!

                  Kommentar


                    #10
                    Ich sag immer:

                    A bisserl woas muss man schon von daheim mitbringen

                    Kommentar


                      #11
                      Ich mag ja jetzt eigentlich kein zusätzliches Durcheinander erzeugen, aber...

                      Mein Kenntnisstand war, dass rrd4j durchaus auch nicht-zyklische oder länger-zyklische Datenerfassung beherrscht, dass dann nur die Charts nicht gezeichnet werden. So interpretiere ich auch den Kommentar in der demo-rrd4j.persist:
                      Code:
                      // 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 * * * * ?"
                      }
                      Da ich mich mit rrd nie eingehend beschäftigt habe: Falls es da direkt von rrd(4j), also dem von openHAB genutzten Projekt belastbare Informationen gibt, wäre es sicher gut, das zum einen in die Demo-Persistence (als Kommentar) und zum anderen in die rrd4j-persisctence Dokumentation rein zu schreiben...

                      Kommentar


                        #12
                        hallo,

                        ich muss das thema nochmals hoch holen, weil es genau mein problem bescheibt und ich keinen neuen thread aufmachen möche.

                        wie bei dem kollegen ist mein problem das keine neuen daten in die dateien der datenbank geschrieben werden.

                        lösche ich den ganze ordner werden alle dateien neu angelegt.
                        diese datum behalten sie dann auch, es wird nicht mehr geändert wenn neue (andere) werte dazukommen.
                        lege ich ein neues item an, wird eine neue datei erstellt, das datu wurd danach auch nicht mehr geändert.

                        irgendwie scheinen die daten ja gespeichert zu werden, denn es werden ja die diagramme ordnungsgemäß angezeigt.
                        jedoch scheinen diese daten nicht auf die festplatte geschrieben zu werden.

                        nach einem neustart von OH sind die initialwerte wieder in den variablen aber nicht die des letzen status.

                        mach ich wieder was falsch ???
                        gibt es einen trick damit die daten auf die platte geschrieben werden ??


                        mein system ist OH 1.8.2 auf einem windows 7x64 mit intel j1900 cpu.

                        hier noch der auszug aus der rrd4j...

                        Code:
                        // 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 {
                            //DemoSwitch,NoOfLights,Window_GF_Toilet,Heating* : strategy = everyChange, everyMinute, restoreOnStartup
                            
                            // let's only store temperature values in rrd
                            //Temperature*,Weather_Chart* : strategy = everyMinute, restoreOnStartup
                            * : strategy = everyMinute, restoreOnStartup
                        }

                        Kommentar


                          #13
                          Ich nutze openhab unter Debian, die Dateien unter ./etc/rrd4j/ tragen bei mir alle das aktuelle Datum und die aktuelle Uhrzeit (Datei geändert). Eventuelll wir Dir das Erstelldatum angezeigt?
                          Was meinst Du mit
                          nach einem neustart von OH sind die initialwerte wieder in den variablen aber nicht die des letzen status.
                          ?
                          Die Daten sollten eigentlich alle auf der Platte landen, wenn Du openHAB neu startest, sollten die Grafen auch Daten aus der Vergangenheit anzeigen, solange openHAB zu der Zeit lief.

                          rrd4j kann derzeit ausschließlich numerische Daten persistieren, aber weder Strings noch logische Werte, also ON/OFF usw., dafür müsstest Du entweder eine Datenbank wie db4o, mysql usw. verwenden, oder Du setzt mapdb ein, mapdb speichert nur den letzten Zustand, ideal um den letzen Zustand beim Hochfahren wiederherzustellen, da genau wie bei rrd4j die Datenmenge auf der Platte nicht wächst.

                          Kommentar


                            #14
                            mit initialwerte meine ich die daten zum zeitpunkt als die datei angelegt wurde.
                            also z.b. nach dem löschen.
                            dieser status bleibt dann erhalten und kommt nach jedem neustart wieder. auch wenn der wert zwischenzeitlich geändert wurde.

                            (und nein, ich sehe natürlich das datum der letzen änderung...)

                            rrd4j kann derzeit ausschließlich numerische Daten persistieren, aber weder Strings noch logische Werte, also ON/OFF usw., dafür müsstest Du entweder eine Datenbank wie db4o, mysql usw. verwenden, oder Du setzt mapdb ein, mapdb speichert nur den letzten Zustand, ideal um den letzen Zustand beim Hochfahren wiederherzustellen, da genau wie bei rrd4j die Datenmenge auf der Platte nicht wächst.
                            aha...
                            das war mir neu, wieso steht das nicht immer mit dabei wenn es um rrd4j geht.

                            ich habe gerade mal einen neustart gemacht...
                            die switch items waren wieder alle im init-zustand (veraltet)
                            die number items waren ok.
                            auch die diagramme waren aktuell. selbst die switch items werden in diagramm richtig angezeigt.
                            und das obwohl sämtliche dateien der datenbank den zeitstempel des letzen löschens/neuerstellens haben. (anzeige: änderungsdatum) (erstelldatum ist auch gleich)

                            also ist es wohl so das die daten "normal" gespeichert werden allerdings ohne das datum der datei zu ändern.
                            und nicht numere items werden wohl nicht richtig wiederhergestellt.

                            also werde ich wohl mal mysql aktrivieren da kenne ich mich ein wenig aus.
                            gibts da auch wieder irgendwelche bekannten einschränkungen oder negativen erfahunrgen ?

                            danke das war genau der richtige ansatz...

                            Kommentar


                              #15
                              gern geschehen, schön dass ich in die richtige Richtung getippt habe.

                              Mit MySQL habe ich hier keine Probleme, wobei ich noch keine Spezialitäten ausprobiert habe (man kann wohl über die openhab.cfg die Datentypen auf MySQL-Seite beeinflussen - bisher gab es da bei mir keinen Bedarf). openHAB erzeugt die Tabellen selbständig, leider reicht es dann auch nicht, auf MySQL-seite rumzuschrauben, wenn man andere Vorstellungen hat, andererseits funktioniert das Wegspeichern und Auswerten der Daten, und das ist ja die Hauptsache. Ich nutze inzwischen MariaDB unter Jessie, aber MySQL unter Squeeze hat genauso gut funktioniert.

                              Kommentar

                              Lädt...
                              X