From 088a6deabddc60303224574054bfb71084be946f Mon Sep 17 00:00:00 2001 From: alfrix Date: Sat, 5 Mar 2022 11:33:24 -0300 Subject: [PATCH] splash_screen: allow power_devices to be configured --- docs/Configuration.md | 4 +++ panels/splash_screen.py | 61 +++++++++++++++++++++++------------------ 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/docs/Configuration.md b/docs/Configuration.md index 06ccea00..c13b0368 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -57,6 +57,10 @@ z_babystep_values: 0.01, 0.05 # the values configured in the UI will not be used. move_speed_xy: 500 move_speed_z: 300 + +# Define one or more moonraker power devices that turn on this printer (CSV list) +# Default is the printer name +power_devices: example1, example2 ``` ## Z probe calibrate Option diff --git a/panels/splash_screen.py b/panels/splash_screen.py index 1dfdfa52..2d40a301 100644 --- a/panels/splash_screen.py +++ b/panels/splash_screen.py @@ -77,39 +77,48 @@ class SplashScreenPanel(ScreenPanel): self.labels['power'] = self._gtk.ButtonImage("shutdown", _("Power On Printer"), "color3") self.clear_action_bar() - - if self._printer is not None: - logging.debug("Connected to %s", self._screen.connected_printer) - connecting = self._screen.connecting_to_printer - if connecting is not None: - printer = connecting - else: - printer = None - logging.debug("Connecting to %s", connecting) - devices = self._printer.get_power_devices() - logging.debug("Power devices: %s", devices) - for device in devices: - if printer == device: - logging.info("Found %s in power devices, Adding power button", printer) - self.labels['actions'].add(self.labels['power']) - self.labels['power'].connect("clicked", self.power_on, device) - if self._screen.printer.get_power_device_status(device) == "off": - logging.info("Printer is OFF") - else: - logging.info("Printer is ON") - break - else: - logging.info("%s not found in power devices", printer) + self.search_power_devices() self.labels['actions'].add(self.labels['restart']) self.labels['actions'].add(self.labels['firmware_restart']) self.labels['actions'].add(self.labels['menu']) self.labels['actions'].show_all() - def power_on(self, widget, device): + def search_power_devices(self): + if self._printer is not None: + power_devices = found_devices = [] + printer = self._screen.connecting_to_printer + logging.info("Connecting to %s", printer) + printer_cfg = self._config.get_printer_config(printer) + if printer_cfg is not None: + power_devices = printer_cfg.get("power_devices", "") + power_devices = [str(i.strip()) for i in power_devices.split(',')] + logging.info("%s associated power devices: %s", printer, power_devices) + devices = self._printer.get_power_devices() + logging.debug("Power devices: %s", devices) + if devices is not None: + for device in devices: + if device == printer: + found_devices.append(printer) + for power_device in power_devices: + if device == power_device: + found_devices.append(power_device) + if found_devices: + logging.info("Found %s, Adding power button", found_devices) + self.labels['actions'].add(self.labels['power']) + self.labels['power'].connect("clicked", self.power_on, found_devices) + else: + logging.info("%s power devices not found", printer) + + def power_on(self, widget, devices): _ = self.lang.gettext - self._screen.show_popup_message(_("Sending Power ON signal"), level=1) - self._screen._ws.klippy.power_device_on(device) + self._screen.show_popup_message(_("Sending Power ON signal to: %s") % devices, level=1) + for device in devices: + if self._screen.printer.get_power_device_status(device) == "off": + logging.info("%s is OFF, Sending Power ON signal", device) + self._screen._ws.klippy.power_device_on(device) + elif self._screen.printer.get_power_device_status(device) == "on": + logging.info("%s is ON", device) def firmware_restart(self, widget): self._screen._ws.klippy.restart_firmware()