[vz-dev] [vz-users] Frage zur Anzeige der Maximal- und Minimalwerte

Thorben Thuermer r00t at constancy.org
Mon Feb 4 19:23:52 CET 2013


On Mon, 04 Feb 2013 14:59:16 +0100
Christian Voigt <ctvoigt at online.de> wrote:
> *poke*
> 
> Gibt es einen technischen oder einen logischen Grund, warum nicht der
> absolute Maximalwert (auf niedriegster Auflösung bei Sensoren) der
> angegebenen Zeitspanne angezeigt wird?

ich habe mich mit der middleware nicht viel beschaeftigt...
aber ich denke die werte werden auf den fuer die ansicht berechneten mittelwerte
berechnet, und nicht direkt auf der datenbank/den vollen daten.

der code scheint das zu bestaetigen,
auch wenn ich nicht sicher bin, ob ich an der richtigen stelle lese:

https://github.com/volkszaehler/volkszaehler.org/blob/master/lib/Interpreter/SensorInterpreter.php
class SensorInterpreter extends Interpreter {
	public function getMax() {
		return ($this->max) ? array_map('floatval', array_slice($this->max, 0 , 2)) : NULL;
public function processData($callback) {
	$this->rows = parent::getData();
	foreach ($this->rows as $row) {
		if (is_null($this->max) || $tuple[1] > $this->max[1]) {
			$this->max = $tuple;

https://github.com/volkszaehler/volkszaehler.org/blob/master/lib/Interpreter/Interpreter.php
abstract class Interpreter {
	protected function getData() {
		return new DataIterator($stmt, $this->rowCount, $this->tupleCount);

https://github.com/volkszaehler/volkszaehler.org/blob/master/lib/Interpreter/DataIterator.php
	* Aggregate data
	* @return next aggregated tuple
	public function next() {
		for ($i = 0; $i < $this->packageSize && $tuple = $this->stmt->fetch(); $i++) {
				$package[1] += $tuple[1];
		return $this->current = $package;

getData liefert einen DataIterator, aus dem werden im SensorInterpreter die
durchschnittswerte bezogen, und von *denen* das maximum gesucht.

in den daten die von der datenbank geholt werden, und dem DataIterator zur
verfuegung stehen sind aber alle samples aus dem bereich entalten.
(die durchschnittsbildung wird nicht in sql gemacht)

man muesste also wohl irgendwo in Interpreter oder im DataIterator eine getMin/Max
funktion einbauen, die ohne durchschnittsbildung direkt auf den daten die
werte berechnet.

- Thorben

> On Fri, 2013-01-25 at 09:33 +0100, Christian Voigt wrote: 
> > Hallo Liste,
> > 
> > mir ist aufgefallen, dass die Maximal- und Minimalwerte, die für einen
> > angezeigten Zeitraum angezeigt werden, die gemittelten Werte sind, die
> > für die Anzeige verwendet werden.
> > 
> > Dies war für mich non-intuitiv, da ich hier erwartet hätte, z.B. meine
> > typisch charakteristischen Maximalwerte (z.B. eingeschalteter Teekocher)
> > ablesen zu können.
> > 
> > Gibt es einen technischen oder einen logischen Grund, warum nicht der
> > absolute Maximalwert der angegebenen Zeitspanne angezeigt wird?
> > 
> > Viele Grüße
> > ctvoigt
> > 
> 
> 


More information about the volkszaehler-dev mailing list