# HG changeset patch # User Michiel Broek # Date 1416080132 -3600 # Node ID d1c52fb43e304def06e51cf55d16dc3b4ba0a40e # Parent b88c60e8369e87c33f8cb7c35c6958a60b89e15a Show heater/cooler usgae in percent on the web page. Bunped to version 0.2.5 diff -r b88c60e8369e -r d1c52fb43e30 configure --- 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" diff -r b88c60e8369e -r d1c52fb43e30 configure.ac --- 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) diff -r b88c60e8369e -r d1c52fb43e30 thermferm/server.c --- 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 *)"."); diff -r b88c60e8369e -r d1c52fb43e30 www-thermferm/getlog.php --- 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++; } } diff -r b88c60e8369e -r d1c52fb43e30 www-thermferm/liveview.php --- 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;