www/getco2pressurelog.php

Mon, 11 May 2020 17:32:08 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 11 May 2020 17:32:08 +0200
changeset 671
4b54d6f79d25
parent 600
c136dd22f662
child 838
ce5f39b66a51
permissions
-rw-r--r--

Version 0.3.33 Added websockets framework. Added fermenter status messages to the websockets broadcast.

<?php

require_once('config.php');

if (isset($_GET["code"]))
	$code = $_GET["code"] . ' ' . $_GET["name"];
else
	$code = "CB0080 Op stoom";

$filename = 'log/co2pressure/' . $code . '.log';
if (! file_exists($filename)) {
	header("Content-type: application/json");
	echo '{}';
	exit;
}


/*
 * 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: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))) {
			$lines++;
			$logs[] = array(
				'date' => $row[0],
				'temperature' => $row[1],
				'pressure' => $row[2]
			);
		}
	}
	if (!feof($handle)) {
		echo "Error: unexpected fgets() fail\n";
	}
	fclose($handle);
}
header("Content-type: application/json");
echo json_encode($logs);

mercurial