class FermentationController:
    def __init__(self, time_units=1):
        self.time_units = time_units
        self.temp_reader = TempReader()
        self.comparer = TempComparer()
        self.state = ControllerState.CORRECT
        self.controller_thread = Thread(target=self.main_loop)
        self.state_controller = StateController()
        self.database_client = InfluxDBClient(host="localhost",
                                              port=8086,
                                              database="ferm_data")

    def write_to_database(self, current_temp, current_state):
        new_point = [{
            "measurement": "ferm-temp",
            "tags": {
                "recipe-id": 1,
            },
            "time": datetime.datetime.now().isoformat(),
            "fields": {
                "temp-reading": current_temp,
                "hold-temp": self.comparer.get_hold_temp(),
                "state": current_state.name
            }
        }]
        return self.database_client.write_points(new_point)

    def set_step(self, step):
        self.comparer.set_hold_temp(step["hold_temp"])
        self.comparer.set_temp_range(step["temp_range"])
        return self.get_step()

    def update_step(self, update):
        return self.get_step()

    def get_step(self):
        return {
            "hold_temp": self.comparer.get_hold_temp(),
            "temp_range": self.comparer.get_temp_range()
        }

    def run(self):
        print("Running")
        try:
            self.controller_thread.start()
            return True
        except RuntimeError:
            return False

    def main_loop(self):
        print("main loop")
        while True:
            current_temp = self.temp_reader.get_current_temp()
            new_state = self.comparer.compare_temps(current_temp, self.state)
            self.state = new_state
            self.state_controller.set_state(self.state)
            self.write_to_database(current_temp, self.state)
            print(current_temp, self.state)
            time.sleep(self.time_units)
Exemplo n.º 2
0
 def draw(self, frame: Frame):
     frame.add_line_at(self.x, self.y, list("Controls:"))
     if StateController.get_mode() == "COMMAND":
         frame.add_line_at(self.x, self.y + 1, list("q: EXIT"))
         frame.add_line_at(self.x, self.y + 2, list("i: INSERT mode"))
         frame.add_line_at(self.x, self.y + 3, list("s: SAVE"))
     elif StateController.get_mode() == "INSERT":
         frame.add_line_at(self.x, self.y + 1, list("Backspace: "))
         frame.add_line_at(self.x, self.y + 2, list(" COMMAND mode"))
         frame.add_line_at(self.x, self.y + 3, list("OTHER: insert char"))
 def __init__(self, time_units=1):
     self.time_units = time_units
     self.temp_reader = TempReader()
     self.comparer = TempComparer()
     self.state = ControllerState.CORRECT
     self.controller_thread = Thread(target=self.main_loop)
     self.state_controller = StateController()
     self.database_client = InfluxDBClient(host="localhost",
                                           port=8086,
                                           database="ferm_data")
Exemplo n.º 4
0
class App():
    """
    MAIN CLASS
    """
    def __init__(self):
        """
        init game
        :return:
        """
        self.running = True
        self._display_surf = None
        self.fps_limit = 60
        self.clock = None
        self._state_controller = None
        self.size = self.weight, self.height = 640, 630

    def on_init(self):
        """
        :return:
        """
        pygame.init()
        pygame.display.set_caption('PendoMotion')
        self.clock = pygame.time.Clock()
        self._display_surf = pygame.display.set_mode(self.size)
        self.running = True
        self._state_controller = StateController(self, self._display_surf)

    @staticmethod
    def on_clean_up():
        """

        :return:
        """
        pygame.quit()

    def on_execute(self):
        """

        :return:
        """
        if self.on_init():
            self.running = False

        while self.running:
            self.clock.tick(self.fps_limit)
            self._state_controller.state_handler()

        self.on_clean_up()
Exemplo n.º 5
0
 def on_init(self):
     """
     :return:
     """
     pygame.init()
     pygame.display.set_caption('PendoMotion')
     self.clock = pygame.time.Clock()
     self._display_surf = pygame.display.set_mode(self.size)
     self.running = True
     self._state_controller = StateController(self, self._display_surf)
Exemplo n.º 6
0
    def insert_mode_loop(self):
        StateController.set_mode("INSERT")

        while True:
            self.view_controller.draw()

            sign = Controller.get_input()
            if sign == "\x7f":  # Backspace
                StateController.set_mode("COMMAND")
                return  # Return to COMMAND mode
            elif sign == "\x1b":  # Arrow
                self.get_input()  # Skip "["
                sign = self.get_input()
                if sign == "D":
                    self.canvas.move_cursor_left()
                elif sign == "C":
                    self.canvas.move_cursor_right()
                elif sign == "B":
                    self.canvas.move_cursor_down()
                elif sign == "A":
                    self.canvas.move_cursor_up()
            else:
                self.canvas.set_char(sign)
Exemplo n.º 7
0
 def draw(self, frame: Frame):
     frame.add_line_at(self.x, self.y, list("MODE:"))
     frame.add_line_at(self.x, self.y + 1, list(StateController.get_mode()))
Exemplo n.º 8
0
 def test_set_mode(self):
     StateController.set_mode("INSERT")
     self.assertEqual("INSERT", StateController._mode,
                      "set_mode() set wrong value")
Exemplo n.º 9
0
 def test_get_mode(self):
     self.assertEqual(StateController.get_mode(), StateController._mode,
                      "get_mode() returned wrong value")
Exemplo n.º 10
0
 def test_set_system(self):
     StateController.set_system("WINDOWS")
     self.assertEqual("WINDOWS", StateController._system,
                      "set_system() set wrong value")
Exemplo n.º 11
0
 def test_get_system(self):
     self.assertEqual(StateController.get_system(), StateController._system,
                      "get_system() returned wrong value")
Exemplo n.º 12
0
def getStateMostNumberOfAirports():
    stateController = StateController()
    response = stateController.getStateMostNumberOfAirports()

    return Response(json.dumps(response), mimetype='application/json')