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:
parent
c714553da1
commit
72599b5ba7
@ -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()
|
||||
|
13
screen.py
13
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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user