[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