www/getco2pressurelog.php

Wed, 20 May 2020 21:49:09 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 20 May 2020 21:49:09 +0200
changeset 684
ccb9f24d0fe9
parent 600
c136dd22f662
child 838
ce5f39b66a51
permissions
-rw-r--r--

Report any online status change via websocket broadcast. When starting, load all in memory tables sorted. The websocket status on the web pages has it's own panel. Prepared the menu system for dynamic updates.

<?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