1194 |
1187 |
1195 } else if (strcmp(opt, (char *)"HELP") == 0) { |
1188 } else if (strcmp(opt, (char *)"HELP") == 0) { |
1196 srv_send((char *)"100 Help text follows:"); |
1189 srv_send((char *)"100 Help text follows:"); |
1197 srv_send((char *)"Recognized commands:"); |
1190 srv_send((char *)"Recognized commands:"); |
1198 srv_send((char *)"LIST List available units"); |
1191 srv_send((char *)"LIST List available units"); |
1199 // srv_send((char *)"LIST LOG uuid List logfile of unit by uuid"); |
|
1200 srv_send((char *)"."); |
1192 srv_send((char *)"."); |
1201 return 0; |
1193 return 0; |
1202 /* |
|
1203 } else if (strcmp(opt, (char *)"LOG") == 0) { |
|
1204 |
|
1205 param = strtok(NULL, "\0"); |
|
1206 if (param == NULL) { |
|
1207 srv_send((char *)"502 Parameter missing"); |
|
1208 return 0; |
|
1209 } |
|
1210 |
|
1211 q[0] = q[1] = q[2] = q[3] = q[4] = 'a'; |
|
1212 for (unit = Config.units; unit; unit = unit->next) { |
|
1213 if (strcmp(param, unit->uuid) == 0) |
|
1214 break; |
|
1215 } |
|
1216 |
|
1217 srv_send((char *)"212 Logfile list follows:"); |
|
1218 if (getenv((char *)"USER") == NULL) { |
|
1219 filename = xstrcpy((char *)"/root"); |
|
1220 } else { |
|
1221 filename = xstrcpy(getenv((char *)"HOME")); |
|
1222 } |
|
1223 filename = xstrcat(filename, (char *)"/.thermferm/log/"); |
|
1224 filename = xstrcat(filename, unit->name); |
|
1225 filename = xstrcat(filename, (char *)".log"); |
|
1226 if ((fp = fopen(filename, "r"))) { |
|
1227 */ |
|
1228 /* |
|
1229 * Count the lines in the logfile |
|
1230 */ |
|
1231 /* lines = 0; |
|
1232 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { |
|
1233 lines++; |
|
1234 } |
|
1235 fseek(fp, 0L, SEEK_SET); |
|
1236 */ /* |
|
1237 * We have counted the lines in the logfile including the header lines. |
|
1238 * The header lines should be ignored but there are so few of them, we |
|
1239 * just include them in the total. |
|
1240 * Now find a reasonable interval of lines to sent to the client. |
|
1241 */ |
|
1242 /* for (graphstep = 1; graphstep <= MAX_INTERVALS; graphstep++) { |
|
1243 if (lines < GRAPH_DATALINES[graphstep]) { |
|
1244 break; |
|
1245 } |
|
1246 } |
|
1247 if (graphstep > MAX_INTERVALS) |
|
1248 graphstep = MAX_INTERVALS; |
|
1249 syslog(LOG_NOTICE, "LIST LOG %s: lines=%d, interval=%d, graphstep=%d", unit->name, lines, GRAPH_INTERVAL[graphstep], graphstep); |
|
1250 |
|
1251 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { |
|
1252 */ /* |
|
1253 * 2014-11-15 18:39,BEER,20.312,19.750,20.0,0,NA,NA,NA,78105,NA,NA |
|
1254 */ |
|
1255 // hr[0] = q[0] = buffer[11]; |
|
1256 // hr[1] = q[1] = buffer[12]; |
|
1257 // q[2] = buffer[14]; |
|
1258 // q[3] = buffer[15]; |
|
1259 // hr[2] = '\0'; |
|
1260 // buffer[strlen(buffer) -1] = '\0'; |
|
1261 // date_n = strtok(buffer, ",\0"); /* timestamp */ |
|
1262 // mode_n = strtok(NULL, ",\0"); /* unit mode */ |
|
1263 // air_n = strtok(NULL, ",\0"); /* air temp */ |
|
1264 // beer_n = strtok(NULL, ",\0"); /* beer temp */ |
|
1265 // target_lo_n = strtok(NULL, ",\0"); /* target low temp */ |
|
1266 // heater_n = strtok(NULL, ",\0"); /* current heater state */ |
|
1267 // cooler_n = strtok(NULL, ",\0"); /* current cooler state */ |
|
1268 // heater_u = strtok(NULL, ",\0"); /* current fan state */ |
|
1269 // heater_u = strtok(NULL, ",\0"); /* current door state */ |
|
1270 // heater_u = strtok(NULL, ",\0"); /* heater use counter */ |
|
1271 // cooler_u = strtok(NULL, ",\0"); /* cooler use counter */ |
|
1272 // room_n = strtok(NULL, ",\0"); /* fan use counter */ |
|
1273 // room_n = strtok(NULL, ",\0"); /* room temperature */ |
|
1274 // target_hi_n = strtok(NULL, ",\0"); /* target high temp */ |
|
1275 // chiller_n = strtok(NULL, ",\0"); /* chiller temp */ |
|
1276 |
|
1277 // if (strncmp(mode_n, (char *)"Mode", 4)) { |
|
1278 /* |
|
1279 * Output a line at the right intervals |
|
1280 */ |
|
1281 // int hour = atoi(hr); |
|
1282 // if (((graphstep == 1)) || |
|
1283 // ((graphstep == 2) && (q[3] == '0' || q[3] == '5')) || |
|
1284 // ((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'))) || |
|
1285 // ((graphstep == 4) && ((q[2] == '0' && q[3] == '0') || (q[2] == '3' && q[3] == '0'))) || |
|
1286 // ((graphstep == 5) && (q[2] == '0' && q[3] == '0')) || |
|
1287 // ((graphstep == 6) && (hour % 2 == 0) && (q[2] == '0' && q[3] == '0')) || /* 120 minutes */ |
|
1288 // ((graphstep == 7) && (hour % 4 == 0) && (q[2] == '0' && q[3] == '0')) || /* 240 minutes */ |
|
1289 // ((graphstep >= 8) && (hour % 8 == 0) && (q[2] == '0' && q[3] == '0')) ) { /* 480 minutes */ |
|
1290 // heat_used = cool_used = 0; |
|
1291 // if (strcmp(heater_u, "NA") && (sscanf(heater_u, "%d", &h) == 1)) { |
|
1292 // if (h && heater_l) { |
|
1293 // heat_used = ((h - heater_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60); |
|
1294 // } |
|
1295 // } |
|
1296 // if (strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) { |
|
1297 // if (c && cooler_l) { |
|
1298 // cool_used = ((c - cooler_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60); |
|
1299 // } |
|
1300 // } |
|
1301 // if (room_n) |
|
1302 // sscanf(room_n, "%f", &room_t); |
|
1303 // else |
|
1304 // room_t = 0.0; |
|
1305 // if (target_hi_n == NULL) |
|
1306 // target_hi_n = target_lo_n; |
|
1307 // snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f,%s,%s", |
|
1308 // date_n, mode_n, air_n, beer_n, target_lo_n, heater_n, cooler_n, |
|
1309 // heat_used, cool_used, room_t, target_hi_n, chiller_n); |
|
1310 // srv_send(outbuf); |
|
1311 // if (h && strcmp(heater_u, "NA")) |
|
1312 // heater_l = h; |
|
1313 // if (c & strcmp(cooler_u, "NA")) |
|
1314 // cooler_l = c; |
|
1315 // } |
|
1316 // } |
|
1317 // } |
|
1318 // } |
|
1319 // free(filename); |
|
1320 // filename = NULL; |
|
1321 // srv_send((char *)"."); |
|
1322 // return 0; |
|
1323 } |
1194 } |
1324 |
1195 |
1325 srv_send((char *)"504 Subcommand error"); |
1196 srv_send((char *)"504 Subcommand error"); |
1326 return 0; |
1197 return 0; |
1327 } |
1198 } |