thermferm/server.c

changeset 356
44bcfe087f9e
parent 345
9894b559441c
child 358
8b7ef338bf49
--- a/thermferm/server.c	Wed Apr 01 23:13:08 2015 +0200
+++ b/thermferm/server.c	Thu Apr 02 21:53:28 2015 +0200
@@ -415,9 +415,10 @@
 
 	if ((fp = fopen(name, "r"))) {
 	    char        buffer[256], outbuf[256], q[5];
-	    char	*date_n, *mode_n, *air_n, *beer_n, *target_n, *heater_n, *cooler_n;
+	    char	*date_n, *mode_n, *air_n, *beer_n, *target_n, *heater_n, *cooler_n, *room_n;
 	    char	*heater_u, *cooler_u;
 	    int		lines = 0, heater_l = 0, cooler_l = 0, h = 0, c = 0, heat_used = 0, cool_used = 0, graphstep = 0;
+	    float	room_t = 0.0;
 
 	    srv_send((char *)"212 Logfile list follows:");
 	    while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
@@ -439,7 +440,21 @@
 
 	    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
+		 * 2014-11-15 18:39,BEER,20.312,19.750,20.0,0,NA,NA,NA,78105,NA,NA,18.000
+		 *       |           |     |      |     |   | |  |  |    |   |  |    |
+		 *  date_n           |     |      |     |   | |  |  |    |   |  |    |
+		 *  mode_n ----------+     |      |     |   | |  |  |    |   |  |    |
+		 *  air_n -----------------+      |     |   | |  |  |    |   |  |    |
+		 *  beer_n -----------------------+     |   | |  |  |    |   |  |    |
+		 *  target_n ---------------------------+   | |  |  |    |   |  |    |
+		 *  heater_n -------------------------------+ |  |  |    |   |  |    |
+		 *  cooler_n ---------------------------------+  |  |    |   |  |    |
+		 *  not used ------------------------------------+  |    |   |  |    |
+		 *  not used ---------------------------------------+    |   |  |    |
+		 *  heater_u --------------------------------------------+   |  |    |
+		 *  cooler_u ------------------------------------------------+  |    |
+		 *  not used ---------------------------------------------------+    |
+		 *  room_n ----------------------------------------------------------+
 		 */
 		q[0] = buffer[11];
 		q[1] = buffer[12];
@@ -457,6 +472,8 @@
 		heater_u = strtok(NULL, ",\0"); /* current door state   */
 		heater_u = strtok(NULL, ",\0"); /* heater use counter   */
 		cooler_u = strtok(NULL, ",\0"); /* cooler use counter   */
+		room_n = strtok(NULL, ",\0");	/* fan use counter	*/
+		room_n = strtok(NULL, ",\0");	/* room temperature	*/
 
 		if (strncmp(mode_n, (char *)"Mode", 4)) {
 		    /*
@@ -468,22 +485,24 @@
 			((graphstep == 4) && ((q[2] == '0' && q[3] == '0') || (q[2] == '3' && q[3] == '0'))) ||
 			((graphstep == 5) && (q[2] == '0' && q[3] == '0')) ) {
 			heat_used = cool_used = 0;
-			if (strcmp(heater_u, "NA") && (sscanf(heater_u, "%d", &h) == 1)) {
+			if (heater_u && strcmp(heater_u, "NA") && (sscanf(heater_u, "%d", &h) == 1)) {
 			    if (h && heater_l) {
 				heat_used = ((h - heater_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60);
 			    }
 			}
-			if (strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) {
+			if (cooler_u && strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) {
 			    if (c && cooler_l) {
 				cool_used = ((c - cooler_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60);
 			    }
 			}
-			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);
+			if (room_n)
+			    sscanf(room_n, "%f", &room_t);
+			snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f", 
+				date_n, mode_n, air_n, beer_n, target_n, heater_n, cooler_n, heat_used, cool_used, room_t);
 			srv_send(outbuf);
-			if (h && strcmp(heater_u, "NA"))
+			if (heater_u && h && strcmp(heater_u, "NA"))
 			    heater_l = h;
-			if (c & strcmp(cooler_u, "NA"))
+			if (cooler_u && c & strcmp(cooler_u, "NA"))
 			    cooler_l = c;
 		    }
 		}

mercurial