diff --git a/ks_includes/printer.py b/ks_includes/printer.py index abc73b0d..b8fd09cc 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -313,14 +313,15 @@ class Printer: if "heater_bed" in self.devices: return True - def init_temp_store(self, result): - for dev in result: - self.tempstore[dev] = {} - if "targets" in result[dev]: - self.tempstore[dev]["targets"] = result[dev]["targets"] - if "temperatures" in result[dev]: - self.tempstore[dev]["temperatures"] = result[dev]["temperatures"] - logging.info(f"Temp store: {list(self.tempstore)}") + def init_temp_store(self, tempstore): + if 'result' in tempstore: + if self.tempstore and list(self.tempstore) != list(tempstore['result']): + logging.debug("Tempstore has changed") + self.tempstore = tempstore['result'] + self.change_state(self.state) + else: + self.tempstore = tempstore['result'] + logging.info(f"Temp store: {list(self.tempstore)}") def config_section_exists(self, section): return section in self.get_config_section_list() diff --git a/screen.py b/screen.py index 365e2df4..aae587fa 100755 --- a/screen.py +++ b/screen.py @@ -612,8 +612,6 @@ class KlipperScreen(Gtk.Window): self.process_update("notify_busy", busy) def state_execute(self, callback): - self.reinit_count = 0 - self.init_printer() callback() def websocket_disconnected(self, msg): @@ -632,6 +630,8 @@ class KlipperScreen(Gtk.Window): self.close_screensaver() self.initialized = False self.printer_initializing(_("Klipper has disconnected"), remove=True) + self.reinit_count = 0 + self.init_printer() def state_error(self): self.close_screensaver() @@ -862,11 +862,9 @@ class KlipperScreen(Gtk.Window): self.printer_initializing("Error getting printer object data with extra items") GLib.timeout_add_seconds(3, self.init_printer) return - - tempstore = self.apiclient.send_request("server/temperature_store") - if tempstore is not False: - self.printer.init_temp_store(tempstore['result']) self.printer.process_update(data['result']['status']) + self.init_tempstore() + GLib.timeout_add_seconds(2, self.init_tempstore) # If devices changed it takes a while to register self.files.initialize() self.files.refresh_files() @@ -875,6 +873,9 @@ class KlipperScreen(Gtk.Window): self.initialized = True self.reinit_count = 0 + def init_tempstore(self): + self.printer.init_temp_store(self.apiclient.send_request("server/temperature_store")) + def base_panel_show_all(self): self.base_panel.show_macro_shortcut(self._config.get_main_config().getboolean('side_macro_shortcut', True)) self.base_panel.show_heaters(True)