def run(self): self.chamber_target_temp = self.get_target_temp() pid = ChamberSetpointPID(self.p, self.i, self.d) while self.is_running(): temp = self.get_temp() target_temp = self.get_target_temp() chamber_temp = self.get_chamber_temp() self.chamber_target_temp = target_temp + round(pid.update(temp, self.get_target_temp()), 1) print("Chamber Target Temp: %s", self.chamber_target_temp) cbpi.save_to_file(self.fermenter_id, self.chamber_target_temp, prefix="chamber_target") if chamber_temp is None: self.heater_off() elif temp < target_temp and chamber_temp < self.chamber_target_temp: self.heater_on() elif temp >= target_temp or chamber_temp >= self.chamber_target_temp: self.heater_off() else: self.heater_off() if chamber_temp is None: self.cooler_off() elif temp > target_temp and chamber_temp > self.chamber_target_temp: self.cooler_on() elif temp <= target_temp or chamber_temp <= self.chamber_target_temp: self.cooler_off() else: self.cooler_off() self.sleep(5)
def read_target_temps(api): """ background process that reads all passive sensors in interval of 1 second :return: None """ result = {} for key, value in cbpi.cache.get("fermenter").iteritems(): cbpi.save_to_file(key, value.target_temp, prefix="fermenter")