2010-07-18 17:12:00 +02:00
< ? php
2010-07-21 12:44:01 +02:00
/**
* @ copyright Copyright ( c ) 2010 , The volkszaehler . org project
2010-07-22 18:37:14 +02:00
* @ package default
2010-07-21 12:44:01 +02:00
* @ license http :// www . opensource . org / licenses / gpl - license . php GNU Public License
2010-07-22 16:21:26 +02:00
*/
/*
2010-07-21 12:44:01 +02:00
* This file is part of volkzaehler . org
2010-07-18 17:12:00 +02:00
*
2010-07-21 12:44:01 +02:00
* volkzaehler . org is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* any later version .
*
* volkzaehler . org is distributed in the hope that it will be useful ,
2010-07-18 17:12:00 +02:00
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
2010-07-21 12:44:01 +02:00
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
2010-07-18 17:12:00 +02:00
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2010-07-21 12:44:01 +02:00
* along with volkszaehler . org . If not , see < http :// www . gnu . org / licenses />.
2010-07-18 17:12:00 +02:00
*/
namespace Volkszaehler\Interpreter ;
2010-07-21 12:44:01 +02:00
/**
2010-07-29 00:04:33 +02:00
* Sensor interpreter
2010-07-22 10:32:51 +02:00
*
2010-07-22 18:37:14 +02:00
* @ package default
2010-07-21 12:44:01 +02:00
* @ author Steffen Vogel < info @ steffenvogel . de >
*/
2010-07-22 16:10:08 +02:00
class SensorInterpreter extends Interpreter {
2010-07-22 10:32:51 +02:00
2010-07-21 12:44:01 +02:00
/**
2010-07-28 00:41:19 +02:00
* @ todo untested
2010-07-29 00:04:33 +02:00
* @ param string | integer $groupBy
2010-07-21 12:44:01 +02:00
*/
2010-07-28 00:41:19 +02:00
public function getValues ( $groupBy = NULL ) {
$data = parent :: getData ( $groupBy );
2010-07-22 10:32:51 +02:00
2010-07-28 00:41:19 +02:00
$values = array ();
foreach ( $data as $reading ) {
$values [] = array (
$reading [ 0 ],
$reading [ 1 ] / $reading [ 2 ], // calculate average (ungroup the sql sum() function)
$reading [ 2 ]
);
}
2010-07-22 10:32:51 +02:00
2010-07-28 00:41:19 +02:00
return $values ;
2010-07-18 17:12:00 +02:00
}
2010-07-21 12:44:01 +02:00
/**
2010-07-28 00:41:19 +02:00
* @ todo adapt to doctrine orm
2010-07-21 12:44:01 +02:00
* @ todo untested
2010-09-22 02:29:15 +02:00
* @ return array ( 0 => timestamp , 1 => value )
2010-07-21 12:44:01 +02:00
*/
2010-07-28 00:41:19 +02:00
public function getMin () {
return $this -> dbh -> query ( 'SELECT value, timestamp FROM data WHERE channel_id = ' . ( int ) $this -> id . self :: buildFilterTime ( $this -> from , $this -> to ) . ' ORDER BY value ASC' , 1 ) -> current ();
2010-07-18 17:12:00 +02:00
}
2010-07-22 10:32:51 +02:00
2010-07-21 12:44:01 +02:00
/**
2010-07-28 00:41:19 +02:00
* @ todo adapt to doctrine orm
2010-07-21 12:44:01 +02:00
* @ todo untested
2010-09-22 02:29:15 +02:00
* @ return array ( 0 => timestamp , 1 => value )
2010-07-21 12:44:01 +02:00
*/
2010-07-28 00:41:19 +02:00
public function getMax () {
return $this -> dbh -> query ( 'SELECT value, timestamp FROM data WHERE channel_id = ' . ( int ) $this -> id . self :: buildFilterTime ( $this -> from , $this -> to ) . ' ORDER BY value DESC' , 1 ) -> current ();
2010-07-18 17:12:00 +02:00
}
2010-07-22 10:32:51 +02:00
2010-07-21 12:44:01 +02:00
/**
2010-07-28 00:41:19 +02:00
* @ todo adapt to doctrine orm
2010-07-21 12:44:01 +02:00
* @ todo untested
2010-07-29 00:04:33 +02:00
* @ return float
2010-07-21 12:44:01 +02:00
*/
2010-07-28 00:41:19 +02:00
public function getAverage () {
return $this -> dbh -> query ( 'SELECT AVG(value) AS value FROM data WHERE channel_id = ' . ( int ) $this -> id . self :: buildFilterTime ( $this -> from , $this -> to )) -> current ();
}
/**
* @ todo to be implemented
2010-09-22 02:29:15 +02:00
* @ todo possible and / or required ?
2010-07-29 00:04:33 +02:00
* @ return float
2010-07-28 00:41:19 +02:00
*/
public function getConsumption () {
2010-07-18 17:12:00 +02:00
}
}
?>