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 10:32:51 +02:00
* @ package data
2010-07-21 12:44:01 +02:00
* @ license http :// www . opensource . org / licenses / gpl - license . php GNU Public License
2010-07-18 17:12:00 +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
/**
* sensor interpreter
2010-07-22 10:32:51 +02:00
*
* @ package data
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-22 10:32:51 +02:00
*
2010-07-21 12:44:01 +02:00
* @ param integer $from timestamp in ms since 1970
* @ param integer $to timestamp in ms since 1970
*/
2010-07-19 17:33:26 +02:00
public function getValues ( $from = NULL , $to = NULL , $groupBy = NULL ) {
2010-07-18 17:12:00 +02:00
$data = parent :: getData ( $from , $to , $groupBy );
2010-07-22 10:32:51 +02:00
2010-07-18 17:12:00 +02:00
array_walk ( $data , function ( & $reading ) {
$reading [ 'value' ] /= $reading [ 'count' ]; // calculate average (ungroup the sql sum() function)
});
2010-07-22 10:32:51 +02:00
2010-07-18 17:12:00 +02:00
return $data ;
}
2010-07-21 12:44:01 +02:00
/**
2010-07-22 10:32:51 +02:00
*
2010-07-21 12:44:01 +02:00
* @ param integer $from timestamp in ms since 1970
* @ param integer $to timestamp in ms since 1970
2010-07-22 10:32:51 +02:00
*
2010-07-21 12:44:01 +02:00
* @ todo untested
*/
public function getMin ( $from = NULL , $to = NULL ) {
2010-07-18 17:12:00 +02:00
return $this -> dbh -> query ( 'SELECT value, timestamp FROM data WHERE channel_id = ' . ( int ) $this -> id . self :: buildFilterTime ( $from , $to ) . ' ORDER BY value ASC' , 1 ) -> current ();
}
2010-07-22 10:32:51 +02:00
2010-07-21 12:44:01 +02:00
/**
2010-07-22 10:32:51 +02:00
*
2010-07-21 12:44:01 +02:00
* @ param integer $from timestamp in ms since 1970
* @ param integer $to timestamp in ms since 1970
2010-07-22 10:32:51 +02:00
*
2010-07-21 12:44:01 +02:00
* @ todo untested
*/
2010-07-18 17:12:00 +02:00
public function getMax ( $from = NULL , $to = NULL ) { // TODO untested
return $this -> dbh -> query ( 'SELECT value, timestamp FROM data WHERE channel_id = ' . ( int ) $this -> id . self :: buildFilterTime ( $from , $to ) . ' ORDER BY value DESC' , 1 ) -> current ();
}
2010-07-22 10:32:51 +02:00
2010-07-21 12:44:01 +02:00
/**
2010-07-22 10:32:51 +02:00
*
2010-07-21 12:44:01 +02:00
* @ param integer $from timestamp in ms since 1970
* @ param integer $to timestamp in ms since 1970
2010-07-22 10:32:51 +02:00
*
2010-07-21 12:44:01 +02:00
* @ todo untested
*/
2010-07-18 17:12:00 +02:00
public function getAverage ( $from = NULL , $to = NULL ) { // TODO untested
return $this -> dbh -> query ( 'SELECT AVG(value) AS value FROM data WHERE channel_id = ' . ( int ) $this -> id . self :: buildFilterTime ( $from , $to )) -> current ();
}
}
?>