[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