Logging updates

This commit is contained in:
Jordan Ruthe 2020-11-03 15:12:42 -05:00
commit fedeaa1d85
4 changed files with 63 additions and 42 deletions

View File

@ -9,6 +9,7 @@ import requests
import websocket
import asyncio
import logging
logger = logging.getLogger("KlipperScreen.KlipperWebsocket")
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk, GLib
@ -30,6 +31,7 @@ api = {
"url": "/access/oneshot_token"
}
}
class KlippyWebsocket(threading.Thread):
_req_id = 0
connected = False
@ -50,7 +52,7 @@ class KlippyWebsocket(threading.Thread):
headers={"x-api-key":api_key}
)
if r.status_code != 200:
logging.info("Failed to retrieve oneshot token")
logger.info("Failed to retrieve oneshot token")
return
token = json.loads(r.content)['result']
@ -109,12 +111,12 @@ class KlippyWebsocket(threading.Thread):
def on_open(self, ws):
print("### ws open ###")
logging.info("### ws open ###")
logger.info("### ws open ###")
self.connected = True
def on_close(self, ws):
print("### ws closed ###")
logging.info("### ws closed ###")
logger.info("### ws closed ###")
self.connected = False
# TODO: Make non-blocking
@ -146,11 +148,13 @@ class MoonrakerApi:
self._ws = ws
def emergency_stop(self):
logger.info("Sending printer.emergency_stop")
self._ws.send_method(
"printer.emergency_stop"
)
def gcode_script(self, script, callback=None, *args):
logger.debug("Sending printer.gcode.script: %s", script)
self._ws.send_method(
"printer.gcode.script",
{"script": script},
@ -159,6 +163,7 @@ class MoonrakerApi:
)
def get_file_list(self, callback=None, *args):
logger.debug("Sending server.files.list")
self._ws.send_method(
"server.files.list",
{},
@ -167,6 +172,7 @@ class MoonrakerApi:
)
def get_file_metadata(self, filename, callback=None, *args):
logger.debug("Sending server.files.metadata: %s", filename)
self._ws.send_method(
"server.files.metadata",
{"filename": filename},
@ -175,12 +181,14 @@ class MoonrakerApi:
)
def object_subscription(self, updates):
logger.debug("Sending printer.objects.subscribe: %s", str(updates))
self._ws.send_method(
"printer.objects.subscribe",
updates
)
def print_cancel(self, callback=None, *args):
logger.debug("Sending printer.print.cancel")
self._ws.send_method(
"printer.print.cancel",
{},
@ -189,6 +197,7 @@ class MoonrakerApi:
)
def print_pause(self, callback=None, *args):
logger.debug("Sending printer.print.pause")
self._ws.send_method(
"printer.print.pause",
{},
@ -197,6 +206,7 @@ class MoonrakerApi:
)
def print_resume(self, callback=None, *args):
logger.debug("Sending printer.print.resume")
self._ws.send_method(
"printer.print.resume",
{},
@ -205,6 +215,7 @@ class MoonrakerApi:
)
def print_start(self, filename, callback=None, *args):
logger.debug("Sending printer.print.start")
self._ws.send_method(
"printer.print.start",
{
@ -216,6 +227,7 @@ class MoonrakerApi:
def temperature_set(self, heater, target, callback=None, *args):
if heater == "heater_bed":
logger.debug("Sending printer.gcode.script: %s", KlippyGcodes.set_bed_temp(target))
self._ws.send_method(
"printer.gcode.script",
{
@ -225,6 +237,8 @@ class MoonrakerApi:
*args
)
else:
logger.debug("Sending printer.gcode.script: %s",
KlippyGcodes.set_ext_temp(target, heater.replace("tool","")))
#TODO: Add max/min limits
self._ws.send_method(
"printer.gcode.script",
@ -236,6 +250,7 @@ class MoonrakerApi:
)
def set_bed_temp(self, target, callback=None, *args):
logger.debug("Sending set_bed_temp: %s", KlippyGcodes.set_bed_temp(target))
self._ws.send_method(
"printer.gcode.script",
{
@ -246,6 +261,7 @@ class MoonrakerApi:
)
def set_tool_temp(self, tool, target, callback=None, *args):
logger.debug("Sending set_tool_temp: %s", KlippyGcodes.set_ext_temp(target, tool))
self._ws.send_method(
"printer.gcode.script",
{
@ -256,11 +272,13 @@ class MoonrakerApi:
)
def restart(self):
logger.debug("Sending printer.restart")
self._ws.send_method(
"printer.restart"
)
def restart_firmware(self):
logger.debug("Sending printer.firmware_restart")
self._ws.send_method(
"printer.firmware_restart"
)

View File

@ -6,6 +6,9 @@ from gi.repository import Gtk, Gdk, GLib
from KlippyGtk import KlippyGtk
from KlippyGcodes import KlippyGcodes
import logging
logger = logging.getLogger("KlipperScreen.ZCalibratePanel")
class ZCalibratePanel:
_screen = None
labels = {}
@ -117,13 +120,15 @@ class ZCalibratePanel:
def move(self, widget, dir):
dist = str(self.distance) if dir == "+" else "-" + str(self.distance)
print("# Moving " + KlippyGcodes.probe_move(dist))
logger.info("# Moving %s", KlippyGcodes.probe_move(dist))
self._screen._ws.klippy.gcode_script(KlippyGcodes.probe_move(dist))
def abort(self, widget):
logger.info("Aborting Z calibrate")
self._screen._ws.klippy.gcode_script(KlippyGcodes.PROBE_ABORT)
self._screen._menu_go_back(widget)
def accept(self, widget):
logger.info("Accepting Z calibrate")
self._screen._ws.klippy.gcode_script(KlippyGcodes.PROBE_ACCEPT)
self._screen._ws.klippy.gcode_script(KlippyGcodes.SAVE_CONFIG)

View File

@ -39,11 +39,26 @@ from panels.system import *
from panels.temperature import *
from panels.zcalibrate import *
logging.basicConfig(filename="/tmp/KlipperScreen.log", level=logging.INFO)
# Create logging
logger = logging.getLogger('KlipperScreen')
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh = logging.FileHandler('/tmp/KlipperScreen.log')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
klipperscreendir = os.getcwd()
config = klipperscreendir + "/KlipperScreen.config"
logging.info("Config file: " + config)
logger.warning("test test")
logger.info("Config file: " + config)
class KlipperScreen(Gtk.Window):
""" Class for creating a screen for Klipper via HDMI """
@ -68,10 +83,15 @@ class KlipperScreen(Gtk.Window):
self.set_default_size(Gdk.Screen.get_width(Gdk.Screen.get_default()), Gdk.Screen.get_height(Gdk.Screen.get_default()))
self.set_resizable(False)
logging.info(str(Gdk.Screen.get_width(Gdk.Screen.get_default()))+"x"+str(Gdk.Screen.get_height(Gdk.Screen.get_default())))
logger.info("Screen resolution: %s", str(Gdk.Screen.get_width(Gdk.Screen.get_default()))+"x"+str(Gdk.Screen.get_height(Gdk.Screen.get_default())))
self.printer_initializing("Connecting to Moonraker")
# Disable DPMS
os.system("/usr/bin/xset -display :0 s off")
os.system("/usr/bin/xset -display :0 -dpms")
os.system("/usr/bin/xset -display :0 s noblank")
ready = False
try:
@ -86,7 +106,7 @@ class KlipperScreen(Gtk.Window):
self.create_websocket()
if info['result']['state'] == "ready" and "M112" in info['result']['state_message']:
print("Emergency stopped")
logger.warning("Printer is emergency stopped")
self.printer_initializing("Shutdown due to Emergency Stop")
status_objects = [
@ -117,11 +137,9 @@ class KlipperScreen(Gtk.Window):
self.last_update[x] = data[x]
self.printer_config = data['configfile']['config']
#self.read_printer_config()
self.printer = Printer(data)
# Initialize target values. TODO: methodize this
print (json.dumps(data, indent=2))
self.printer.set_dev_stat("heater_bed", "target", data['heater_bed']['target'])
self.printer.set_dev_stat("extruder", "target", data['extruder']['target'])
@ -132,30 +150,13 @@ class KlipperScreen(Gtk.Window):
self.printer_ready()
while (self._ws.is_connected() == False):
print("### Main: Waiting for websocket")
logger.warning("### Main: Waiting for websocket")
continue
self.files = KlippyFiles(self)
self._ws.klippy.object_subscription(requested_updates)
def read_printer_config(self):
logging.info("### Reading printer config")
self.toolcount = 0
self.extrudercount = 0
for x in self.printer_config.keys():
if x.startswith('extruder'):
if x.startswith('extruder_stepper') or "shared_heater" in self.printer_config[x]:
self.toolcount += 1
continue
self.extrudercount += 1
logging.info("### Toolcount: " + str(self.toolcount) + " Heaters: " + str(self.extrudercount))
self._printer = Printer(self.toolcount, self.extrudercount)
def show_panel(self, panel_name, type, remove=None, pop=True, **kwargs):
if remove == 2:
self._remove_all_panels()
@ -198,7 +199,6 @@ class KlipperScreen(Gtk.Window):
self.panels[panel_name] = MovePanel(self)
if kwargs != {}:
print(type)
self.panels[panel_name].initialize(panel_name, **kwargs)
else:
self.panels[panel_name].initialize(panel_name)
@ -209,7 +209,7 @@ class KlipperScreen(Gtk.Window):
self.add(self.panels[panel_name].get())
self.show_all()
self._cur_panels.append(panel_name)
logging.info(self._cur_panels)
logger.debug("Current panel hierarchy: %s", str(self._cur_panels))
def read_config (self):
@ -234,7 +234,7 @@ class KlipperScreen(Gtk.Window):
def _go_to_submenu(self, widget, name):
logging.info("#### Go to submenu " + str(name))
logger.info("#### Go to submenu " + str(name))
#self._remove_current_panel(False)
# Find current menu item
@ -245,10 +245,9 @@ class KlipperScreen(Gtk.Window):
else:
menu = self._config['printmenu']
logging.info("#### Menu " + str(menu))
logger.info("#### Menu " + str(menu))
#self.show_panel("_".join(self._cur_panels) + '_' + name, "menu", 1, False, menu=menu)
print(menu)
self.show_panel(self._cur_panels[-1] + '_' + name, "menu", 1, False, items=menu)
return
@ -291,7 +290,7 @@ class KlipperScreen(Gtk.Window):
self.show_all()
def _menu_go_back (self, widget):
logging.info("#### Menu go back")
logger.info("#### Menu go back")
self._remove_current_panel()
@ -320,10 +319,10 @@ class KlipperScreen(Gtk.Window):
if "webhooks" in data and "state" in data['webhooks']:
if data['webhooks']['state'] == "shutdown":
logging.info("### Going to disconnected state")
logger.info("### Going to disconnected state")
self.printer_initializing("Klipper has shutdown")
elif data['webhooks']['state'] == "ready":
logging.info("### Going to ready state")
logger.info("### Going to ready state")
self.printer_ready()
else:
active = self.printer.get_stat('virtual_sdcard','is_active')
@ -336,9 +335,10 @@ class KlipperScreen(Gtk.Window):
self.printer_printing()
if action == "notify_status_update":
if action == "notify_filelist_changed":
logger.DEBUG("Filelist changed: %s", json.dumps(data,indent=2))
#self.files.add_file()
elif action == "notify_status_update":
if "heater_bed" in data:
d = data["heater_bed"]
if "target" in d:
@ -375,8 +375,6 @@ class KlipperScreen(Gtk.Window):
self.show_panel('job_status',"JobStatusPanel", 2)
def main():
log_file = ("/tmp/KlipperScreen.log")
root_logger = logging.getLogger()
win = KlipperScreen()
win.connect("destroy", Gtk.main_quit)

View File

@ -3,7 +3,7 @@
screen=${1:-0}
# wait for the display manager service to start and attach to screen
sleep 5
sleep 15
/usr/bin/xset -display :$screen s off # deactivate screen saver
/usr/bin/xset -display :$screen -dpms # disable DPMS