Show heater/cooler usgae in percent on the web page. Bunped to version 0.2.5

Sat, 15 Nov 2014 20:35:32 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 15 Nov 2014 20:35:32 +0100
changeset 299
d1c52fb43e30
parent 298
b88c60e8369e
child 300
4ce46ff3e37d

Show heater/cooler usgae in percent on the web page. Bunped to version 0.2.5

configure file | annotate | diff | comparison | revisions
configure.ac file | annotate | diff | comparison | revisions
thermferm/server.c file | annotate | diff | comparison | revisions
www-thermferm/getlog.php file | annotate | diff | comparison | revisions
www-thermferm/liveview.php file | annotate | diff | comparison | revisions
--- a/configure	Tue Nov 11 16:19:07 2014 +0100
+++ b/configure	Sat Nov 15 20:35:32 2014 +0100
@@ -2034,7 +2034,7 @@
 
 
 PACKAGE="mbsePi-apps"
-VERSION="0.2.4"
+VERSION="0.2.5"
 COPYRIGHT="Copyright (C) 2014 Michiel Broek, All Rights Reserved"
 CYEARS="2014"
 
--- a/configure.ac	Tue Nov 11 16:19:07 2014 +0100
+++ b/configure.ac	Sat Nov 15 20:35:32 2014 +0100
@@ -8,7 +8,7 @@
 dnl General settings
 dnl After changeing the version number, run autoconf!
 PACKAGE="mbsePi-apps"
-VERSION="0.2.4"
+VERSION="0.2.5"
 COPYRIGHT="Copyright (C) 2014 Michiel Broek, All Rights Reserved"
 CYEARS="2014"
 AC_SUBST(PACKAGE)
--- a/thermferm/server.c	Tue Nov 11 16:19:07 2014 +0100
+++ b/thermferm/server.c	Sat Nov 15 20:35:32 2014 +0100
@@ -631,8 +631,10 @@
  */
 int cmd_list(char *buf)
 {
-    char		*opt, *param, *filename, q[5], buffer[256], *copy = NULL;
-    char		*mode_o = NULL, *mode_n, *heater_o = NULL, *heater_n, *cooler_o = NULL, *cooler_n;
+    char		*opt, *param, *filename, q[5], buffer[256], outbuf[256];
+    char		*date_n, *mode_n, *air_n, *beer_n, *target_n, *heater_n, *cooler_n;
+    char		*heater_u, *cooler_u;
+    int			heater_l = 0, cooler_l = 0, h = 0, c = 0, heat_used = 0, cool_used = 0;
     units_list		*unit;
     FILE		*fp;
 
@@ -675,54 +677,55 @@
 	filename = xstrcat(filename, (char *)".log");
 	if ((fp = fopen(filename, "r"))) {
 	    while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
+		/*
+		 * 2014-11-15 18:39,BEER,20.312,19.750,20.0,0,NA,NA,NA,78105,NA,NA
+		 */
 		buffer[strlen(buffer) -1] = '\0';
-		copy = xstrcpy(buffer);
-		mode_n = strtok(buffer, ",\0");
-		mode_n = strtok(NULL, ",\0");
-		heater_n = strtok(NULL, ",\0");	/* skip air_temp	*/
-		heater_n = strtok(NULL, ",\0");	/* skip beer temp	*/
-		heater_n = strtok(NULL, ",\0"); /* skip target temp	*/
-		heater_n = strtok(NULL, ",\0");
-		cooler_n = strtok(NULL, ",\0");
+		date_n = strtok(buffer, ",\0");	/* timestamp		*/
+		mode_n = strtok(NULL, ",\0");	/* unit mode		*/
+		air_n = strtok(NULL, ",\0");	/* air temp		*/
+		beer_n = strtok(NULL, ",\0");	/* beer temp		*/
+		target_n = strtok(NULL, ",\0"); /* target temp		*/
+		heater_n = strtok(NULL, ",\0");	/* current heater state	*/
+		cooler_n = strtok(NULL, ",\0");	/* current cooler state	*/
+		heater_u = strtok(NULL, ",\0");	/* current fan state	*/
+		heater_u = strtok(NULL, ",\0");	/* current door state	*/
+		heater_u = strtok(NULL, ",\0");	/* heater use counter	*/
+		cooler_u = strtok(NULL, ",\0");	/* cooler use counter	*/
 
 		if (strncmp(mode_n, (char *)"Mode", 4)) {
 		    /*
-		     * Output a line each 10 minutes or if something changes.
+		     * Output a line each 30 minutes.
 		     */
 		    if ((q[0] != buffer[11]) || (q[1] != buffer[12]) || (q[3] != buffer[14])) {
 			q[0] = buffer[11];
 			q[1] = buffer[12];
 			q[2] = buffer[13];
 			q[3] = buffer[14];
-			if ((q[3] == '0') || (q[3] == '3'))
-		    	    srv_send(copy);
-		    } else if ((mode_o && strcmp(mode_o, mode_n)) ||
-			       (heater_o && strcmp(heater_o, heater_n)) || (cooler_o && strcmp(cooler_o, cooler_n))) {
-			srv_send(copy);
+			if ((q[3] == '0') || (q[3] == '3')) {
+			    heat_used = cool_used = 0;
+			    if (strcmp(heater_u, "NA") && (sscanf(heater_u, "%d", &h) == 1)) {
+				if (h && heater_l) {
+				    heat_used = ((h - heater_l) * 100) / 1800;
+				}
+			    }
+			    if (strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) {
+				if (c && cooler_l) {
+				    cool_used = ((c - cooler_l) * 100) / 1800;
+				}
+			    }
+			    snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d", 
+					    date_n, mode_n, air_n, beer_n, target_n, heater_n, cooler_n, heat_used, cool_used);
+		    	    srv_send(outbuf);
+			    if (h && strcmp(heater_u, "NA"))
+				heater_l = h;
+			    if (c & strcmp(cooler_u, "NA"))
+				cooler_l = c;
+			}
 		    }
 	    	}
-		free(copy);
-		copy = NULL;
-		if (mode_o)
-		    free(mode_o);
-		mode_o = xstrcpy(mode_n);
-		if (heater_o)
-		    free(heater_o);
-		heater_o = xstrcpy(heater_n);
-		if (cooler_o)
-		    free(cooler_o);
-		cooler_o = xstrcpy(cooler_n);
 	    }
 	}
-	if (mode_o)
-	    free(mode_o);
-	mode_o = NULL;
-	if (heater_o)
-	    free(heater_o);
-	heater_o = NULL;
-	if (cooler_o)
-	    free(cooler_o);
-	cooler_o = NULL;
 	free(filename);
 	filename = NULL;
 	srv_send((char *)".");
--- a/www-thermferm/getlog.php	Tue Nov 11 16:19:07 2014 +0100
+++ b/www-thermferm/getlog.php	Sat Nov 15 20:35:32 2014 +0100
@@ -40,11 +40,10 @@
 	if ($j > 1)
 	    $row .= ',';
 	$f = explode(",", $arr[$j]);
-	$heater = $f[5] / 100;
-	$cooler = $f[6] / 100;
-	$fan =    $f[7] / 100;
+	$heater   = $f[5] / 100;
+	$cooler   = $f[6] / 100;
 	$row .= '{"Date":"'.$f[0].'","Mode":"'.$f[1].'","Air":"'.$f[2].'","Beer":"'.$f[3].'","Target":"'.$f[4].'",';
-        $row .= '"Heater":'.$heater.',"Cooler":'.$cooler.',"Fan":'.$fan.',"Door":"'.$f[8].'"}';
+        $row .= '"Heater":'.$heater.',"Cooler":'.$cooler.',"HeatUse":'.$f[7].',"CoolUse":"'.$f[8].'"}';
 	$j++;
     }
 }
--- a/www-thermferm/liveview.php	Tue Nov 11 16:19:07 2014 +0100
+++ b/www-thermferm/liveview.php	Sat Nov 15 20:35:32 2014 +0100
@@ -117,8 +117,8 @@
 	$outstr .= '             { name: "Target", type: "float" },'.PHP_EOL;
 	$outstr .= '             { name: "Heater", type: "int" },'.PHP_EOL;
 	$outstr .= '             { name: "Cooler", type: "int" },'.PHP_EOL;
-	$outstr .= '             { name: "Fan", type: "int" },'.PHP_EOL;
-	$outstr .= '             { name: "Door", type: "int" }'.PHP_EOL;
+	$outstr .= '             { name: "HeatUse", type: "int" },'.PHP_EOL;
+	$outstr .= '             { name: "CoolUse", type: "int" }'.PHP_EOL;
 	$outstr .= '          ],'.PHP_EOL;
 	$outstr .= '          url: \'getlog.php?unit='.$unit.'\''.PHP_EOL;
 	$outstr .= '       };'.PHP_EOL;
@@ -147,19 +147,19 @@
 	$outstr .= '         colorScheme: \'scheme01\','.PHP_EOL;
 	$outstr .= '         seriesGroups:'.PHP_EOL;
 	$outstr .= '           [{'.PHP_EOL;
-	$outstr .= '             type: "stepline",'.PHP_EOL;
+	$outstr .= '             type: "spline",'.PHP_EOL;
 	$outstr .= '             columnsGapPercent: 30,'.PHP_EOL;
 	$outstr .= '             seriesGapPercent: 0,'.PHP_EOL;
 	$outstr .= '             valueAxis:'.PHP_EOL;
 	$outstr .= '             {'.PHP_EOL;
 	$outstr .= '               minValue: 0,'.PHP_EOL;
-	$outstr .= '               maxValue: 4,'.PHP_EOL;
+	$outstr .= '               maxValue: 100,'.PHP_EOL;
 	$outstr .= '               displayValueAxis: false,'.PHP_EOL;
-	$outstr .= '               description: "Heat/Cool"'.PHP_EOL;
+	$outstr .= '               description: "Heat/Cool %"'.PHP_EOL;
 	$outstr .= '             },'.PHP_EOL;
 	$outstr .= '             series: ['.PHP_EOL;
-	$outstr .= '               { dataField: "Cooler", lineWidth: 1, displayText: "Cool", opacity: 0.5 },'.PHP_EOL;
-	$outstr .= '               { dataField: "Heater", lineWidth: 1, displayText: "Heat", opacity: 0.5 }'.PHP_EOL;
+	$outstr .= '               { dataField: "CoolUse", lineWidth: 1, displayText: "Cool %", opacity: 0.5 },'.PHP_EOL;
+	$outstr .= '               { dataField: "HeatUse", lineWidth: 1, displayText: "Heat %", opacity: 0.5 }'.PHP_EOL;
 	$outstr .= '             ]'.PHP_EOL;
 	$outstr .= '            },'.PHP_EOL;
 	$outstr .= '            {'.PHP_EOL;

mercurial