[vz-dev] null-tupel vom MeterInterpreter (was: [vz-users] Frage wegen Frontend, vzlogger und Allgemeine Frage)
Thorben Thuermer
r00t at constancy.org
Sun Feb 10 22:00:22 CET 2013
Hallo,
folgendes problem:
der 'hack' einen aktuellen leistungswert aus einem kanal auszulesen,
in dem man daten mit "from=X seconds ago" anfordert,
und dann den letzten wert nimmt, funktioniert wohl nicht mit s0-zaehlern,
weil der MeterInterpreter immer ein tupel mit value=null ans ende haengt.
ich verstehe den code am ende von MeterInterpreter::processData() nicht...
da wird erst das letzte tupel dupliziert(?) ohne den callback dafuer aufzurufen,
und dann noch ein tupel mit value=null angehangt?
118 $last_tuple = end($tuples);
119 $tuples[] = array((float) $ts_last, $last_tuple[1], $last_tuple[2]);
120 $tuples[] = $callback(array(
121 (float) $ts_last, // timestamp of interval start
122 null,
123 1
124 ));
125
126 return $tuples;
kann jemand mit durchblick in der middleware (herr hirsch?) aufklaeren,
wozu das dient?
- Thorben
On Sun, 10 Feb 2013 15:48:28 +0100
Thorben Thuermer <r00t at constancy.org> wrote:
> On Sun, 10 Feb 2013 15:26:30 +0100 Michael Baer <mibaer at web.de> wrote:
> > Und noch: $urlEnd='.json?from=60%20seconds%20ago';
> > geändert.
> >
> > Hier das Ergebnis (Auszug):
> > * Connection #0 to host localhost left intact
> > got: {"version":"0.2","data":{"uuid":"f8d69db0-6ad4-11e2-9092-
> > d93a36681377","from":"1360505377433","to":"1360505437069","min":
> > [1360505431216,555.384],"max":
> > [1360505377433,1537.148],"average":694.212,"consumption":11.5,"rows":22,"tuples":
> > [[1360505377433,1537.148,1],[1360505378604,704.501,1],
> > [1360505381159,702.302,1],[1360505383722,702.576,1],
> [...]
> > [1360505428521,667.904,1],[1360505431216,555.384,1],
> > [1360505434457,689.127,1],[1360505437069,689.127,1],
> > [1360505437069,null,1]]}}
>
> die ausgabe der daten liefert dann die loesung...
> das muss wohl ein bug in der middleware sein.
> der letzte eintrag aus den tuples hat NULL als wert,
> statt einer leistungsangabe...
>
> da muss man mal in den code schauen, wodurch das entstehen koennte...
> was fuer ein zaehler/kanal ist f8d69db0-6ad4-11e2-9092-d93a36681377?
>
> und der null-wert wird dann vom script benutzt:
> > Af8d69dbrray
> > (
> > [0] => 1360505437069
> > [1] =>
> > [2] => 1
> > )
> > f8d69db0-6ad4-11e2-9092-d93a36681377 / Erzeugung:
>
> als workaround:
> if (!empty($content->data->tuples)) {
> $lastTuple = end($content->data->tuples);
> dahinter einfuegen:
> if ($lastTuple[1]===null) $lastTuple = prev($content->data->tuples);
>
>
> > Die werte oben sind mit eienm Fenster von 60 sec ermittelt
>
> werte kommen da genug, du kannst das zeitfenster dann auch wieder verkleinern,
> solange die "tuples"-liste immer lang genug bleibt.
>
> > So wie es aussieht werden die Werte geholt / ermittelt - nur bei
> > Erzeugung taucht dann nichts auf :-(
>
>
> > Gruss,
> > Michael
>
> - Thorben
More information about the volkszaehler-dev
mailing list