From d70bd8d2e049ef0ad9c3af8d2f4887b6a6bb15a6 Mon Sep 17 00:00:00 2001 From: Arksine Date: Tue, 12 Jan 2021 12:30:34 -0500 Subject: [PATCH] data_store: add support for storing gcode commands Signed-off-by: Eric Callahan --- moonraker/moonraker.py | 4 ++++ moonraker/plugins/data_store.py | 20 +++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/moonraker/moonraker.py b/moonraker/moonraker.py index 28e5577..c96dda4 100755 --- a/moonraker/moonraker.py +++ b/moonraker/moonraker.py @@ -387,6 +387,10 @@ class Server: if rpc_method == "objects/subscribe": return await self._request_subscripton(web_request) else: + if rpc_method == "gcode/script": + script = web_request.get_str('script', "") + data_store = self.lookup_plugin('data_store') + data_store.store_gcode_command(script) return await self._request_standard(web_request) async def _request_subscripton(self, web_request): diff --git a/moonraker/plugins/data_store.py b/moonraker/plugins/data_store.py index 4a65a0a..6e6e5b3 100644 --- a/moonraker/plugins/data_store.py +++ b/moonraker/plugins/data_store.py @@ -87,7 +87,7 @@ class DataStore: def _set_current_temps(self, data): for sensor in self.temperature_store: if sensor in data: - last_temp, last_target, last_power = self.last_temps[sensor] + last_temp, last_target, last_power = self.last_temps[sensor] self.last_temps[sensor] = ( round(data[sensor].get('temperature', last_temp), 2), data[sensor].get('target', last_target), @@ -112,15 +112,25 @@ class DataStore: def _update_gcode_store(self, response): curtime = time.time() - self.gcode_queue.append({'message': response, 'time': curtime}) + self.gcode_queue.append( + {'message': response, 'time': curtime, 'type': "response"}) + + def store_gcode_command(self, script): + curtime = time.time() + for cmd in script.split('\n'): + cmd = cmd.strip() + if not cmd: + continue + self.gcode_queue.append( + {'message': script, 'time': curtime, 'type': "command"}) async def _handle_gcode_store_request(self, web_request): count = web_request.get_int("count", None) if count is not None: - res = list(self.gcode_queue)[-count:] + gc_responses = list(self.gcode_queue)[-count:] else: - res = list(self.gcode_queue) - return {'gcode_store': res} + gc_responses = list(self.gcode_queue) + return {'gcode_store': gc_responses} def load_plugin(config): return DataStore(config)