class FilteringControll(object): def __init__(self, process): self.process = process self.serial_comunication = SerialCalls() def handle_states(self): state = self.process.state if state == STATES.get('open_pot_valve'): logger.info("[Filtering] Function defined: open_pot_valve") self.open_pot_valve() elif state == STATES.get('insert_water'): logger.info("[Filtering] Function defined: insert_water") self.insert_water() elif state == STATES.get('check_level'): logger.info("[Filtering] Function defined: check_level") self.check_level() elif state == STATES.get('stop_water'): logger.info("[Filtering] Function defined: stop_water") self.stop_water() def open_pot_valve(self): now = timezone.now() minutes = timedelta(minutes=1) if now > self.process.filtering_init + minutes: self.process.filtering_init = now logger.info("[Filtering] 20 minutes after filtering init") self.serial_comunication.activate_alarm() self.process.state = STATES.get('insert_water') self.process.save() logger.info("[Filtering] State changed! New state: insert_water") def insert_water(self): self.serial_comunication.insert_water() logger.info("[Filtering] Turn on the water") self.process.state = STATES.get('check_level') self.process.save() logger.info("[Filtering] State changed! New state: check_level") def check_level(self): logger.info("[Filtering] Checking level of pot2. . .") now = timezone.now() minutes = timedelta(minutes=10) if now > self.process.filtering_init + minutes: logger.info("[Filtering] Pot water level reached") self.process.state = STATES.get('stop_water') self.process.save() logger.info("[Filtering] State changed! New state: stop_water") else: logger.info("[Filtering] Pot water level not reached") def stop_water(self): self.serial_comunication.stop_water() logger.info("[Filtering] Closing valve") self.process.state = boiling.STATES.get('warm_must') self.process.save() self.serial_comunication.turn_on_resistor() logger.info("[Filtering] State changed! New state: warm_must " "(from boiling process)")
class PreBreweryControll(object): def __init__(self, process): self.process = process self.valve = Valve.objects.get(pk=1) self.serial_comunication = SerialCalls() def handle_states(self): state = self.process.state if state == STATES.get('insert_water'): logger.info("[PreBrewery] Function defined: insert_water") self.insert_water() elif state == STATES.get('waiting_water'): logger.info("[PreBrewery] Function defined: waiting_water") self.waiting_water() elif state == STATES.get('stop_water'): logger.info("[PreBrewery] Function defined: stop_water") self.stop_water() def insert_water(self): self.valve = Valve.objects.get(pk=1) self.serial_comunication.insert_water() self.valve.is_opened = 1 self.process.state = STATES.get('waiting_water') self.process.save() logger.info("[PreBrewery] State changed! New state: waiting_water") def waiting_water(self): now = timezone.now() waiting_time = timedelta(minutes=self.process.recipe.insert_water_time) if now > self.process.initial_datetime + waiting_time: logger.info("[PreBrewery] Pot water level reached") self.process.state = STATES.get('stop_water') self.process.save() logger.info("[PreBrewery] State changed! New state: stop_water") else: logger.info("[PreBrewery] Pot water level not reached") self.process.state = STATES.get('waiting_water') self.process.save() def stop_water(self): self.serial_comunication.stop_water() self.valve.is_opened = 0 self.process.state = brewery.STATES.get('initial_boiling') self.process.save() logger.info("[PreBrewery] State changed! New state: " "initial_boiling (from brewery process)")