hier das ganze als funktion zum includen (es muss nur der archive handler angepasst werden):
function GetMinMaxValues($variableID,$timespan)
//$variableID:integer = ID der auszulesenden Varibale (muss im Archiv vorhanden sein)
//$timespan:integer = 0{Werte des aktuellen Tages von 0:00:00 bis jetzt}, -1{Werte des Vortages von 0:00:00 bis 23:59:59}, n{Letzte n Stunden}
{
if(!IPS_VariableExists($variableID)) die("Variable does not exist in function GetMinMaxValues!");
if(!is_integer($timespan)) die("Timespan is not integer in function GetMinMaxValues!");
if($timespan < -1) die("Timespan must be equal or greater than -1 in function GetMinMaxValues!");
switch($timespan)
{
case 0: //Aktueller Tag von 0:00:00 bis jetzt
$timeStart = strtotime(date("d.m.Y")." 00:00:00");
$timeEnd = time();
break;
case -1: //Vortag von 0:00:00 bis 23:59:59
$timeStart = strtotime(date("d.m.Y",strtotime("-1 day"))." 00:00:00");
$timeEnd = strtotime(date("d.m.Y",strtotime("-1 day"))." 23:59:59");
break;
default: //Letzte n Stunden
$timeStart = time() - ($timespan * 3600);
$timeEnd = time();
break;
}
$logArray = AC_GetLoggedValues(43381 /*[Archive Handler]*/, $variableID, $timeStart, $timeEnd, 0);
foreach($logArray as $key => $v)
{
$value[] = $v['Value'];
$time[] = $v['TimeStamp'];
$cnt = count($value);
$values = array_map(null, $value, $time);
rsort($values);
foreach($values as $keys)
{
$min = $keys;
}
}
$valueMax = $values[0][0];
$timestampMax = $values[0][1];
$valueMin = $min[0];
$timestampMin = $min[1];
$valueAverage = array_sum($value)/$cnt;
return array("min" => $valueMin, "max" => $valueMax, "avg" => $valueAverage, "timestampmin" => $timestampMin, "timestampmax" => $timestampMax);
}
beispiel funktionsaufruf und formatierung der werte:
$ret = GetMinMaxValues(32970 /*[Bereiche\Aussenbereich\Umgebung\Wetterstation\Temperatur]*/,-1);
print("Min: ".$ret["min"]);
print("
Max: ".$ret["max"]);
print("
Avg: ".round($ret["avg"],1));
print("
TimeMin: ".date("d.m.Y H:i",$ret["timestampmin"]));
print("
TimeMax: ".date("d.m.Y H:i",$ret["timestampmax"]));
ergibt:
Min: 11.8
Max: 17.4
Avg: 13.8
TimeMin: 29.07.2010 02:43
TimeMax: 29.07.2010 17:10
oder z.b. für die letzte woche
$ret = GetMinMaxValues(32970 /*[Bereiche\Aussenbereich\Umgebung\Wetterstation\Temperatur]*/,7*24);
print("Min: ".$ret["min"]);
print("
Max: ".$ret["max"]);
print("
Avg: ".round($ret["avg"],1));
print("
TimeMin: ".date("d.m.Y H:i",$ret["timestampmin"]));
print("
TimeMax: ".date("d.m.Y H:i",$ret["timestampmax"]));
ergibt:
Min: 6.8
Max: 23
Avg: 15.9
TimeMin: 25.07.2010 05:11
TimeMax: 23.07.2010 16:40