[vz-dev] Easymeter mir Ethersex

Justin Otherguy justin at justinotherguy.org
Tue Mar 27 20:26:55 CEST 2012


Hallo Tom,

(BTW: wir haben einen IRC-Kanal: http://wiki.volkszaehler.org/contact ; abends ist da auch immer was los)

Am 27.03.2012 um 20:06 schrieb Tom Weber:

> Ja, aber mein Stromzähler liefert das komplette Programm wirklich jede
> Sekunde. Das wird dann doch etwas viel an Daten, oder?
ja, das stimmt, das sind viele Daten. Die Idee, nicht jeden Datensatz auszuwerten, ist neu. Hat jemand ne Idee?

> Ich habe jetzt versucht, mit einem Skript
> 
> #!/bin/bash
> 
> while true
> do
>  vzlogger
>  sleep 15
> done
> 
> das etwas einzudämmen, doch leider "hängt" der prozess vzlogger nach einigen
> Durchläufen im System fest. Erst wenn ich den Prozess vzlogger kille, läuft
> er wieder weiter.
nuja - da spielt ja auch noch der Puffer im Net-IO rein; der füllt sich erst mal an, auch wenn Du ihn erst mal nicht leerst. So einfach ist das wohl nicht.

> Wenn ich den daemon laufen lasse, habe ich leider immer mal 10-100MW Impulse in der DB
das klingt seltsam, aber ich weiss auch von Niemandem, der das schon mal so benutzt hätte.

Lass mal laut nachdenken:
- die Zwischenwerte schlicht zu ignorieren halte ich für keine gute Lösung (unpräzise, Probleme mit dem Puffer)
- vzlogger könnte mehrere Werte mitteln und dann nur diesen Mittelwert übertragen
- wir könnten die Werte in der Datenbank verdichten, ganz ähnlich wie RRD-Tool das tut; da könnte dann ein Job über die Datenreihe drüber laufen, der faktisch die Auflösung in Abhängigkeit vom Alter der Daten verringert, z.B.
  - alle Daten der vergangenen 4 Wochen -> volle Auflösung
  - alle Daten älter als 4 Wochen bis 6 Monate -> nur noch ein Messwert pro Minute
  - alle Daten älter als 6 Monate -> nur noch ein Messwert pro 15 Minuten
  wenn wir sowas implementieren, liessen sich die Werte (sowohl die Grenzwerte als auch die Auflösungen) sehr einfach anpassen
  ich sehe 2 Stellen, an denen das Skript "laufen" könnte:
  - via Middleware/API: 
    - das klappt immer
    - erfordert, dass Daten via API gelöscht werden dürfen
    - das wäre dann ein Skript in einer beliebigen Sprache, welches auf einem beliebigen Host laufen kann (, der die Middleware erreichen kann)
    - würde allerdings Last auf der DB erzeugen
  - lokal auf der Datenbankmaschine; unschön, weil direkt auf der DB (Backend-spezifisch, unschön)

Kommentare?


Gruss, J.



More information about the volkszaehler-dev mailing list