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)
Example #2
0
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")