From 904dd24c104a4a2b4a29831b64c8029a2bdf7b2f Mon Sep 17 00:00:00 2001 From: alfrix Date: Sun, 4 Dec 2022 12:22:06 -0300 Subject: [PATCH] tempstore get the max length configured in moonraker --- ks_includes/printer.py | 14 +++++++++++--- screen.py | 7 +++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ks_includes/printer.py b/ks_includes/printer.py index 5e57cf79..be7b6bbe 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -24,6 +24,7 @@ class Printer: self.tempstore = {} self.busy_cb = None self.busy = None + self.temperature_store_size = None def reset(self): self.config = None @@ -42,6 +43,7 @@ class Printer: self.tempstore = None self.busy_cb = None self.busy = None + self.temperature_store_size = None def reinit(self, printer_info, data): self.config = data['configfile']['config'] @@ -56,6 +58,7 @@ class Printer: self.busy = False if not self.store_timeout: self.store_timeout = GLib.timeout_add_seconds(1, self._update_temp_store) + self.tempstore_size = 1200 for x in self.config.keys(): if x[:8] == "extruder": @@ -320,6 +323,12 @@ class Printer: self.change_state(self.state) else: self.tempstore = tempstore['result'] + for device in self.tempstore: + for x in self.tempstore[device]: + length = len(self.tempstore[device][x]) + if length < self.tempstore_size: + for i in range(1, self.tempstore_size - length): + self.tempstore[device][x].insert(0, 0) logging.info(f"Temp store: {list(self.tempstore)}") def config_section_exists(self, section): @@ -336,10 +345,9 @@ class Printer: return False for device in self.tempstore: for x in self.tempstore[device]: - if len(self.tempstore[device][x]) >= 1200: - self.tempstore[device][x].pop(0) + self.tempstore[device][x].pop(0) temp = self.get_dev_stat(device, x[:-1]) if temp is None: temp = 0 - self.tempstore[device][x].append(round(temp, 2)) + self.tempstore[device][x].append(temp) return True diff --git a/screen.py b/screen.py index c609eedb..aa1e1b7a 100755 --- a/screen.py +++ b/screen.py @@ -886,6 +886,13 @@ class KlipperScreen(Gtk.Window): def init_tempstore(self): self.printer.init_temp_store(self.apiclient.send_request("server/temperature_store")) + server_config = self.apiclient.send_request("server/config") + if server_config: + try: + self.printer.tempstore_size = server_config["result"]["config"]["data_store"]["temperature_store_size"] + logging.info(f"Temperature store size: {self.printer.tempstore_size}") + except KeyError: + logging.error("Couldn't get the temperature store size") def base_panel_show_all(self): self.base_panel.show_macro_shortcut(self._config.get_main_config().getboolean('side_macro_shortcut', True))