moonraker tempstore takes a while to register device changes, call it again after a few seconds

with this change there should be no need to reinit on every state change, this was the cause of missing devices after init
This commit is contained in:
alfrix 2022-12-03 21:13:47 -03:00
parent c714553da1
commit 72599b5ba7
2 changed files with 16 additions and 14 deletions

View File

@ -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()

View File

@ -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)