Hallo Jakob

hi, Developers,

ich habe probleme gruppierte anfragen auszuführen:

http://localhost/vz/middleware.php/data/8f20eb60-60df-11e2-81a1-3d3ab836429e.json?group=year
Cool, group= kannte ich selbst garnicht. Mit was für einem Channel
benutzt du das denn?
Channel vom Typ Strommesser (HW selbst gebaut). Drauf gekommen bin ich weil ich mir ein kleines Dashboard bauen wollte und dafür aktuelle/ aggrgierte Daten brauchte- hab's in der Doku gefunden.
dürfte DataIterator __construct sein:
     // skipping first reading, just for getting first timestamp
     $this->from = $this->stmt->fetchColumn();
Wenn es nur 1 row im resultset gibt verschwindet dann genau diese. Wenn
die Zeile auskommentiert wird läuft es.
Jein. Für group wird die selbe Leistungsberechnung durchgeführt wie
sonst auch, und dafür werden eben mindestens zwei Zeitstempel gebraucht.
group fasst aber komplette Zeiträume vorher zusammen, so daß pro
group-Intervall nur ein Tupel (timestamp, value-sum) rauskommt. Damit
vom aktuellen group-Intervall was angezeigt werden kann, braucht man
also noch den letzten Zeitstempel des vorherigen Intervalls. Für normale
Queries wird der schon geholt, ist also kein großes Problem, daß auch
für group zu machen. Ist auch eine gute Gelegenheit, getData etwas
aufzuhübschen. Ich mach das mal.
Klasse- stehe zum Testen bereit (gerne auch an cpui...@gmx.de). Was die Leistungsberechnung angeht habe ich ein weiteres Problem- nämlich die Tatsache, dass die Durchschnittswerte alle falsch sind. Es wird jeweils 0 (oder ein Werte nahe 0) ausgegeben, auch wenn eindeutig mehr angefallen ist.
Etwas verwirrend ist aber auch die Ausgabe, da (wie sonst auch) der
timestamp des Intervall-Starts angegeben wird, der liegt aber jeweils im
vorherigen group-Interval. Beispiel (Testdaten, als csv):

# from: 2013-03-17 23:59:04
# to: 2013-03-29 02:25:05
# min: 2013-03-19 23:31:34 => 1,377
# max: 2013-03-18 23:59:59 => 298,174
# average: 83,773
# consumption: 22320
# rows: 6
2013-03-17 23:59:04;298,143;1432
2013-03-18 23:59:59;298,174;1403
2013-03-19 23:31:34;1,377;53
2013-03-27 23:59:09;298,138;1431
2013-03-28 23:59:05;297,935;145

Die letzte Zeile bedeutet, daß von 2013-03-28 23:59:05 bis jetzt
(genauer: zum letzten vorliegenden Impuls) die Durchschnittsleistung
297,935W war.


Mhm- bei mir haut das mit dem Average nicht hin. Wenn's bei Dir läuft dann muss ich wohl auch an der Stelle ein bisschen in den Code einsteigen.

Viele Grüße,
Andreas

Antwort per Email an