thermferm/server.c

changeset 356
44bcfe087f9e
parent 345
9894b559441c
child 358
8b7ef338bf49
equal deleted inserted replaced
355:8f946f9d125a 356:44bcfe087f9e
413 name = xstrcat(name, (char *)"/.thermferm/log/"); 413 name = xstrcat(name, (char *)"/.thermferm/log/");
414 name = xstrcat(name, param); 414 name = xstrcat(name, param);
415 415
416 if ((fp = fopen(name, "r"))) { 416 if ((fp = fopen(name, "r"))) {
417 char buffer[256], outbuf[256], q[5]; 417 char buffer[256], outbuf[256], q[5];
418 char *date_n, *mode_n, *air_n, *beer_n, *target_n, *heater_n, *cooler_n; 418 char *date_n, *mode_n, *air_n, *beer_n, *target_n, *heater_n, *cooler_n, *room_n;
419 char *heater_u, *cooler_u; 419 char *heater_u, *cooler_u;
420 int lines = 0, heater_l = 0, cooler_l = 0, h = 0, c = 0, heat_used = 0, cool_used = 0, graphstep = 0; 420 int lines = 0, heater_l = 0, cooler_l = 0, h = 0, c = 0, heat_used = 0, cool_used = 0, graphstep = 0;
421 float room_t = 0.0;
421 422
422 srv_send((char *)"212 Logfile list follows:"); 423 srv_send((char *)"212 Logfile list follows:");
423 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { 424 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
424 lines++; 425 lines++;
425 } 426 }
437 } 438 }
438 syslog(LOG_NOTICE, "ARCHIVE LOG %s: lines=%d, interval=%d, graphstep=%d", param, lines, GRAPH_INTERVAL[graphstep], graphstep); 439 syslog(LOG_NOTICE, "ARCHIVE LOG %s: lines=%d, interval=%d, graphstep=%d", param, lines, GRAPH_INTERVAL[graphstep], graphstep);
439 440
440 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { 441 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
441 /* 442 /*
442 * 2014-11-15 18:39,BEER,20.312,19.750,20.0,0,NA,NA,NA,78105,NA,NA 443 * 2014-11-15 18:39,BEER,20.312,19.750,20.0,0,NA,NA,NA,78105,NA,NA,18.000
444 * | | | | | | | | | | | | |
445 * date_n | | | | | | | | | | | |
446 * mode_n ----------+ | | | | | | | | | | |
447 * air_n -----------------+ | | | | | | | | | |
448 * beer_n -----------------------+ | | | | | | | | |
449 * target_n ---------------------------+ | | | | | | | |
450 * heater_n -------------------------------+ | | | | | | |
451 * cooler_n ---------------------------------+ | | | | | |
452 * not used ------------------------------------+ | | | | |
453 * not used ---------------------------------------+ | | | |
454 * heater_u --------------------------------------------+ | | |
455 * cooler_u ------------------------------------------------+ | |
456 * not used ---------------------------------------------------+ |
457 * room_n ----------------------------------------------------------+
443 */ 458 */
444 q[0] = buffer[11]; 459 q[0] = buffer[11];
445 q[1] = buffer[12]; 460 q[1] = buffer[12];
446 q[2] = buffer[14]; 461 q[2] = buffer[14];
447 q[3] = buffer[15]; 462 q[3] = buffer[15];
455 cooler_n = strtok(NULL, ",\0"); /* current cooler state */ 470 cooler_n = strtok(NULL, ",\0"); /* current cooler state */
456 heater_u = strtok(NULL, ",\0"); /* current fan state */ 471 heater_u = strtok(NULL, ",\0"); /* current fan state */
457 heater_u = strtok(NULL, ",\0"); /* current door state */ 472 heater_u = strtok(NULL, ",\0"); /* current door state */
458 heater_u = strtok(NULL, ",\0"); /* heater use counter */ 473 heater_u = strtok(NULL, ",\0"); /* heater use counter */
459 cooler_u = strtok(NULL, ",\0"); /* cooler use counter */ 474 cooler_u = strtok(NULL, ",\0"); /* cooler use counter */
475 room_n = strtok(NULL, ",\0"); /* fan use counter */
476 room_n = strtok(NULL, ",\0"); /* room temperature */
460 477
461 if (strncmp(mode_n, (char *)"Mode", 4)) { 478 if (strncmp(mode_n, (char *)"Mode", 4)) {
462 /* 479 /*
463 * Output a line at the right intervals 480 * Output a line at the right intervals
464 */ 481 */
466 ((graphstep == 2) && (q[3] == '0' || q[3] == '5')) || 483 ((graphstep == 2) && (q[3] == '0' || q[3] == '5')) ||
467 ((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'))) || 484 ((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'))) ||
468 ((graphstep == 4) && ((q[2] == '0' && q[3] == '0') || (q[2] == '3' && q[3] == '0'))) || 485 ((graphstep == 4) && ((q[2] == '0' && q[3] == '0') || (q[2] == '3' && q[3] == '0'))) ||
469 ((graphstep == 5) && (q[2] == '0' && q[3] == '0')) ) { 486 ((graphstep == 5) && (q[2] == '0' && q[3] == '0')) ) {
470 heat_used = cool_used = 0; 487 heat_used = cool_used = 0;
471 if (strcmp(heater_u, "NA") && (sscanf(heater_u, "%d", &h) == 1)) { 488 if (heater_u && strcmp(heater_u, "NA") && (sscanf(heater_u, "%d", &h) == 1)) {
472 if (h && heater_l) { 489 if (h && heater_l) {
473 heat_used = ((h - heater_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60); 490 heat_used = ((h - heater_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60);
474 } 491 }
475 } 492 }
476 if (strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) { 493 if (cooler_u && strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) {
477 if (c && cooler_l) { 494 if (c && cooler_l) {
478 cool_used = ((c - cooler_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60); 495 cool_used = ((c - cooler_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60);
479 } 496 }
480 } 497 }
481 snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d", 498 if (room_n)
482 date_n, mode_n, air_n, beer_n, target_n, heater_n, cooler_n, heat_used, cool_used); 499 sscanf(room_n, "%f", &room_t);
500 snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f",
501 date_n, mode_n, air_n, beer_n, target_n, heater_n, cooler_n, heat_used, cool_used, room_t);
483 srv_send(outbuf); 502 srv_send(outbuf);
484 if (h && strcmp(heater_u, "NA")) 503 if (heater_u && h && strcmp(heater_u, "NA"))
485 heater_l = h; 504 heater_l = h;
486 if (c & strcmp(cooler_u, "NA")) 505 if (cooler_u && c & strcmp(cooler_u, "NA"))
487 cooler_l = c; 506 cooler_l = c;
488 } 507 }
489 } 508 }
490 } 509 }
491 510

mercurial