[vz-dev] Zählerstand per middleware holen?
Rainer Gauweiler
volkszaehler at moppl.inka.de
Sat Mar 22 11:45:02 CET 2014
Hallo Andreas,
falls ich Dein Verfahren falsch verstanden haben sollte, bitte an
entsprechender Stelle eingreifen :-)
Am 22.03.2014 07:35, schrieb Andreas Goetz:
> - Das JSON API kann das bereits- wenn auch nicht als Kurve so doch zu
> einem Zeitpunkt (Feld "consumption")
Ich habe mal ein bisschen in den Code geschaut. Sie macht das über die
Summierung der Werte - sehe ich das richtig? Sogar bei einem
counterChannel.
Damit addieren sich aber natürlich mit der Zeit Fehler, z.B. weil bei
einem leistungsChannel(Power/S0) die Messung mal ausfiel. Die Umrechnung
von Leistung zum Verbrauch und umgekehrt hängt auch von der Genauigkeit
der Ausgabe der Zähler ab, diese ist auch sehr unterschiedlich. Auch
darüber können sich Fehler einschleichen die sich dann aufsummieren.
Ich würde gerne diese Fehler durch regelmäßige Ablesung im Rahmen halten.
Wenn ich Dein jetziges Verfahren richtig verstehe, dann speicherst Du
einmal am Anfang den Zählerstand und summierst alles hoch, richtig?
Ich schlage vor, einfach weitere Messpunkte einzuführen und die
Summierung dann immer vom Messpunkt aus durchzuführen der zeitlich am
nächstem liegt. Das bietet die gleichen Möglichkeiten wie Deine jetzige
Methode, korrigiert aber die Fehler die über die Zeit entstehen.
> - Das API hat allerdings den Haken, dass der Verbrauch nur über einen
> Zeitraum ermittelt werden kann, dafür aber bei allen Kanaltypen
Mit meinem Verfahren wäre das ja weiterhin möglich. Könnte mit den
gemessenen Verbräuchen im Zeitraum sogar noch genauer sein.
> - Die Lösung besteht darin die Abfrage ab ts=0 bis Wunschzeitpunkt zu machen
Was jegliche Optimierung der DB in Bezug auf Hauptspeicherverbrauch
eliminiert. Da wird dann praktisch der komplette Channel in den
Hauptspeicher geladen, nur um lediglich den ersten Wert zu nutzen. Ich
denke das sollte man effizienter machen. In ein paar Jahren fliegt uns
das sonst um die Ohren.
Würde man jetzt im Frontend noch einführen, dass der aktuelle
Zählerstand unten in der Tabelle steht, würden permanent alle Meßpunkte
aller Channel geladen werden. Damit hätten wir dann die komplette DB
geladen.
> - Dafür braucht es einen Startzählerstand oder entsprechenden Verbrauchswert
Lässt man einen Kanal mitlaufen, der die Zählerstände hat, dann hätte
man immer einen nahen Zählerstand und müsste nicht den ersten nehmen.
Das jetzige Verfahren kann nur einen Zählerstand und das muss immer der
erste sein - richtig?
> PS.: Der Nutzen des Zählerstandes als Kurve sehe ich nicht; eine
> Kanalytyo-spezifische API-Erweiterung finde ich keine gute Idee.
Kuve brauche ich auch nicht und meine Variante ist ebenfalls nicht
Kanaltyp spezifisch.
Bei der jetzigen Variante finde ich es architektonisch ungeschickt, dass
bei den Werten eines Channels ein Wert eine andere Bedeutung (Energie vs
Leistung) hat.
Lagert man die Zählerstände aus haben alle Werte die gleiche Bedeutung
und die Strukturen bleiben sauber.
Verbinden würde ich die beiden Kanäle über eine Eigenschaft in den
Properties - entsprechend zu hasConsumption.
Gruss
Rainer
More information about the volkszaehler-dev
mailing list