Fehlende Daten nachtragen

  • Hallo Community.
    Ich hab jetzt keinen passenden Artikel dazu gefunden, deswegen mal die allgemeine Anfrage...
    In absehbarer Zeit möchte ich meinen verbrauchten Strom gerne mit dem Volkszähler erfassen. Dazu wird mittels "Auslesekopf" ein Ferrariszähler ausgelesen.
    Jetzt habe ich allerdings schon seit etwa 3 Monaten die Werte des Zählers im 5 Minutenformat vorliegen. Bekomme ich diese Werte auch in den Volkszähler übernommen? Wenn ja, wie?
    So wie ich das verstanden habe, wandern die Werte dann ja in die Datenbank. Kann ich sofern ich die Struktur der Datenbank (mit dem Zähler) habe, die Werte einfach in die Datenbank schreiben?!?
    Gibt es hier ein DB-Schema dazu?


    Stefan

  • Zitat von LumpiStefan

    Gibt es hier ein DB-Schema dazu?


    Ja: http://wiki.volkszaehler.org/development/schema


    Wobei ich es einfacher finde wenn man sich die DB direkt anschaut, ist nicht komplex und sehr überschaubar.


    Zitat

    Kann ich sofern ich die Struktur der Datenbank (mit dem Zähler) habe, die Werte einfach in die Datenbank schreiben?!?


    Was die Struktur angeht ist es sicher am einfachsten du setzt einen Volkzähler auf (manuell installiert oder als fertiges Image), richtest alles ein und fügst dann die Daten hinzu.
    Entweder direkt in die DB, die API(per curl, wget und so kram) oder über den vzclient.


    Zitat

    Bekomme ich diese Werte auch in den Volkszähler übernommen? Wenn ja, wie?


    Wichtig bei manipultionen inder DB ist dass der Volkszähler die Kanäle nach Außen hin (durch die Middleware) über die UUID identifiziert, in der DB aber nur nach ID (du wirst es sehen wenn du dir die Tabelle data anschaust).


    Die API und der vzclient nutzen die UUID zur Identifizierung.
    Ein Aufruf per vzclient um eine Datensatz zu erstellen könnte so ausehen:

    Code
    vzclient -u 18bdae40-18cf-11e1-97b1-c9ebec812cd6 add data value=27 ts=1284677961150


    API direkt:

    Code
    POST http://localhost/middleware.php/data/18bdae40-18cf-11e1-97b1-c9ebec812cd6.json?ts=1284677961150&value=27


    ts ist dabei der Zeitstempel (timestamp) nach Unix-Format der um 3 weitere Stellen erweitert wurde. Er ist damit nicht nur auf Sekunden sondern Millisekunden genau. Das musst du berücksichtigen wenn du den Zeitstempel aus Datum und Uhrzeit erzeugst (einfach 000 anhängen).


    value ist der Wert den du an den Kanal übermittelst. Der ist wiederum abhängig von der Art des Kanals. Meine Erläuterungen beziehen sich bereit auf einen Kanal mit Impulsen (s0). Vielleicht muss du die vorhandenen Daten erst umrechnen. 1 entspricht dabei einer Umdrehung der Zählerscheibe.


    Wenn du dir die neue DB anschaust und schon Daten vom Zähler eingetroffen sind bitte nicht erschrecken. Da werden erstmal nur Einträge mit value=1 drinstehen.



    Welchen Weg du auch wählst, du wirst es wohl Scripten wollen. Da ich da auch nicht so fit bin hab ich die Daten einfach Daten sein lassen. Ich hab sie nie in den vz übernommen.



    mfg JAU

    No Shift - No Service

  • Merci für die Antwort.
    vzclient sieht soweit schon mal gut aus...
    Spielt es denn eine Rolle, in welchem Intervall die Daten vorliegen, oder ist das egal?
    Ich hab ja jetzt die Werte im 5-Minuten-Intervall. Liegen die neu aufgezeichneten Daten im selben Intervall oder können die zum Beispiel auch im 1-Minuten-Intervall dann liegen. Wenn das Intervall unterschiedlich ist, macht dass dann was aus?


    Stefan

  • Zitat von LumpiStefan

    Spielt es denn eine Rolle, in welchem Intervall die Daten vorliegen, oder ist das egal?


    Das ist egal.


    Zitat

    Liegen die neu aufgezeichneten Daten im selben Intervall oder können die zum Beispiel auch im 1-Minuten-Intervall dann liegen.


    Grundsätzlich speichert der VZ so fein wie der Zähler es ermöglicht. D.h. bei einem Impulszähler wird für jeden neuen Impuls ein Datensatz mit value=1 und dem Zeitspunkt der Datenerfassung angelegt. Die Leistung im Graph ergibt sich aus dem zeitlichen Abstand der Impulse. Deswegen der Zeitstempel in Millisekunden.


    Zitat

    Wenn das Intervall unterschiedlich ist, macht dass dann was aus?


    Völlig egal. Wobei es im Detail zu ungewohnten Darstellungen kommen kann.


    Nachteil dieser Praxis ist die enorme Datenmenge die anfällt und auf schwächerer Hardware (Raspi) Probleme macht. Mann kann seine Daten aber im Nachhinein (und teilweise auch schon bei der Erfassung) "aggregieren", also Zusammenfassen. Mit einem Intervall wie du ihn wünschst.



    mfg JAU

    No Shift - No Service

  • Ich muss das Thema leider nochmal aufgreifen...
    Hab jetzt mal meinen Ferrari-Zähler angeschlossen und so wie es aussieht kommen die Werte auch schön an...


    Ich sehe jetzt in der data-Tabelle die EInträge:

    Code
    |  6 |          1 | 1424531898838 |     2 |
    |  7 |          1 | 1424532081245 |     2 |


    Der Zähler den ich habe macht (leider nur) 75 U/kWh. Ich würde das so verstehen, das wenn ich einen konstanten Verbrauch von 1000W habe, der Zähler alle 48s einen Impuls ausgibt (3600/75).
    Wie kann ich nun die Werte umrechnen, bzw. wie trage ich die Werte in die DB mit ein?
    Als "Altwerte" habe ich zum Beispiel


    12.12.2014 10:00:00 921,6W --> 48s*1000/921,6=52s --> also alle 52s ein Impuls eintragen?
    12.12.2014 10:05:00 884,4W --> 48s*1000/884.4=54,3s --> also alle 54,3s ein Impuls einragen?
    12.12.2014 10:10:00 840W --> 48s*1000/840=57,1s --> also alle 57,1s ein Impuls eintragen?


    Ergebnis: Impulse bei
    12.12.2014 10:00:00 --> 1418374800000
    12.12.2014 10:00:54 --> 1418374854300
    12.12.2014 10:01:48 --> 1418374908600
    ...


    Sehe ich das richtig, oder bin ich auf dem Holzweg?


    Stefan

  • Zitat von LumpiStefan

    Sehe ich das richtig, oder bin ich auf dem Holzweg?


    Schon richtig, aber es geht auch wesentlich einfacher. Du kannst mehrere Impulse zu einem Timstamp speichern, der resultierende Graph wäre identisch.


    Zitat von LumpiStefan

    Der Zähler den ich habe macht (leider nur) 75 U/kWh.


    Also 13,3333 Umdrehung je Wh


    Zitat von LumpiStefan

    12.12.2014 10:00:00 921,6W


    Bist du dir sicher das es Wh und keine W sind?


    Bei W: 921,6W / 60 *5 = 76,8Wh, 76,8Wh / 13,333 = 5,76
    12.12.2014 10:00:00 921,6W = 76,8Wh -> 6 Impulse bei 1418374800000
    12.12.2014 10:05:00 884,4W = 73,7Wh -> 6 Impulse bei 1418375100000
    12.12.2014 10:10:00 840,0W = 70,0Wh -> 5 Impulse bei 1418375400000


    Bei Wh z.B.: 921,6Wh / 13,333 = 69,12
    12.12.2014 10:00:00 921,6Wh --> 69 Impulse bei 1418374800000
    12.12.2014 10:05:00 884,4Wh --> 66 Impulse bei 1418375100000
    12.12.2014 10:10:00 840,0Wh --> 63 Impulse bei 1418375400000



    mfg JAU

    No Shift - No Service

  • Zitat von JAU

    Schon richtig, aber es geht auch wesentlich einfacher. Du kannst mehrere Impulse zu einem Timstamp speichern, der resultierende Graph wäre identisch.


    Guter Tipp.... ;-) Spart viel Arbeit


    Zitat von JAU

    Bist du dir sicher das es Wh und keine W sind?


    Siehste, da war mein Holzweg. Sind natürlich Watt und keine Wh
    Somit war das korrekt:


    Zitat

    Bei W: 921,6W / 60 *5 = 76,8Wh, 76,8Wh / 13,333 = 5,76
    12.12.2014 10:00:00 921,6W = 76,8Wh -> 6 Impulse bei 1418374800000
    12.12.2014 10:05:00 884,4W = 73,7Wh -> 6 Impulse bei 1418375100000
    12.12.2014 10:10:00 840,0W = 70,0Wh -> 5 Impulse bei 1418375400000


    Hab die Daten drin, sieht soweit gut aus. (Waren ~14.000 Werte) Leider haben mir zu 3 Abschnitten die Detailwerte gefehlt :-(
    Aber da kann ja der VZ nichts dafür....


    Danke für die Hilfe...


    Stefan

  • Muss nochmal meinen Beitrag hochziehen, weil ich schon wieder vor einem ähnlichen Problem stehe.
    Nach einem Zählerumbau würde ich gerne die "Alt-Daten" importieren.
    Es liegen vom alten Zähler die Leistungswerte in W vor. Der neue Zähler ist ein S0-Zähler und liefert also entsprechende Impulse. Der Zähler liefert 1000 Impulse pro kWh. Wie kann ich nun die Werte umrechnen, damit ich die Altdaten übernehmen kann?


    Hie rmal ein Auszug der "Altdaten":


    Danke schon mal für die Hilfe....


    Stefan