You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.2KB

  1. from modules import cbpi
  2. from modules.core.controller import KettleController, FermenterController
  3. from modules.core.props import Property
  4. @cbpi.fermentation_controller
  5. class Hysteresis(FermenterController):
  6. heater_offset_min = Property.Number("Heater Offset min", True, 0)
  7. heater_offset_max = Property.Number("Heater Offset max", True, 0)
  8. cooler_offset_min = Property.Number("Cooler Offset min", True, 0)
  9. cooler_offset_max = Property.Number("Cooler Offset max", True, 0)
  10. def stop(self):
  11. super(FermenterController, self).stop()
  12. self.heater_off()
  13. self.cooler_off()
  14. def run(self):
  15. while self.is_running():
  16. target_temp = self.get_target_temp()
  17. temp = self.get_temp()
  18. if temp + float(self.heater_offset_min) < target_temp:
  19. self.heater_on(100)
  20. if temp + float(self.heater_offset_max) > target_temp:
  21. self.heater_off()
  22. if temp > target_temp + float(self.cooler_offset_min):
  23. self.cooler_on(100)
  24. if temp < target_temp + float(self.cooler_offset_max):
  25. self.cooler_off()
  26. self.sleep(1)