# HG changeset patch # User Michiel Broek # Date 1408884091 -7200 # Node ID 91c358556ecf87a978ee37dde8e035f5cb2dd0dc # Parent 93c1f91adaa73fc3a421a7215b907be03d61cb79 LIST LOG also output lines on state changes diff -r 93c1f91adaa7 -r 91c358556ecf thermferm/server.c --- a/thermferm/server.c Sat Aug 23 23:43:11 2014 +0200 +++ b/thermferm/server.c Sun Aug 24 14:41:31 2014 +0200 @@ -585,7 +585,8 @@ */ int cmd_list(char *buf) { - char *opt, *param, *filename, *p, q[2], buffer[256]; + char *opt, *param, *filename, q[2], buffer[256], *copy = NULL; + char *mode_o = NULL, *mode_n, *target_o = NULL, *target_n, *heater_o = NULL, *heater_n, *cooler_o = NULL, *cooler_n; units_list *unit; FILE *fp; @@ -629,14 +630,40 @@ if ((fp = fopen(filename, "r"))) { while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { buffer[strlen(buffer) -1] = '\0'; - p = buffer + 17; - if (strncmp(p, (char *)"Mode", 4)) { + copy = xstrcpy(buffer); + mode_n = strtok(buffer, ",\0"); + mode_n = strtok(NULL, ",\0"); + target_n = strtok(NULL, ",\0"); /* skip air_temp */ + target_n = strtok(NULL, ",\0"); /* skip beer temp */ + target_n = strtok(NULL, ",\0"); + heater_n = strtok(NULL, ",\0"); + cooler_n = strtok(NULL, ",\0"); + + if (strncmp(mode_n, (char *)"Mode", 4)) { if ((q[0] != buffer[11]) || (q[1] != buffer[12])) { q[0] = buffer[11]; q[1] = buffer[12]; - srv_send(buffer); + srv_send(copy); + } else if ((mode_o && strcmp(mode_o, mode_n)) || (target_o && strcmp(target_o, target_n)) || + (heater_o && strcmp(heater_o, heater_n)) || (cooler_o && strcmp(cooler_o, cooler_n))) { + srv_send(copy); } } + + free(copy); + copy = NULL; + if (mode_o) + free(mode_o); + mode_o = xstrcpy(mode_n); + if (target_o) + free(target_o); + target_o = xstrcpy(target_n); + if (heater_o) + free(heater_o); + heater_o = xstrcpy(heater_n); + if (cooler_o) + free(cooler_o); + cooler_o = xstrcpy(cooler_n); } } free(filename); diff -r 93c1f91adaa7 -r 91c358556ecf thermferm/simulator.c --- a/thermferm/simulator.c Sat Aug 23 23:43:11 2014 +0200 +++ b/thermferm/simulator.c Sun Aug 24 14:41:31 2014 +0200 @@ -41,7 +41,7 @@ time_t now, last = (time_t)0; int seconds = 0; double k_room_air, sqm_room_air, thick_room_air, heat_transfer; - double t_change, vhc_air = 0.00121, vhc_water = 4.1796; + double t_change, vhc_air = 1.21, vhc_water = 4179.6; syslog(LOG_NOTICE, "Thread my_simulator_loop started"); if (debug) @@ -67,10 +67,11 @@ * the room temperature. */ sqm_room_air = (cbrtl(simulator->volume_air) * cbrtl(simulator->volume_air) * 6) / 100; /* square meters all fridge sides */ - thick_room_air = 0.02; /* 4 cm walls */ + thick_room_air = 0.04; /* 4 cm walls */ k_room_air = 0.03; /* Polystrene */ heat_transfer=(k_room_air * sqm_room_air * (simulator->room_temperature - simulator->air_temperature)) / thick_room_air; if (heat_transfer != 0) +// t_change = heat_transfer * vhc_air * (simulator->volume_air / 1000); t_change = vhc_air / (heat_transfer * (simulator->volume_air * 1000)); else t_change = 0.0;