Tue, 07 Jan 2020 16:03:45 +0100
Version 0.3.28
<?php require_once('config.php'); if (isset($_GET["code"])) $code = $_GET["code"] . ' ' . $_GET["name"]; else $code = "TB0015 Winterbier-2"; $filename = 'log/co2pressure/' . $code . '.log'; /* * From Stackoverflow, the fastest way to count the lines in a file. */ $file = new \SplFileObject($filename, 'r'); $file->seek(PHP_INT_MAX); // $file->key() = lines in the file. define ('MAX_INTERVALS', 10); $GRAPH_INTERVAL = array ( 0, 1, 5, 15, 30, 60, 120, 240, 480, 720 ); $GRAPH_DATALINES = array ( 0, 800, 3200, 12000, 24000, 48000, 96000, 192000, 384000, 768000 ); for ($graphstep = 1; $graphstep <= MAX_INTERVALS; $graphstep++) { if ($file->key() < $GRAPH_DATALINES[$graphstep]) break; } if ($graphstep > MAX_INTERVALS) $graphstep = MAX_INTERVALS; //echo $code . '.log lines=' . $file->key() . ' interval=' . $GRAPH_INTERVAL[$graphstep] . ' graphstep=' . $graphstep . PHP_EOL; /* * 2014-11-15 18:39:12,TEMPERATURE,PRESSURE,UUID * | | | | * datetime + | | | * temperature ------------+ | | * pressure --------------------------+ | * unit uuid --------------------------------+ */ $handle = @fopen($filename, "r"); if ($handle) { $lines = 0; while (($buffer = fgets($handle, 4096)) !== false) { $buffer = preg_replace( "/\r|\n/", "", $buffer); $row = explode(",", $buffer); $hr = intval(substr($buffer, 11, 2)); if ((($graphstep == 1)) || (($graphstep == 2) && ((substr($buffer, 15, 1) == '0') || (substr($buffer, 15, 1) == '5'))) || (($graphstep == 3) && ((substr($buffer, 14, 2) == '00') || (substr($buffer, 14, 2) == '15') || (substr($buffer, 14, 2) == '30') || (substr($buffer, 14, 2) == '45'))) || (($graphstep == 4) && ((substr($buffer, 14, 2) == '00') || (substr($buffer, 14, 2) == '30'))) || (($graphstep == 5) && (substr($buffer, 14, 2) == '00')) || (($graphstep == 6) && (substr($buffer, 14, 2) == '00') && (($hr % 2) == 0)) || (($graphstep == 7) && (substr($buffer, 14, 2) == '00') && (($hr % 4) == 0)) || (($graphstep == 8) && (substr($buffer, 14, 2) == '00') && (($hr % 8) == 0)) || (($graphstep == 9) && (substr($buffer, 14, 2) == '00') && (($hr % 12) == 0))) { // echo $hr . ' ' . $row[1] . ' ' . $buffer; $lines++; // $heat_used = $cool_used = 0; // if ($row[10] && ($row[10] != "NA") && ($heater_l > 0)) { // $heat_used = round((intval($row[10]) - $heater_l) * 100 / ($GRAPH_INTERVAL[$graphstep] * 60)); // } // if ($row[12] && ($row[12] != "NA") && ($cooler_l > 0)) { // $cool_used = round((intval($row[12]) - $cooler_l) * 100 / ($GRAPH_INTERVAL[$graphstep] * 60)); // } // echo $GRAPH_INTERVAL[$graphstep] . ' ' . $heat_used . ' ' . $cool_used . PHP_EOL; // if (($heat_used <= 100) && ($cool_used <= 100)) { $logs[] = array( 'date' => $row[0], 'temperature' => $row[1], 'pressure' => $row[2] ); // } // if ($row[10] && ($row[10] != "NA")) // $heater_l = intval($row[10]); // if ($row[12] && ($row[12] != "NA")) // $cooler_l = intval($row[12]); } } if (!feof($handle)) { echo "Error: unexpected fgets() fail\n"; } fclose($handle); } header("Content-type: application/json"); echo json_encode($logs); //echo $lines . ' lines' . PHP_EOL;