0) { return round($sum / $i, 1); } else { return null; } } $db = new DBLib($database['host'], $database['user'], $database['password'], $database['database']); $sensors = ["temp1" => "Innen", "temp2" => "Aussen"]; $show_days = true; $series = array(); $days = []; foreach ($sensors as $sensor => $name) { $date = new DateTime("2015-04-01T00:00:00+02:00", new DateTimeZone("Europe/Berlin")); $date2 = clone $date; $day_summaries = array(); for ($i = 0; $i < $date->format("t"); $i++) { $start = $date->format("U"); $date->add(new DateInterval("P1D")); $end = $date->format("U"); $entries = $db->selectRange($sensor, "*", array("time", $start, $end)); $day_summaries[] = average($entries); if ($show_days) { $hours = []; for ($j = 0; $j < 24; $j++) { $start = $date2->format("U"); $date2->add(new DateInterval("PT1H")); $end = $date2->format("U"); $entries = $db->selectRange($sensor, "*", array("time", $start, $end)); $hours[] = average($entries); } $days[] = ["name" => $date->format("d.m.Y") . " (" . $name . ")", "data" => $hours]; } } $series[] = array("name" => $name, "data" => $day_summaries); } $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"; ?> Highcharts Example