Tue, 22 Jul 2014 23:14:19 +0200
Now uses the real data for the chart
www-thermferm/getlog.php | file | annotate | diff | comparison | revisions | |
www-thermferm/liveview.php | file | annotate | diff | comparison | revisions |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www-thermferm/getlog.php Tue Jul 22 23:14:19 2014 +0200 @@ -0,0 +1,83 @@ +<?php +/***************************************************************************** + * Copyright (C) 2014 + * + * Michiel Broek <mbroek at mbse dot eu> + * + * This file is part of ThermFerm + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * ThermFerm is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ThermFerm; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + *****************************************************************************/ + +require_once('utilities.php'); + +$unit = $_GET["unit"]; + +$sock = open_socket(); +if ($sock == false) { + echo ""; + return; +} + +socket_write($sock, "UNIT " . $unit, 4096); +$answer = ""; +while (1) { + $line = socket_read($sock, 4096); + if ($line === '') + break; + $answer .= $line; +} +socket_close($sock); + +$sock = open_socket(); +if ($sock == false) { + echo ""; + return; +} + +socket_write($sock, "LIST LOG", 4096); +$answer = ""; +while (1) { + $line = socket_read($sock, 4096); + if ($line === '') + break; + $answer .= $line; +} +socket_close($sock); +$arr = explode("\r\n", $answer); + + +//$data[] = array('Date','Mode','Air','Beer','Target','Heater','Cooler','Fan','Door'); +$row = '['; + +/* We don't use json_encode because it doesn't work for our purpose */ +if (startsWith($arr[0], "212")) { + $j = 1; + while (1) { + if (strcmp($arr[$j], ".") == 0) + break; + if ($j > 1) + $row .= ','; + $f = explode(",", $arr[$j]); + $row .= '{"Date":"'.$f[0].'","Mode":"'.$f[1].'","Air":"'.$f[2].'","Beer":"'.$f[3].'","Target":"'.$f[4].'",'; + $row .= '"Heater":"'.$f[5].'","Cooler":"'.$f[6].'","Fan":"'.$f[7].'","Door":"'.$f[8].'"}'; + $j++; + } +} + +$row .= ']'; +echo $row; + +?>
--- a/www-thermferm/liveview.php Tue Jul 22 20:15:09 2014 +0200 +++ b/www-thermferm/liveview.php Tue Jul 22 23:14:19 2014 +0200 @@ -69,26 +69,38 @@ $outstr .= ' <script type="text/javascript">'.PHP_EOL; $outstr .= ' $(document).ready(function () {'.PHP_EOL; - $outstr .= ' var sampleData'.$unr.' = ['.PHP_EOL; - $outstr .= ' { Date:\'2014-07-15 20:44\',Mode:\'NONE\',Air:20.625,Beer:23.687},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-15 21:00\',Mode:\'NONE\',Air:20.250,Beer:23.437},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-15 22:00\',Mode:\'NONE\',Air:20.375,Beer:22.812},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-15 23:00\',Mode:\'NONE\',Air:20.500,Beer:22.437},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-16 00:00\',Mode:\'NONE\',Air:20.437,Beer:22.250},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-16 01:00\',Mode:\'NONE\',Air:20.375,Beer:22.000},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-16 02:00\',Mode:\'NONE\',Air:20.312,Beer:21.750},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-16 03:00\',Mode:\'NONE\',Air:20.375,Beer:21.687},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-16 04:00\',Mode:\'NONE\',Air:20.312,Beer:21.562},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-16 05:00\',Mode:\'NONE\',Air:20.187,Beer:21.500},'.PHP_EOL; - $outstr .= ' { Date:\'2014-07-16 06:00\',Mode:\'NONE\',Air:20.125,Beer:21.500}'.PHP_EOL; - $outstr .= ' ];'.PHP_EOL; + $outstr .= ' var source'.$unr.' ='.PHP_EOL; + $outstr .= ' {'.PHP_EOL; + $outstr .= ' datatype: "json",'.PHP_EOL; + $outstr .= ' datafields: ['.PHP_EOL; + $outstr .= ' { name: \'Date\' },'.PHP_EOL; + $outstr .= ' { name: \'Mode\' },'.PHP_EOL; + $outstr .= ' { name: \'Air\', type: \'float\' },'.PHP_EOL; + $outstr .= ' { name: \'Beer\', type: \'float\' },'.PHP_EOL; + $outstr .= ' { name: \'Target\', type: \'float\' },'.PHP_EOL; + $outstr .= ' { name: \'Heater\' },'.PHP_EOL; + $outstr .= ' { name: \'Cooler\' },'.PHP_EOL; + $outstr .= ' { name: \'Fan\' },'.PHP_EOL; + $outstr .= ' { name: \'Door\' }'.PHP_EOL; + $outstr .= ' ],'.PHP_EOL; + $outstr .= ' url: \'getlog.php?unit='.$unr.'\''.PHP_EOL; + $outstr .= ' };'.PHP_EOL; + + $outstr .= ' var dataAdapter'.$unr.' = new $.jqx.dataAdapter(source'.$unr.','.PHP_EOL; + $outstr .= ' {'.PHP_EOL; + $outstr .= ' autoBind: true,'.PHP_EOL; + $outstr .= ' async: false,'.PHP_EOL; + $outstr .= ' downloadComplete: function () { },'.PHP_EOL; + $outstr .= ' loadComplete: function () { },'.PHP_EOL; + $outstr .= ' loadError: function () { }'.PHP_EOL; + $outstr .= ' });'.PHP_EOL; $outstr .= ' var settings'.$unr.' = {'.PHP_EOL; $outstr .= ' title: "Fermentation temperature '.$unr.'",'.PHP_EOL; $outstr .= ' description: "",'.PHP_EOL; $outstr .= ' padding: { left: 5, top: 5, right: 5, bottom: 5 },'.PHP_EOL; $outstr .= ' titlePadding: { left: 90, top: 0, right: 0, bottom: 10 },'.PHP_EOL; - $outstr .= ' source: sampleData'.$unr.','.PHP_EOL; + $outstr .= ' source: dataAdapter'.$unr.','.PHP_EOL; $outstr .= ' categoryAxis:'.PHP_EOL; $outstr .= ' {'.PHP_EOL; $outstr .= ' dataField: \'Date\','.PHP_EOL;