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; |