Skip to content

Commit

Permalink
data_store: add support for storing gcode commands
Browse files Browse the repository at this point in the history
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
  • Loading branch information
Arksine committed Jan 12, 2021
1 parent 8c365c6 commit d70bd8d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
4 changes: 4 additions & 0 deletions moonraker/moonraker.py
Expand Up @@ -387,6 +387,10 @@ async def make_request(self, web_request):
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):
Expand Down
20 changes: 15 additions & 5 deletions moonraker/plugins/data_store.py
Expand Up @@ -87,7 +87,7 @@ async def _init_sensors(self):
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),
Expand All @@ -112,15 +112,25 @@ async def close(self):

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)

0 comments on commit d70bd8d

Please sign in to comment.