diff -r 3c4c6d5e4b8d -r e833bbd5e733 thermferm/server.c --- a/thermferm/server.c Sat Jul 14 21:36:08 2018 +0200 +++ b/thermferm/server.c Sun Jul 15 12:05:16 2018 +0200 @@ -478,7 +478,7 @@ if ((fp = fopen(name, "r"))) { char buffer[256], outbuf[256], q[5], hr[3]; - char *date_n, *mode_n, *air_n, *beer_n, *target_lo_n, *target_hi_n, *heater_n, *cooler_n, *room_n; + char *date_n, *mode_n, *air_n, *beer_n, *target_lo_n, *target_hi_n, *heater_n, *cooler_n, *room_n, *chiller_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; @@ -505,22 +505,23 @@ 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,18.000,20.1 - * | | | | | | | | | | | | | | - * date_n | | | | | | | | | | | | | - * mode_n ----------+ | | | | | | | | | | | | - * air_n -----------------+ | | | | | | | | | | | - * beer_n -----------------------+ | | | | | | | | | | - * target_lo_n ------------------------+ | | | | | | | | | - * heater_n -------------------------------+ | | | | | | | | - * cooler_n ---------------------------------+ | | | | | | | - * not used ------------------------------------+ | | | | | | - * not used ---------------------------------------+ | | | | | - * heater_u --------------------------------------------+ | | | | - * cooler_u ------------------------------------------------+ | | | - * not used ---------------------------------------------------+ | | - * room_n ----------------------------------------------------------+ | - * target_hi_n -----------------------------------------------------------+ + * 2014-11-15 18:39,BEER,20.312,19.750,20.0,0,NA,NA,NA,78105,NA,NA,18.000,20.1,5.312 + * | | | | | | | | | | | | | | | + * date_n | | | | | | | | | | | | | | + * mode_n ----------+ | | | | | | | | | | | | | + * air_n -----------------+ | | | | | | | | | | | | + * beer_n -----------------------+ | | | | | | | | | | | + * target_lo_n ------------------------+ | | | | | | | | | | + * heater_n -------------------------------+ | | | | | | | | | + * cooler_n ---------------------------------+ | | | | | | | | + * not used ------------------------------------+ | | | | | | | + * not used ---------------------------------------+ | | | | | | + * heater_u --------------------------------------------+ | | | | | + * cooler_u ------------------------------------------------+ | | | | + * not used ---------------------------------------------------+ | | | + * room_n ----------------------------------------------------------+ | | + * target_hi_n -----------------------------------------------------------+ | + * chiller_n ------------------------------------------------------------------+ */ hr[0] = q[0] = buffer[11]; hr[1] = q[1] = buffer[12]; @@ -542,6 +543,7 @@ room_n = strtok(NULL, ",\0"); /* fan use counter */ room_n = strtok(NULL, ",\0"); /* room temperature */ target_hi_n = strtok(NULL, ",\0"); /* target high temp */ + chiller_n = strtok(NULL, ",\0"); /* chiller temp */ if (strncmp(mode_n, (char *)"Mode", 4)) { /* @@ -571,8 +573,8 @@ sscanf(room_n, "%f", &room_t); if (target_hi_n == NULL) target_hi_n = target_lo_n; - snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f,%s", - date_n, mode_n, air_n, beer_n, target_lo_n, heater_n, cooler_n, heat_used, cool_used, room_t,target_hi_n); + snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f,%s,%s", + date_n, mode_n, air_n, beer_n, target_lo_n, heater_n, cooler_n, heat_used, cool_used, room_t,target_hi_n, chiller_n); srv_send(outbuf); if (heater_u && h && strcmp(heater_u, "NA")) heater_l = h; @@ -1167,13 +1169,14 @@ */ int cmd_list(char *buf) { - char *opt, *param, *filename, q[5], hr[3], buffer[256], outbuf[256]; - char *date_n, *mode_n, *air_n, *beer_n, *target_lo_n, *target_hi_n, *heater_n, *cooler_n, *room_n; - char *heater_u, *cooler_u; - int heater_l = 0, cooler_l = 0, h = 0, c = 0, heat_used = 0, cool_used = 0, lines = 0, graphstep = 0; + char *opt; +// char *param, *filename, q[5], hr[3], buffer[256], outbuf[256]; +// char *date_n, *mode_n, *air_n, *beer_n, *target_lo_n, *target_hi_n, *heater_n, *cooler_n, *room_n, *chiller_n; +// char *heater_u, *cooler_u; +// int heater_l = 0, cooler_l = 0, h = 0, c = 0, heat_used = 0, cool_used = 0, lines = 0, graphstep = 0; units_list *unit; - FILE *fp; - float room_t; +// FILE *fp; +// float room_t; opt = strtok(buf, " \0"); opt = strtok(NULL, " \0"); @@ -1193,10 +1196,10 @@ srv_send((char *)"100 Help text follows:"); srv_send((char *)"Recognized commands:"); srv_send((char *)"LIST List available units"); - srv_send((char *)"LIST LOG uuid List logfile of unit by uuid"); +// srv_send((char *)"LIST LOG uuid List logfile of unit by uuid"); srv_send((char *)"."); return 0; - +/* } else if (strcmp(opt, (char *)"LOG") == 0) { param = strtok(NULL, "\0"); @@ -1221,22 +1224,22 @@ filename = xstrcat(filename, unit->name); filename = xstrcat(filename, (char *)".log"); if ((fp = fopen(filename, "r"))) { - +*/ /* * Count the lines in the logfile */ - lines = 0; +/* lines = 0; while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { lines++; } fseek(fp, 0L, SEEK_SET); - /* +*/ /* * We have counted the lines in the logfile including the header lines. * The header lines should be ignored but there are so few of them, we * just include them in the total. * Now find a reasonable interval of lines to sent to the client. */ - for (graphstep = 1; graphstep <= MAX_INTERVALS; graphstep++) { +/* for (graphstep = 1; graphstep <= MAX_INTERVALS; graphstep++) { if (lines < GRAPH_DATALINES[graphstep]) { break; } @@ -1246,75 +1249,77 @@ syslog(LOG_NOTICE, "LIST LOG %s: lines=%d, interval=%d, graphstep=%d", unit->name, lines, GRAPH_INTERVAL[graphstep], graphstep); 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 */ - hr[0] = q[0] = buffer[11]; - hr[1] = q[1] = buffer[12]; - q[2] = buffer[14]; - q[3] = buffer[15]; - hr[2] = '\0'; - buffer[strlen(buffer) -1] = '\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_lo_n = strtok(NULL, ",\0"); /* target low 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 */ - room_n = strtok(NULL, ",\0"); /* fan use counter */ - room_n = strtok(NULL, ",\0"); /* room temperature */ - target_hi_n = strtok(NULL, ",\0"); /* target high temp */ +// hr[0] = q[0] = buffer[11]; +// hr[1] = q[1] = buffer[12]; +// q[2] = buffer[14]; +// q[3] = buffer[15]; +// hr[2] = '\0'; +// buffer[strlen(buffer) -1] = '\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_lo_n = strtok(NULL, ",\0"); /* target low 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 */ +// room_n = strtok(NULL, ",\0"); /* fan use counter */ +// room_n = strtok(NULL, ",\0"); /* room temperature */ +// target_hi_n = strtok(NULL, ",\0"); /* target high temp */ +// chiller_n = strtok(NULL, ",\0"); /* chiller temp */ - if (strncmp(mode_n, (char *)"Mode", 4)) { +// if (strncmp(mode_n, (char *)"Mode", 4)) { /* * Output a line at the right intervals */ - int hour = atoi(hr); - if (((graphstep == 1)) || - ((graphstep == 2) && (q[3] == '0' || q[3] == '5')) || - ((graphstep == 3) && ((q[2] == '0' && q[3] == '0') || (q[2] == '1' && q[3] == '5') || (q[2] == '3' && q[3] == '0') || (q[2] == '4' && q[3] == '5'))) || - ((graphstep == 4) && ((q[2] == '0' && q[3] == '0') || (q[2] == '3' && q[3] == '0'))) || - ((graphstep == 5) && (q[2] == '0' && q[3] == '0')) || - ((graphstep == 6) && (hour % 2 == 0) && (q[2] == '0' && q[3] == '0')) || /* 120 minutes */ - ((graphstep == 7) && (hour % 4 == 0) && (q[2] == '0' && q[3] == '0')) || /* 240 minutes */ - ((graphstep >= 8) && (hour % 8 == 0) && (q[2] == '0' && q[3] == '0')) ) { /* 480 minutes */ - 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) / (GRAPH_INTERVAL[graphstep] * 60); - } - } - if (strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) { - if (c && cooler_l) { - cool_used = ((c - cooler_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60); - } - } - if (room_n) - sscanf(room_n, "%f", &room_t); - else - room_t = 0.0; - if (target_hi_n == NULL) - target_hi_n = target_lo_n; - snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f,%s", - date_n, mode_n, air_n, beer_n, target_lo_n, heater_n, cooler_n, heat_used, cool_used, room_t, target_hi_n); - srv_send(outbuf); - if (h && strcmp(heater_u, "NA")) - heater_l = h; - if (c & strcmp(cooler_u, "NA")) - cooler_l = c; - } - } - } - } - free(filename); - filename = NULL; - srv_send((char *)"."); - return 0; +// int hour = atoi(hr); +// if (((graphstep == 1)) || +// ((graphstep == 2) && (q[3] == '0' || q[3] == '5')) || +// ((graphstep == 3) && ((q[2] == '0' && q[3] == '0') || (q[2] == '1' && q[3] == '5') || (q[2] == '3' && q[3] == '0') || (q[2] == '4' && q[3] == '5'))) || +// ((graphstep == 4) && ((q[2] == '0' && q[3] == '0') || (q[2] == '3' && q[3] == '0'))) || +// ((graphstep == 5) && (q[2] == '0' && q[3] == '0')) || +// ((graphstep == 6) && (hour % 2 == 0) && (q[2] == '0' && q[3] == '0')) || /* 120 minutes */ +// ((graphstep == 7) && (hour % 4 == 0) && (q[2] == '0' && q[3] == '0')) || /* 240 minutes */ +// ((graphstep >= 8) && (hour % 8 == 0) && (q[2] == '0' && q[3] == '0')) ) { /* 480 minutes */ +// 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) / (GRAPH_INTERVAL[graphstep] * 60); +// } +// } +// if (strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) { +// if (c && cooler_l) { +// cool_used = ((c - cooler_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60); +// } +// } +// if (room_n) +// sscanf(room_n, "%f", &room_t); +// else +// room_t = 0.0; +// if (target_hi_n == NULL) +// target_hi_n = target_lo_n; +// snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f,%s,%s", +// date_n, mode_n, air_n, beer_n, target_lo_n, heater_n, cooler_n, +// heat_used, cool_used, room_t, target_hi_n, chiller_n); +// srv_send(outbuf); +// if (h && strcmp(heater_u, "NA")) +// heater_l = h; +// if (c & strcmp(cooler_u, "NA")) +// cooler_l = c; +// } +// } +// } +// } +// free(filename); +// filename = NULL; +// srv_send((char *)"."); +// return 0; } srv_send((char *)"504 Subcommand error");