Im trying to refresh the metadata of gcode files with a little Python script (more or less shamelessly copied from moontest):
#!/usr/bin/python3
import argparse
import asyncio
import json
import pathlib
SOCKET_FILE = "~/printer_data/comms/moonraker.sock"
async def send_rpc_request(sockpath, filename):
"""Send an RPC request to the Moonraker server."""
rpc_message = {
"jsonrpc": "2.0",
"method": "server.files.metascan",
"params": {
"filename": filename
},
"id": 354789464
}
message = json.dumps(rpc_message).encode() + b"\x03"
print("Request:", message)
reader, writer = await asyncio.open_unix_connection(sockpath)
try:
writer.write(message)
await writer.drain()
response = await reader.readuntil(b'\x03')
print("Response:", response.decode().strip())
finally:
writer.close()
await writer.wait_closed()
def main():
parser = argparse.ArgumentParser(description="Send RPC to Moonraker via Unix socket")
parser.add_argument("filename", help="Name of the file to be scanned")
args = parser.parse_args()
sockpath = pathlib.Path(SOCKET_FILE).expanduser()
asyncio.run(send_rpc_request(sockpath, args.filename))
if __name__ == "__main__":
main()
Apparently I’m messing it up somewhere, as I do not get the intended response:
$ python refresh_meta.py external/test.gcode
Request: b'{"jsonrpc": "2.0", "method": "server.files.metascan", "params": {"filename": "external/test.gcode"}, "id": 354789464}\x03'
Response: {"jsonrpc":"2.0","method":"notify_proc_stat_update","params":[{"moonraker_stats":{"time":1733856121.3238893,"cpu_usage":5.82,"memory":55000,"mem_units":"kB"},"cpu_temp":49.229,"network":{"lo":{"rx_bytes":63185971,"tx_bytes":63185971,"rx_packets":99095,"tx_packets":99095,"rx_errs":0,"tx_errs":0,"rx_drop":0,"tx_drop":0,"bandwidth":20513.49},"end0":{"rx_bytes":3489977,"tx_bytes":29563572,"rx_packets":45785,"tx_packets":42069,"rx_errs":0,"tx_errs":0,"rx_drop":3386,"tx_drop":0,"bandwidth":8035.96},"can0":{"rx_bytes":402083,"tx_bytes":21327,"rx_packets":55654,"tx_packets":3581,"rx_errs":0,"tx_errs":0,"rx_drop":0,"tx_drop":0,"bandwidth":143.86},"wlan0":{"rx_bytes":0,"tx_bytes":0,"rx_packets":0,"tx_packets":0,"rx_errs":0,"tx_errs":0,"rx_drop":0,"tx_drop":0,"bandwidth":0.0}},"system_cpu_usage":{"cpu":24.81,"cpu0":10.31,"cpu1":7.14,"cpu2":73.74,"cpu3":6.06},"system_memory":{"total":940788,"available":527248,"used":413540},"websocket_connections":4}]}
@Arksine, I’d appreciate your guidance.
Edit:
Shame on me - moonraker.log attached
moonraker(15).log (26.4 KB)