Klipperscreen - Klipper über ein Display steuern
Klipper Screen ist eine Klipper Erweiterung, mit der man einen Linux PC mit idealerweise einem Touch-Display in eine Steuerung für das Klipper Interface verwandeln kann. Man kann den Raspberry Pi. oder welchen MiniPC man für Klipper verwendet nutzen und dann diesen einen Touch Monitor anschließen und bekommt so ein Touch optimiertes Userinterface. Über ein Display kann man auch mehrere Klipper-Instanzen ansteuern, also es funktioniert auch einen PC zum ansteuern von mehreren Drucker mittele Klipper anzusteuern und diese über das Touch Display zu steuern.
Installation
Kompatible Geräte
Grundsätzlich kann man Klipper Screen auf jedem Gerät installieren auf dem Linux läuft. Idealerweise sollte das Gerät ein Touch-Display haben um das beste Nutzererlebnis zu gewährleisten. Meiner Ansicht nach ist es am besten einen Raspberry Pi oder ähnlichen Microcontroller zu verwenden. Entschließt man sich für einen Raspberry Pi Nachbau muss unbedingt die Kompatibilität der Geräts bzw. der Ports geprüft werden wenn auf diesem auf Klipper installiert sein soll. Will man zum Beispiel den BTT CB1 verwenden, so ist dieser ein preiswerter Klipper-Host, jedoch unterstützt dieser kein DSI (Display Anschluss über Flachbandkabel) & CSI ( Verwendung der Pi-Cam über Flachbandkabel) und so kann nur ein HDMI Display verwendet werden.
Achtung
Seit dem letzten Update wird der NetworkManager benötigt um Wifi netzwerke suchen zu können. Wer bereits ein fertig eingerichtetes Netzwerk hat, dem rate ich dazu ab diese Erweiterung zu installieren, da ich diesen bei bisher keiner Installatin zum laufen bekommen habe.
Mehr dazu:
https://klipperscreen.readthedocs.io/en/latest/Troubleshooting/Network/
https://github.com/danfruehauf/NetworkManager-ssh
Ausführung zulassen
Damit KlipperScreen ausgeführt werden kann muss dieser die benötigten Rechte in moonraker.conf mit dem Eintrag 127.0.0.1 erhalten.
[authorization] trusted_clients: 127.0.0.1
Update Pfad
Damit Klipper einfach über Moonracker Updates erhalten kann muss folgendes in moonraker.conf eingefügt werden:
[update_manager KlipperScreen]
type: git_repo path: ~/KlipperScreen
origin: https://github.com/jordanruthe/KlipperScreen.git
env: ~/.KlipperScreen-env/bin/python
requirements: scripts/KlipperScreen-requirements.txt
install_script: scripts/KlipperScreen-install.sh
managed_services: KlipperScreen
Macros
Damit Klipper Screen ordnungsgemäß läuft müssen einige Macros implementiert sein. Ich habe hier wieder ein Beispiel meiner Konfigurationsdateien angehängt:
Warnung: Die Macros bitte nicht einfach per "Copy & Paste" einfügen, sonder die Macros durchgehen und sicherstellen, dass die Werte zu deinem Drucker passen und bei Abweichungen unbedingt anpassen, bevor diese eingesetzt werden!
[respond][gcode_macro LOAD_FILAMENT]
variable_load_distance: 10
variable_purge_distance: 10
gcode:
{% set speed = params.SPEED|default(300) %}
{% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity * 60 %}
SAVE_GCODE_STATE NAME=load_state
G91
G92 E0
G1 E{load_distance} F{max_velocity} # fast-load
G1 E{purge_distance} F{speed} # purge
RESTORE_GCODE_STATE NAME=load_state[gcode_macro UNLOAD_FILAMENT]
variable_unload_distance: -10
variable_purge_distance: -10
gcode:
{% set speed = params.SPEED|default(300) %}
{% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity * 60 %}
SAVE_GCODE_STATE NAME=unload_state
G91
G92 E0
G1 E{purge_distance} F{speed} # purge
G1 E-{unload_distance} F{max_velocity} # fast-unload
RESTORE_GCODE_STATE NAME=unload_state
Menü Configuration
Das Menü lässt sich einfach neu gestalten, wobei der einzige Nachteil liegt darin, dass man entweder nur Buttons hinten hinzufügen kann, oder man muss das gesamte Menü neu gestalten. Natürlich habe ich es mir zur Aufgabe gemacht, das ganze Menü neu zu konfigurieren und so könnt ihr dieses als Vorlage hernehmen und nach euren Wünschen anpassen.
KlipperScreen.conf
[printer SJT S1 OF]z_babystep_values: 0.05, 0.1
Bed Screws
# define the screw positons required for odd number of screws in a comma separated list (CSV)
# possible values are: bl, br, bm, fl, fr, fm, lm, rm, center
# they correspond to back-left, back-right, back-middle, front-left, front-right, front-middle, left-middle, right-middle
# example:
screw_positions: bl, fl, rm#printer.bltouch # Available if bltouch section defined in config
[main]
use_default_menu: false[menu __main homing]
name: Home
icon: home
method: printer.gcode.script
params: {"script":"G28"}[menu __main disable]
name: Disable Motor
icon: motor-off
method: printer.gcode.script
params: {"script":"M84"}[menu __main temperature]
name: Temperature
icon: heat-up
panel: temperature
[menu __main extrude]
name: Extrude
icon: extrude
panel: extrude[menu __main calibrate]
name: Calibrate
icon: settings[menu __main calibrate inputshaper]
name: Input Shaper
icon: move
#method: printer.gcode.script
#params: {"script":"TEST_RESONANCES AXIS=X"}
panel: input_shaper
[menu __main calibrate bed_leveling]
name: Bed Level
icon: bed-level
panel: bed_level
[menu __main calibrate bed_mesh]
name: Bed Mesh
icon: bed-mesh
panel: bed_mesh[menu __main calibrate z_calibrate]
name: Z Calibrate
icon: z-tilt
panel: zcalibrate[menu __main settings]
name: Settings
icon: settings[menu __main settings limits]
name: Limits
icon: fine-tune
panel: limits[menu __main settings retraction]
name: Retraction
icon: retraction
panel: retraction[menu __main settings spoolman]
name: Filament
icon: spool
panel: spoolman[menu __main settings console]
name: Console
icon: console
panel: console[menu __main settings system]
name: System
icon: info
panel: system[menu __main settings save_config]
name: Save Config
icon: sd
method: printer.gcode.script
params: {"script":"save_config"}[menu __main settings klipper_screen]
name: Klipper Screen
icon: klipper
panel: example[menu __main settings network]
name: Network
icon: network
panel: network[menu __main settings notifications]
name: Notifications
icon: notifications
panel: notifications[menu __main settings Macros]
name: Macros
icon: custom-script
panel: macros[menu __main settings LED]
name: LED
icon: light
panel: led
[menu __main settings FAN]
name: FAN
icon: fan
panel: fan[menu __main settings move]
name: Move
icon: move
panel: move#[menu __main Leveloption]
#name: Bed Leveling Options
#icon: print
#method: printer.gcode.script
#params: {"script":"SHOW_PROMPT"}[menu __main print]
name: Print
icon: print
panel: print#Materials
[preheat PLA]
extruder: 220
#extruder1: 60
heater_bed: 40
# Use the name
#chamber: 60
# or the full name
#heater_generic chamber: 60
# or for example apply the same temp to devices of the same type
#temperature_fan: 40
#heater_generic: 60
# optional GCode to run when the option is selected
gcode: #MY_HEATSOAK_MACRO[preheat PETg]
extruder: 240
#extruder1: 60
heater_bed: 60
# Use the name
#chamber: 60
# or the full name
#heater_generic chamber: 60
# or for example apply the same temp to devices of the same type
#temperature_fan: 40
#heater_generic: 60
# optional GCode to run when the option is selected
gcode: #MY_HEATSOAK_MACRO
#~# --- Do not edit below this line. This section is auto generated --- #~#
#~#
#~# [main]
#~# theme = material-dark
#~# print_estimate_method = slicer
#~# screen_blanking = 60
#~# autoclose_popups = False
#~# show_scroll_steppers = True
#~# auto_open_extrude = False
#~# print_sort_dir = date_desc
#~# print_view = list
#~#
#~# [graph SJT S1 OF]
#~# extruder = False
#~#
Troubleshooting
Startet der Screen nicht in den modus, dann kann es sein, dass nicht alle Berechtigungen richtig gesetzt wurden:
Prüfen on in moonraker.conf der Eintrag 127.0.0.1 unter trusted Clients existiert !
Damit bei mir bei der Neuinstallation von Klipper auf einem nackten PiOS light alles lief musste ich folgende Zeilen in der /boot/config.txt (sudo nano /boot/config.txt) auskommentieren (# davor schreiben)
# dtoverlay=vc4-kms-v3d
# max_framebuffers=2
Updates
2025-01-01 | Hinweis zur Installation des Network Managers |