thermferm/thermferm.c

changeset 105
a5a964148e34
parent 104
5e538c4e1ecb
child 106
1bd9a16f5061
equal deleted inserted replaced
104:5e538c4e1ecb 105:a5a964148e34
226 226
227 227
228 228
229 int server(void) 229 int server(void)
230 { 230 {
231 char buf[1024], *filename; 231 char buf[1024], *filename, target[40], heater[40], cooler[40], fan[40], door[40];
232 time_t now, last = (time_t)0; 232 time_t now, last = (time_t)0;
233 w1_therm *tmp1; 233 w1_therm *tmp1;
234 units_list *unit; 234 units_list *unit;
235 int rc, run = 1, temp, seconds = 0; 235 int rc, run = 1, temp, seconds = 0;
236 #ifndef HAVE_WIRINGPI_H 236 #ifdef HAVE_WIRINGPI_H
237 int lcdshow = 0;
238 struct tm *tm;
239 #else
237 long t = 0; 240 long t = 0;
238 #endif 241 #endif
239 242
240 if (lockprog((char *)"thermferm")) { 243 if (lockprog((char *)"thermferm")) {
241 syslog(LOG_NOTICE, "Can't lock"); 244 syslog(LOG_NOTICE, "Can't lock");
309 tmp1->update = FALSE; 312 tmp1->update = FALSE;
310 lcdupdate = TRUE; 313 lcdupdate = TRUE;
311 } 314 }
312 } 315 }
313 316
314 #ifdef HAVE_WIRINGPI_H
315 if (run && lcdupdate) {
316 lcdPosition(lcdHandle, 0, 0);
317 tmp1 = Config.w1therms;
318 snprintf(buf, 16, "%5.2f %cC %s ", tmp1->lastval / 1000.0, 0xdf, tmp1->alias);
319 mb_lcdPuts(lcdHandle, buf);
320 temp = tmp1->lastval;
321 tmp1 = tmp1->next;
322 lcdPosition(lcdHandle, 0, 1);
323 snprintf(buf, 16, "%5.2f %cC %s ", tmp1->lastval / 1000.0, 0xdf, tmp1->alias);
324 mb_lcdPuts(lcdHandle, buf);
325 }
326 #endif
327
328 /* 317 /*
329 * Timed schedulers 318 * Timed schedulers
330 */ 319 */
331 now = time(NULL); 320 now = time(NULL);
332 if (now != last) { 321 if (now != last) {
333 last = now; 322 last = now;
334 seconds++; 323 seconds++;
324
325 #ifdef HAVE_WIRINGPI_H
326 if ((seconds % 5) == 0) {
327
328 if (lcdshow == 0) {
329 lcdPosition(lcdHandle, 0, 0);
330 snprintf(buf, 17, " ThermFerm ");
331 mb_lcdPuts(lcdHandle, buf);
332 lcdPosition(lcdHandle, 0, 1);
333 snprintf(buf, 17, " Version %s ", VERSION);
334 mb_lcdPuts(lcdHandle, buf);
335 lcdshow++;
336 } else if (lcdshow == 1) {
337 tm = localtime(&now);
338 lcdPosition(lcdHandle, 0, 0);
339 snprintf(buf, 17, " %02d-%02d-%04d ", tm->tm_mday, tm->tm_mon + 1, tm->tm_year + 1900);
340 mb_lcdPuts(lcdHandle, buf);
341 lcdPosition(lcdHandle, 0, 1);
342 snprintf(buf, 17, " %02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec);
343 mb_lcdPuts(lcdHandle, buf);
344 lcdshow++;
345 } else {
346 lcdPosition(lcdHandle, 0, 0);
347 tmp1 = Config.w1therms;
348 snprintf(buf, 17, "%5.2f %cC %s ", tmp1->lastval / 1000.0, 0xdf, tmp1->alias);
349 mb_lcdPuts(lcdHandle, buf);
350 temp = tmp1->lastval;
351 tmp1 = tmp1->next;
352 lcdPosition(lcdHandle, 0, 1);
353 snprintf(buf, 17, "%5.2f %cC %s ", tmp1->lastval / 1000.0, 0xdf, tmp1->alias);
354 mb_lcdPuts(lcdHandle, buf);
355 lcdshow = 0;
356 }
357 }
358 #endif
335 359
336 if (seconds == 60) { 360 if (seconds == 60) {
337 seconds = 0; 361 seconds = 0;
338 362
339 if (Config.w1therms) { 363 if (Config.w1therms) {
346 } 370 }
347 } 371 }
348 372
349 for (unit = Config.units; unit; unit = unit->next) { 373 for (unit = Config.units; unit; unit = unit->next) {
350 if (unit->mode != UNITMODE_OFF) { 374 if (unit->mode != UNITMODE_OFF) {
351 snprintf(buf, 1023, "%s,%.3f,%.3f,Target,Heater,Cooler,Fan,Door", 375
352 UNITMODE[unit->mode], unit->air_temperature / 1000.0, unit->beer_temperature / 1000.0); 376 snprintf(target, 39, "NA");
377 snprintf(heater, 39, "NA");
378 snprintf(cooler, 39, "NA");
379 snprintf(fan, 39, "NA");
380 snprintf(door, 39, "NA");
381
382 if (unit->mode == UNITMODE_BEER)
383 snprintf(target, 39, "%.1f", unit->beer_set);
384 else if (unit->mode == UNITMODE_FRIDGE)
385 snprintf(target, 39, "%.1f", unit->fridge_set);
386
387 if (unit->io1_address) {
388 if (unit->heater_available) {
389
390 }
391 if (unit->cooler_available) {
392
393 }
394 }
395 if (unit->io2_address) {
396 if (unit->fan_available) {
397
398 }
399 }
400
401 snprintf(buf, 1023, "%s,%.3f,%.3f,%s,%s,%s,%s,%s",
402 UNITMODE[unit->mode], unit->air_temperature / 1000.0,
403 unit->beer_temperature / 1000.0, target, heater, cooler, fan, door);
353 filename = xstrcpy(unit->name); 404 filename = xstrcpy(unit->name);
354 filename = xstrcat(filename, (char *)".log"); 405 filename = xstrcat(filename, (char *)".log");
355 logger(filename, buf); 406 logger(filename, buf);
356 free(filename); 407 free(filename);
357 filename = NULL; 408 filename = NULL;

mercurial