diff --git a/moonraker/moonraker.py b/moonraker/moonraker.py index 6966400..08b8fe7 100644 --- a/moonraker/moonraker.py +++ b/moonraker/moonraker.py @@ -189,7 +189,7 @@ class Server: request.notify(ServerError("Klippy Disconnected", 503)) self.pending_requests = {} logging.info("Klippy Connection Removed") - self.send_event("server:klippy_state_changed", "disconnect") + self.send_event("server:klippy_disconnect") self.ioloop.call_later(1., self._connect_klippy) async def _initialize(self): @@ -250,7 +250,7 @@ class Server: logging.info("Klippy ready") self.klippy_state = "ready" self.init_list.append('klippy_ready') - self.send_event("server:klippy_state_changed", "ready") + self.send_event("server:klippy_ready") else: msg = result.get('state_message', "Klippy Not Ready") logging.info("\n" + msg) @@ -298,7 +298,7 @@ class Server: if state is not None: if state == "shutdown": logging.info("Klippy has shutdown") - self.send_event("server:klippy_state_changed", "shutdown") + self.send_event("server:klippy_shutdown") self.klippy_state = state self.send_event("server:status_update", status) diff --git a/moonraker/plugins/paneldue.py b/moonraker/plugins/paneldue.py index c3c7108..609c197 100644 --- a/moonraker/plugins/paneldue.py +++ b/moonraker/plugins/paneldue.py @@ -177,7 +177,11 @@ class PanelDue: # Register server events self.server.register_event_handler( - "server:klippy_state_changed", self.handle_klippy_state) + "server:klippy_ready", self._process_klippy_ready) + self.server.register_event_handler( + "server:klippy_shutdown", self._process_klippy_shutdown) + self.server.register_event_handler( + "server:klippy_disconnect", self._process_klippy_disconnect) self.server.register_event_handler( "server:status_update", self.handle_status_update) self.server.register_event_handler( @@ -211,15 +215,6 @@ class PanelDue: 'M999': lambda args: "FIRMWARE_RESTART" } - async def handle_klippy_state(self, state): - # XXX - Add a "connected" state and send a "C" to paneldue? - if state == "ready": - await self._process_klippy_ready() - elif state == "shutdown": - await self._process_klippy_shutdown() - elif state == "disconnect": - await self._process_klippy_disconnect() - async def _process_klippy_ready(self): # Request "info" and "configfile" status retries = 10 diff --git a/moonraker/plugins/temperature_store.py b/moonraker/plugins/temperature_store.py index f36a4ae..ff2d3b7 100644 --- a/moonraker/plugins/temperature_store.py +++ b/moonraker/plugins/temperature_store.py @@ -24,17 +24,14 @@ class TemperatureStore: self.server.register_event_handler( "server:status_update", self._set_current_temps) self.server.register_event_handler( - "server:klippy_state_changed", self._init_sensors) + "server:klippy_ready", self._init_sensors) # Register endpoint self.server.register_endpoint( "/server/temperature_store", "server_temperature_store", ['GET'], self._handle_temp_store_request) - async def _init_sensors(self, state): - if state != "ready": - return - + async def _init_sensors(self): klippy_apis = self.server.lookup_plugin('klippy_apis') # Fetch sensors try: diff --git a/moonraker/websockets.py b/moonraker/websockets.py index 9c96e6b..ed4b9f6 100644 --- a/moonraker/websockets.py +++ b/moonraker/websockets.py @@ -11,6 +11,9 @@ from tornado.ioloop import IOLoop from tornado.websocket import WebSocketHandler, WebSocketClosedError from utils import ServerError +class Sentinel: + pass + class JsonRPC: def __init__(self): self.methods = {} @@ -105,7 +108,7 @@ class WebsocketManager: # Register events self.server.register_event_handler( - "server:klippy_state_changed", self._handle_klippy_state_changed) + "server:klippy_disconnect", self._handle_klippy_disconnect) self.server.register_event_handler( "server:gcode_response", self._handle_gcode_response) self.server.register_event_handler( @@ -113,8 +116,8 @@ class WebsocketManager: self.server.register_event_handler( "file_manager:filelist_changed", self._handle_filelist_changed) - async def _handle_klippy_state_changed(self, state): - await self.notify_websockets("klippy_state_changed", state) + async def _handle_klippy_disconnect(self): + await self.notify_websockets("klippy_disconnected") async def _handle_gcode_response(self, response): await self.notify_websockets("gcode_response", response) @@ -171,11 +174,11 @@ class WebsocketManager: if old_ws is not None: logging.info(f"Websocket Removed: {ws.uid}") - async def notify_websockets(self, name, data): - notification = json.dumps({ - 'jsonrpc': "2.0", - 'method': "notify_" + name, - 'params': [data]}) + async def notify_websockets(self, name, data=Sentinel): + msg = {'jsonrpc': "2.0", 'method': "notify_" + name} + if data != Sentinel: + msg['params'] = [data] + notification = json.dumps(msg) async with self.ws_lock: for ws in list(self.websockets.values()): try: