|
- from modules import cbpi
- from modules.core.controller import KettleController, FermenterController
- from modules.core.props import Property
-
-
- @cbpi.fermentation_controller
- class Hysteresis(FermenterController):
-
- heater_offset_min = Property.Number("Heater Offset ON", True, 0, description="Offset as decimal number when the heater is switched on. Should be greater then 'Heater Offset OFF'. For example a value of 2 switches on the heater if the current temperature is 2 degrees below the target temperature")
- heater_offset_max = Property.Number("Heater Offset OFF", True, 0, description="Offset as decimal number when the heater is switched off. Should be smaller then 'Heater Offset ON'. For example a value of 1 switches off the heater if the current temperature is 1 degree below the target temperature")
- cooler_offset_min = Property.Number("Cooler Offset ON", True, 0, description="Offset as decimal number when the cooler is switched on. Should be greater then 'Cooler Offset OFF'. For example a value of 2 switches on the cooler if the current temperature is 2 degrees above the target temperature")
- cooler_offset_max = Property.Number("Cooler Offset OFF", True, 0, description="Offset as decimal number when the cooler is switched off. Should be less then 'Cooler Offset ON'. For example a value of 1 switches off the cooler if the current temperature is 1 degree above the target temperature")
-
- def stop(self):
- super(FermenterController, self).stop()
-
- self.heater_off()
- self.cooler_off()
-
- def run(self):
- while self.is_running():
-
- try:
-
- target_temp = self.get_target_temp()
- temp = self.get_temp()
-
- if target_temp is not None and temp is not None:
-
- if temp + float(self.heater_offset_min) <= target_temp:
- self.heater_on(100)
-
- if temp + float(self.heater_offset_max) >= target_temp:
- self.heater_off()
-
- if temp >= target_temp + float(self.cooler_offset_min):
- self.cooler_on(100)
-
- if temp <= target_temp + float(self.cooler_offset_max):
- self.cooler_off()
-
- except Exception as e:
- cbpi.notify("Fermentation Loop Stuck", "Please check the CraftBeerPi system.\r\nError %s" % (str(e)), type="danger", timeout=None)
- self.sleep(60)
-
- self.sleep(1)
|