thermferm/thermferm.c

changeset 195
b34a1b2421fb
parent 194
9eaaba49450f
child 198
20716bcff2b0
equal deleted inserted replaced
194:9eaaba49450f 195:b34a1b2421fb
51 int lcdupdate; 51 int lcdupdate;
52 #ifndef HAVE_WIRINGPI_H 52 #ifndef HAVE_WIRINGPI_H
53 pthread_t threads[4]; 53 pthread_t threads[4];
54 #endif 54 #endif
55 extern const char UNITMODE[5][8]; 55 extern const char UNITMODE[5][8];
56 extern const char PROFSTATE[4][6];
56 57
57 58
58 int server(void); 59 int server(void);
59 void help(void); 60 void help(void);
60 void die(int); 61 void die(int);
307 for (unit = Config.units; unit; unit = unit->next) { 308 for (unit = Config.units; unit; unit = unit->next) {
308 /* 309 /*
309 * Safety, turn everything off 310 * Safety, turn everything off
310 */ 311 */
311 unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = 0; 312 unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = 0;
312 if (unit->profile && (int)unit->prof_started && (unit->mode == UNITMODE_PROFILE)) { 313 if (unit->mode == UNITMODE_PROFILE) {
313 syslog(LOG_NOTICE, "Starting unit %s profile %s", unit->name, unit->profile); 314 if (unit->profile)
315 syslog(LOG_NOTICE, "Starting unit %s in profile mode, no profile defined.", unit->name);
316 else
317 syslog(LOG_NOTICE, "Starting unit %s in profile state %s. Target %.1f degrees", unit->name, PROFSTATE[unit->prof_state], unit->prof_target);
314 } else if (unit->mode == UNITMODE_BEER) { 318 } else if (unit->mode == UNITMODE_BEER) {
315 syslog(LOG_NOTICE, "Starting unit %s beer cooler at %.1f degrees", unit->name, unit->beer_set); 319 syslog(LOG_NOTICE, "Starting unit %s beer cooler at %.1f degrees", unit->name, unit->beer_set);
316 } else if (unit->mode == UNITMODE_FRIDGE) { 320 } else if (unit->mode == UNITMODE_FRIDGE) {
317 syslog(LOG_NOTICE, "Starting unit %s as refridgerator at %.1f degrees", unit->name, unit->fridge_set); 321 syslog(LOG_NOTICE, "Starting unit %s as refridgerator at %.1f degrees", unit->name, unit->fridge_set);
318 } else if (unit->mode == UNITMODE_NONE) { 322 } else if (unit->mode == UNITMODE_NONE) {
529 Out = (10.0*P_err) + (0.1*unit->PID_I_err) + (5*D_err); 533 Out = (10.0*P_err) + (0.1*unit->PID_I_err) + (5*D_err);
530 // Kp 0.1 Ki 0.3 Kd 0.02 534 // Kp 0.1 Ki 0.3 Kd 0.02
531 if (debug) 535 if (debug)
532 fprintf(stdout, "sp=%.2f pv=%.2f err_old=%.2f err=%.2f P_err=%.2f I_err=%.2f D_err=%.2f Out=%.2f\n", 536 fprintf(stdout, "sp=%.2f pv=%.2f err_old=%.2f err=%.2f P_err=%.2f I_err=%.2f D_err=%.2f Out=%.2f\n",
533 sp, pv, unit->PID_err_old, err, P_err, unit->PID_I_err, D_err, Out); 537 sp, pv, unit->PID_err_old, err, P_err, unit->PID_I_err, D_err, Out);
538 syslog(LOG_NOTICE, "sp=%.2f pv=%.2f err_old=%.2f err=%.2f P_err=%.2f I_err=%.2f D_err=%.2f Out=%.2f",
539 sp, pv, unit->PID_err_old, err, P_err, unit->PID_I_err, D_err, Out);
534 if (unit->heater_address) { 540 if (unit->heater_address) {
535 if (Out >= 2) 541 if (Out >= 2)
536 unit->heater_state = 100; 542 unit->heater_state = 100;
537 else 543 else
538 unit->heater_state = 0; 544 unit->heater_state = 0;

mercurial