www/getfermentlog.php

Fri, 25 Jan 2019 13:33:10 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 25 Jan 2019 13:33:10 +0100
changeset 201
f9b7e3f6be7c
parent 194
d202777ebae5
child 296
69fadd1aded2
permissions
-rw-r--r--

Fixed yeast database import differences between grams, ml and packs. Added cells field filled with defaults. Some edit screen improvements. Dynamic prompts depending on the yeast type. Disable men and filter of most columns in the yeasts list. Friendlier display of inverntory.

<?php

require_once('config.php');

if (isset($_GET["code"]))
	$code = $_GET["code"] . ' ' . $_GET["name"];
else
	$code = "TB0015 Winterbier-2";

$filename = 'log/fermentation/' . $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,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);
}

echo json_encode($logs);
//echo $lines . ' lines' . PHP_EOL;

mercurial