Exemplo n.º 1
0
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)")
Exemplo n.º 2
0
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)")