# HG changeset patch # User Michiel Broek # Date 1660137666 -7200 # Node ID 409f8c4974296a08b88370284afbcd95aaa0972b # Parent ca6b3d4f5a97c300fc4b342962f80a18a3b16ea8 Switch fermenter graph to MySQL diff -r ca6b3d4f5a97 -r 409f8c497429 www/getfermentlog.php --- a/www/getfermentlog.php Wed Aug 10 14:32:58 2022 +0200 +++ b/www/getfermentlog.php Wed Aug 10 15:21:06 2022 +0200 @@ -3,119 +3,33 @@ require_once('config.php'); if (isset($_GET["code"])) - $code = $_GET["code"] . ' ' . $_GET["name"]; + $code = $_GET["code"]; else - $code = "TB0015 Winterbier-2"; + $code = "TB0015"; + +$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); +if (! $connect) { + die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); +} +mysqli_set_charset($connect, "utf8" ); -$filename = 'log/fermentation/' . $code . '.log'; -if (! file_exists($filename)) { - header("Content-type: application/json"); - echo '{}'; - exit; +$query = "SELECT * FROM log_fermenter WHERE code='".$code."' ORDER BY datetime;"; +$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect)); +while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { + + $logs[] = array( + 'date' => substr($row['datetime'],0,16), + 'air' => $row['temp_air'], + 'beer' => $row['temp_beer'], + 'chiller' => $row['temp_chiller'], + 'room' => $row['temp_room'], + 'tlo' => $row['sp_low'], + 'thi' => $row['sp_high'], + 'heater' => $row['heater_power'], + 'cooler' => $row['cooler_power'], + 'event' => $row['event'] + ); } - -/* - * From Stackoverflow, the fastest way to count the lines in a file. - */ -$file = new \SplFileObject($filename, 'r'); -$file->seek(PHP_INT_MAX); - -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; - -/* - * 2014-11-15 18:39,BEER,PRIMARY,20.312,19.750,-1.500,20.5,18.6,18.8,35,12345,0,67890,Whatsup - * | | | | | | | | | | | | | | - * datetime + | | | | | | | | | | | | | - * mode --------------+ | | | | | | | | | | | | - * stage -------------------+ | | | | | | | | | | | - * temp air -----------------------+ | | | | | | | | | | - * temp beer -----------------------------+ | | | | | | | | | - * temp chiller ---------------------------------+ | | | | | | | | - * temp room -------------------------------------------+ | | | | | | | - * setpoint low ---------------------------------------------+ | | | | | | - * setpoint high -------------------------------------------------+ | | | | | - * heater power ------------------------------------------------------+ | | | | - * heater usage ----------------------------------------------------------+ | | | - * cooler power --------------------------------------------------------------+ | | - * cooler usage ------------------------------------------------------------------+ | - * event --------------------------------------------------------------------------------+ - */ - -$heater_l = 0; -$cooler_l = 0; - -$handle = @fopen($filename, "r"); -if ($handle) { - $lines = 0; - while (($buffer = fgets($handle, 4096)) !== false) { - - $buffer = preg_replace( "/\r|\n/", "", $buffer); - $row = explode(",", $buffer); - if ($row[1] != 'Mode') { - - $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], - 'air' => $row[3], - 'beer' => $row[4], - 'chiller' => $row[5], - 'room' => $row[6], - 'tlo' => $row[7], - 'thi' => $row[8], - 'heater' => $heat_used, - 'cooler' => $cool_used, - 'event' => $row[13] - ); - } - - 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);