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)
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")
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()
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)
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)
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()))
def test_set_mode(self): StateController.set_mode("INSERT") self.assertEqual("INSERT", StateController._mode, "set_mode() set wrong value")
def test_get_mode(self): self.assertEqual(StateController.get_mode(), StateController._mode, "get_mode() returned wrong value")
def test_set_system(self): StateController.set_system("WINDOWS") self.assertEqual("WINDOWS", StateController._system, "set_system() set wrong value")
def test_get_system(self): self.assertEqual(StateController.get_system(), StateController._system, "get_system() returned wrong value")
def getStateMostNumberOfAirports(): stateController = StateController() response = stateController.getStateMostNumberOfAirports() return Response(json.dumps(response), mimetype='application/json')