paneldue: use klippy_apis module
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
6fb4cdca62
commit
8840434c7c
@ -19,6 +19,8 @@ MIN_EST_TIME = 10.
|
|||||||
class PanelDueError(ServerError):
|
class PanelDueError(ServerError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
RESTART_GCODES = ["RESTART", "FIRMWARE_RESTART"]
|
||||||
|
|
||||||
class SerialConnection:
|
class SerialConnection:
|
||||||
def __init__(self, config, paneldue):
|
def __init__(self, config, paneldue):
|
||||||
self.ioloop = IOLoop.current()
|
self.ioloop = IOLoop.current()
|
||||||
@ -129,6 +131,7 @@ class PanelDue:
|
|||||||
self.ioloop = IOLoop.current()
|
self.ioloop = IOLoop.current()
|
||||||
self.ser_conn = SerialConnection(config, self)
|
self.ser_conn = SerialConnection(config, self)
|
||||||
self.file_manager = self.server.lookup_plugin('file_manager')
|
self.file_manager = self.server.lookup_plugin('file_manager')
|
||||||
|
self.klippy_apis = self.server.lookup_plugin('klippy_apis')
|
||||||
self.kinematics = "none"
|
self.kinematics = "none"
|
||||||
self.machine_name = config.get('machine_name', "Klipper")
|
self.machine_name = config.get('machine_name', "Klipper")
|
||||||
self.firmware_name = "Repetier | Klipper"
|
self.firmware_name = "Repetier | Klipper"
|
||||||
@ -208,18 +211,6 @@ class PanelDue:
|
|||||||
'M999': lambda args: "FIRMWARE_RESTART"
|
'M999': lambda args: "FIRMWARE_RESTART"
|
||||||
}
|
}
|
||||||
|
|
||||||
async def _klippy_request(self, command, args={}):
|
|
||||||
try:
|
|
||||||
result = await self.server.make_request(command, args)
|
|
||||||
except self.server.error as e:
|
|
||||||
script = args.get('script', "")
|
|
||||||
if script in ["RESTART", "FIRMWARE_RESTART"] and \
|
|
||||||
str(e) == "Klippy Disconnected":
|
|
||||||
result = "ok"
|
|
||||||
else:
|
|
||||||
raise PanelDueError(str(e)) from e
|
|
||||||
return result
|
|
||||||
|
|
||||||
async def handle_klippy_state(self, state):
|
async def handle_klippy_state(self, state):
|
||||||
# XXX - Add a "connected" state and send a "C" to paneldue?
|
# XXX - Add a "connected" state and send a "C" to paneldue?
|
||||||
if state == "ready":
|
if state == "ready":
|
||||||
@ -235,10 +226,10 @@ class PanelDue:
|
|||||||
printer_info = cfg_status = {}
|
printer_info = cfg_status = {}
|
||||||
while retries:
|
while retries:
|
||||||
try:
|
try:
|
||||||
printer_info = await self._klippy_request("info")
|
printer_info = await self.klippy_apis.get_klippy_info()
|
||||||
cfg_status = await self._klippy_request(
|
cfg_status = await self.klippy_apis.query_objects(
|
||||||
"objects/status", args={'configfile': []})
|
{'configfile': None})
|
||||||
except PanelDueError:
|
except self.server.error:
|
||||||
logging.exception("PanelDue initialization request failed")
|
logging.exception("PanelDue initialization request failed")
|
||||||
retries -= 1
|
retries -= 1
|
||||||
if not retries:
|
if not retries:
|
||||||
@ -247,7 +238,8 @@ class PanelDue:
|
|||||||
continue
|
continue
|
||||||
break
|
break
|
||||||
|
|
||||||
self.firmware_name = "Repetier | Klipper " + printer_info['version']
|
self.firmware_name = "Repetier | Klipper " + \
|
||||||
|
printer_info['software_version']
|
||||||
config = cfg_status.get('configfile', {}).get('config', {})
|
config = cfg_status.get('configfile', {}).get('config', {})
|
||||||
printer_cfg = config.get('printer', {})
|
printer_cfg = config.get('printer', {})
|
||||||
self.kinematics = printer_cfg.get('kinematics', "none")
|
self.kinematics = printer_cfg.get('kinematics', "none")
|
||||||
@ -262,7 +254,7 @@ class PanelDue:
|
|||||||
self.printer_state = {
|
self.printer_state = {
|
||||||
'gcode': {}, 'toolhead': {}, 'virtual_sdcard': {},
|
'gcode': {}, 'toolhead': {}, 'virtual_sdcard': {},
|
||||||
'fan': {}, 'display_status': {}, 'print_stats': {}}
|
'fan': {}, 'display_status': {}, 'print_stats': {}}
|
||||||
sub_args = {k: [] for k in self.printer_state.keys()}
|
sub_args = {k: None for k in self.printer_state.keys()}
|
||||||
self.extruder_count = 0
|
self.extruder_count = 0
|
||||||
self.heaters = []
|
self.heaters = []
|
||||||
for cfg in config:
|
for cfg in config:
|
||||||
@ -270,15 +262,17 @@ class PanelDue:
|
|||||||
self.extruder_count += 1
|
self.extruder_count += 1
|
||||||
self.printer_state[cfg] = {}
|
self.printer_state[cfg] = {}
|
||||||
self.heaters.append(cfg)
|
self.heaters.append(cfg)
|
||||||
sub_args[cfg] = []
|
sub_args[cfg] = None
|
||||||
elif cfg == "heater_bed":
|
elif cfg == "heater_bed":
|
||||||
self.printer_state[cfg] = {}
|
self.printer_state[cfg] = {}
|
||||||
self.heaters.append(cfg)
|
self.heaters.append(cfg)
|
||||||
sub_args[cfg] = []
|
sub_args[cfg] = None
|
||||||
try:
|
try:
|
||||||
await self._klippy_request("objects/subscription", args=sub_args)
|
status = await self.klippy_apis.subscribe_objects(sub_args)
|
||||||
except PanelDueError:
|
except self.server.error:
|
||||||
logging.exception("Unable to complete subscription request")
|
logging.exception("Unable to complete subscription request")
|
||||||
|
else:
|
||||||
|
self.printer_state.update(status)
|
||||||
self.is_shutdown = False
|
self.is_shutdown = False
|
||||||
self.is_ready = True
|
self.is_ready = True
|
||||||
|
|
||||||
@ -291,7 +285,11 @@ class PanelDue:
|
|||||||
self.is_ready = False
|
self.is_ready = False
|
||||||
|
|
||||||
async def handle_status_update(self, status):
|
async def handle_status_update(self, status):
|
||||||
self.printer_state.update(status)
|
for obj, items in status.items():
|
||||||
|
if obj in self.printer_state:
|
||||||
|
self.printer_state[obj].update(items)
|
||||||
|
else:
|
||||||
|
self.printer_state[obj] = items
|
||||||
|
|
||||||
def handle_paneldue_beep(self, frequency, duration):
|
def handle_paneldue_beep(self, frequency, duration):
|
||||||
duration = int(duration * 1000.)
|
duration = int(duration * 1000.)
|
||||||
@ -302,7 +300,7 @@ class PanelDue:
|
|||||||
async def process_line(self, line):
|
async def process_line(self, line):
|
||||||
# If we find M112 in the line then skip verification
|
# If we find M112 in the line then skip verification
|
||||||
if "M112" in line.upper():
|
if "M112" in line.upper():
|
||||||
await self._klippy_request("emergency_stop")
|
await self.klippy_apis.emergency_stop()
|
||||||
return
|
return
|
||||||
|
|
||||||
# Get line number
|
# Get line number
|
||||||
@ -369,11 +367,13 @@ class PanelDue:
|
|||||||
|
|
||||||
if not script:
|
if not script:
|
||||||
return
|
return
|
||||||
|
elif script in RESTART_GCODES:
|
||||||
|
await self.klippy_apis.do_restart(script)
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
args = {'script': script}
|
await self.klippy_apis.run_gcode(script)
|
||||||
await self._klippy_request("gcode/script", args=args)
|
except self.server.error:
|
||||||
except PanelDueError:
|
|
||||||
msg = f"Error executing script {script}"
|
msg = f"Error executing script {script}"
|
||||||
self.handle_gcode_response("!! " + msg)
|
self.handle_gcode_response("!! " + msg)
|
||||||
logging.exception(msg)
|
logging.exception(msg)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user