improved highcharts test

highcharts
agp8x 2015-05-07 21:03:37 +02:00
parent db8125640b
commit 3286e8b2fb
1 changed files with 31 additions and 48 deletions

View File

@ -6,82 +6,64 @@
* Time: 18:36 * Time: 18:36
*/ */
$start = microtime(true);
include "config.php"; include "config.php";
include "lib/DBLib.php"; include "lib/DBLib.php";
function average($list) function average($list)
{ {
if(!$list){ if (!$list) {
return null; return null;
} }
$i = 0; $i = 0;
$sum = 0; $sum = 0;
foreach ($list as $value) { foreach ($list as $value) {
$i++; $i++;
$sum += $value['value']/100; $sum += $value['value'] / 100;
} }
if ($i>0) { if ($i > 0) {
return round($sum / $i, 1); return round($sum / $i, 1);
}else{ } else {
return null; return null;
} }
} }
$db = new DBLib($database['host'], $database['user'], $database['password'], $database['database']); $db = new DBLib($database['host'], $database['user'], $database['password'], $database['database']);
#echo $db;
$sensors = ["temp1"=> "Innen", "temp2"=>"Aussen"]; $sensors = ["temp1" => "Innen", "temp2" => "Aussen"];
$series=array(); $show_days = true;
foreach ($sensors as $sensor=>$name) { $series = array();
$days = [];
foreach ($sensors as $sensor => $name) {
$date = new DateTime("2015-04-01T00:00:00+02:00", new DateTimeZone("Europe/Berlin")); $date = new DateTime("2015-04-01T00:00:00+02:00", new DateTimeZone("Europe/Berlin"));
$days = array(); $date2 = clone $date;
$day_summaries = array();
for ($i = 0; $i < $date->format("t"); $i++) { for ($i = 0; $i < $date->format("t"); $i++) {
$start = $date->format("U"); $start = $date->format("U");
#echo $date->format("H:i:s Y.m.d");
#echo " -- ";
#echo $date->format("U");
#echo "\n";
$date->add(new DateInterval("P1D")); $date->add(new DateInterval("P1D"));
$end = $date->format("U"); $end = $date->format("U");
$entries = $db->selectRange($sensor, "*", array("time", $start, $end)); $entries = $db->selectRange($sensor, "*", array("time", $start, $end));
$days[] = average($entries); $day_summaries[] = average($entries);
} if ($show_days) {
$series[]=array("name"=>$name, "data"=>$days);
}
$json= json_encode($series,JSON_NUMERIC_CHECK /*| JSON_PRETTY_PRINT*/);
$series2=[];
$days = array();
foreach(["temp2"=>"Aussen"] as $sensor=>$name){
$date = new DateTime("2015-04-01T00:00:00+02:00", new DateTimeZone("Europe/Berlin"));
$date2 = new DateTime("2015-04-01T00:00:00+02:00", new DateTimeZone("Europe/Berlin"));
for ($j = 0; $j < $date->format("t"); $j++) {
$hours = []; $hours = [];
for ($i = 0; $i < 24; $i++) { for ($j = 0; $j < 24; $j++) {
$start = $date2->format("U"); $start = $date2->format("U");
$date2->add(new DateInterval("PT1H")); $date2->add(new DateInterval("PT1H"));
$end = $date2->format("U"); $end = $date2->format("U");
#var_dump(array("time", $start, $end));
$entries = $db->selectRange($sensor, "*", array("time", $start, $end)); $entries = $db->selectRange($sensor, "*", array("time", $start, $end));
$hours[] = average($entries); $hours[] = average($entries);
} }
$days[]=["name"=>$date->format("d.m.Y")." (".$name.")", "data"=>$hours]; $days[] = ["name" => $date->format("d.m.Y") . " (" . $name . ")", "data" => $hours];
$date->add(new DateInterval("P1D"));
} }
}
$series[] = array("name" => $name, "data" => $day_summaries);
} }
$json2= json_encode($days,JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
#$start = mktime(0, 0, 0, 7, 1, 2014);
#echo date("c",$start);
#echo date("H:i:s Y.m.d",$start);
#echo "\n";
#$days = date("t", $start);
#$end = 60 * 60 * 24 * $days + $start;
#echo date("H:i:s Y.m.d",$end);
#$result = $db->selectRange("temp2", "*", array("time", $start, $end));
#var_dump($result);
$json = json_encode($series, JSON_NUMERIC_CHECK /*| JSON_PRETTY_PRINT*/);
$json2 = json_encode($days, JSON_NUMERIC_CHECK /*| JSON_PRETTY_PRINT*/);
$runtime = "Runtime: " . ((microtime(true) - $start) / 1000 / 1000);
$runtime .= " s";
?> ?>
<!DOCTYPE HTML> <!DOCTYPE HTML>
@ -175,5 +157,6 @@ $json2= json_encode($days,JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div> <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
<div id="container2" style="min-width: 310px; height: 400px; margin: 0 auto"></div> <div id="container2" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
<div style='position:fixed;bottom:20px;right:50px;'><?= ($runtime) ?></div>
</body> </body>
</html> </html>