*Klipper/Mainsail/Moonraker
- *Cancel print button/Funktion geht nicht
- *Klipper auf ältere Version zurücksetzen
- *Klipper Pin Vorzeichen
- *Klipper Screen
- *Pi Auslastung prüfen
- *Timelapse funktionert nach Update nicht mehr | Timelapse installieren
- *Webcam
- *Z-Tilt / Quad Gantry Level
- *Mainsail ohne Drucker nutzen
*Cancel print button/Funktion geht nicht
Dieses Makro in eurer mainsail.cfg tauschen und in den Settings den "cancel print button" an machen.
Makros
[gcode_macro CANCEL_PRINT]
description: Bricht den aktuellen Druck ab
rename_existing: CANCEL_PRINT_BASE
variable_park: True
gcode:
## Move head and retract only if not already in the pause state and park set to true
{% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
_TOOLHEAD_PARK_PAUSE_CANCEL
{% endif %}
TURN_OFF_HEATERS
CANCEL_PRINT_BASE
######################################################################
# Druckkop Parkbefehl
######################################################################
[gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL]
description: Helper: Parkposition im PAUSE and CANCEL_PRINT
variable_extrude: 1.0
gcode:
##### set park positon for x and y #####
# default is your max posion from your printer.cfg
{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
{% set z_park_delta = 2.0 %}
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - z_park_delta) %}
{% set z_safe = z_park_delta %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
##### end of definitions #####
{% if printer.extruder.can_extrude|lower == 'true' %}
M83
G1 E-{extrude} F2100
{% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %}
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if "xyz" in printer.toolhead.homed_axes %}
G91
G1 Z5 F900
G90
G1 X{x_park} Y{y_park} F6000
{% if printer.gcode_move.absolute_coordinates|lower == 'false' %} G91 {% endif %}
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
Zusätzliche Makros
Druckpause
######################################################################
# Druckpause
######################################################################
[gcode_macro PAUSE]
description: Pausiert den aktiellen Druck
rename_existing: PAUSE_BASE
# change this if you need more or less extrusion
variable_extrude: 1.0
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
##### set park positon for x and y #####
# default is your max posion from your printer.cfg
{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - 2.0) %}
{% set z_safe = 2.0 %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
{%set min_extrude_temp = printer.configfile.settings["extruder"]["min_extrude_temp"]|int %}
{%set act_extrude_temp = printer.extruder.temperature|int %}
##### end of definitions #####
PAUSE_BASE
G91
{% if act_extrude_temp > min_extrude_temp %}
G1 E-{E} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if "xyz" in printer.toolhead.homed_axes %}
G1 Z{z_safe} F900
G90
G1 X{x_park} Y{y_park} F6000
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
End Print
#####################################
# END PRINT #
#####################################
[gcode_macro END_PRINT]
description: All what needs to be done at print end
gcode:
M117 Turn off Heaters
TURN_OFF_HEATERS ; Turn off bed and nozzle
G91 ; Relative positioning
SET_GCODE_OFFSET Z_ADJUST=+0.06
M117 Retract
G1 E-1 F3000 ; Retract
G1 X-0.5 Y-0.5 Z20 E-5 ; Move a bit and retract filament even more
G90 ; Absolute positioning
G1 X0 Y180 Z35 F2200 ; Move bed to front
M107 ; Turn off part fan
M84 ; Steppers off
G90 ; Absolute positioning
M117 Print done ; Send finish to display
Druckwiederaufnahme
######################################################################
# Druckwiederaufnahme
######################################################################
[gcode_macro RESUME]
description: Setzt den aktuellen Druck fort
rename_existing: RESUME_BASE
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
{%set min_extrude_temp = printer.configfile.settings["extruder"]["min_extrude_temp"]|int %}
{%set act_extrude_temp = printer.extruder.temperature|int %}
#### get VELOCITY parameter if specified ####
{% if 'VELOCITY' in params|upper %}
{% set get_params = ('VELOCITY=' + params.VELOCITY) %}
{%else %}
{% set get_params = "" %}
{% endif %}
##### end of definitions #####
{% if act_extrude_temp > min_extrude_temp %}
G91
G1 E{E} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
RESUME_BASE {get_params}
*Klipper auf ältere Version zurücksetzen
Vorher immer Backups erstellen. FTP -> klipper_config ordner sichern
Aktuelle Version des Klipper ordners anzeigen
cd ~/klipper
git show
Letzte Commits anzeigen:
git log --stat
Klipper Ordner zurücksetzten
git reset --hard <COMMIT_NUMMER>
*Klipper Pin Vorzeichen


*Klipper Screen
Klipper-Screen läuft nicht oder hat eine hohe Auslastung
sudo systemctl stop KlipperScreen
cd ~/KlipperScreen
git reset --hard <commit>
sudo systemctl start KlipperScreen
Die commits findest ihr unter https://github.com/jordanruthe/KlipperScreen links unterhalb des grünen Code Buttons. Dort ist eine Uhr mit Bezeichnung "commits". Dort draufklicken und dann eine Commit ID kopieren (Bearbeitet)
*Pi Auslastung prüfen
- Putty verbinden
- in die Konstole "htop" eingeben
htop
Ist htop nicht installiert sudo apt-get install htop
*Timelapse funktionert nach Update nicht mehr | Timelapse installieren
Prüfen ob Timelapse schon auf dem Pi ist (SSH Verbindung aufbauen)
cd ~/
git clone https://github.com/mainsail-crew/moonraker-timelapse.git
Timelapse updaten
cd ~/moonraker-timelapse
git pull
Timelapse neu installieren
cd ~/
git clone https://github.com/mainsail-crew/moonraker-timelapse.git
bash ~/moonraker-timelapse/install.sh
Bei der Fehlermeldung "fatal: destination path 'moonraker-timelapse' already exists and is not an empty directory."->die Befehle von Timelapse updaten durchführen!
Timelapse Update Manager in moonraker.conf überprüfen:
[update_manager timelapse]
type: git_repo
primary_branch: main
path: ~/moonraker-timelapse
origin: https://github.com/mainsail-crew/moonraker-timelapse.git
managed_services: klipper moonraker
Timelapse in der Moonraker.conf einfügen:
[timelapse]
Timelapse im Slicer einrichten:
Offizieller link zu der Timelapse Doku.
Superslicer / PrusaSlicer
Printer Settings -> Custom G-code -> Before layer change Gcode -> TIMELAPSE_TAKE_FRAME
Cura:
Extensions -> Post Processing -> Modify G-Code ->
Add a script -> Insert at layer change -> G-code to insert = TIMELAPSE_TAKE_FRAME
*Webcam
Wenig FPS bei einer Webcam
-
WLAN Übertragung kann ein Problem sein -> Verbindet mal per LAN
-
Mehrere Clients greifen parallel auf die Kamera zu
-
Erhöhung der FPS in der crowsnest.conf (Neue Mainsail Version)
[cam 1] mode: mjpg # mjpg/rtsp port: 8080 # Port device: /dev/video0 # See Log for available ... resolution: 640x480 # widthxheight format max_fps: 15 # If Hardware Supports this it will be forced, ohterwise ignored/coerced.
Resolution = Auflösung -> Habt ihr bei euch eine HD Auflösung (1920x1080) eingetragen, kann es helfen diese auf 640x480 zu setzten
max_fps = Ihr könnt diese FPS mal auf 30 oder 60 hochsetzen
Ebenfalls könnt ihr auf dem Mainsail Dashboard in den Einstellungen unter Webcam Einstellungen die FPS mal höher stellen.
Kein Bild der Webcam
Prüfen ob das USB Gerät erkannt wird.
lsusb
Die Ausgabe sollte nun die Kamera anzeigen. Wenn nicht bitte prüfen, ob die Kamera generell an einem anderen Gerät funktioniert.
Videogeräte prüfen
v4l2-ctl --list-devices
crowsnest.conf prüfen
- Ist der richtige Port eingestellt
8080
- Ist das richtige Gerät eingestellt
device: /dev/video0
Die Codeblöcke
müssen meist in Putty (SSH) ausgeführt werden.
Autofocus und Autohelligkeit ausschalten
Funktionsmöglichkeiten der Kamera herausfinden:
v4l2-ctl --list-ctrls
Prüfen ob die Befehle richtig umgesetzt werden:
Dieses Beispiel zeigt die Deaktivierung des Autofokus durch das setzen des Wertes 0.
v4l2-ctl --set-ctrl=focus_auto=0
Setzt den Focus Manuell auf den eingebenden Wert. Hier ist es 20
v4l2-ctl --set-ctrl=focus_absolute=20
Schaltet die Autohelligkeit aus.
v4l2-ctl --set-ctrl=exposure_auto=0
Übertragung in Autostart:
Bearbeiten der crowsnest.conf
v4l2ctl: focus_auto=0,focus_absolute=5,exposure_auto=1,exposure_absolute=1000,zoom_absolute=100
Crowsnest Doku und Installation
Hier findest du die offizielle Doku zu Crowsnest:
https://github.com/mainsail-crew/crowsnest
Alle folgenden aufgeführten Commands sind auf dem Stand vom 14.12.2022
Wie wird crowsnest installiert:
cd ~
git clone https://github.com/mainsail-crew/crowsnest.git
cd ~/crowsnest
sudo make install
So deinstallierst du crowsnest:
cd ~/crowsnest
make uninstall
cd ~
rm -rf crowsnest/
ln -s /home/pi/klipper_logs/crowsnest.log
So updatest du crowsnest:
cd ~/crowsnest
git pull
Link Verknüpfung erstellen
cd ~/printer_data/config
ln -s /home/pi/klipper_config/crowsnest.conf
cd ~/printer_data/logs
ln -s /home/pi/klipper_logs/crowsnest.log
Wo liegt die Crowsnest Konfig:
/home/pi/klipper_config/crowsnest.conf
Hier findest du die Logdatei zu Crowsnest:
/home/pi/klipper_logs/crowsnest.log
Update Manager Eintrag in der moonraker.conf
[update_manager crowsnest]
type: git_repo
path: ~/crowsnest
origin: https://github.com/mainsail-crew/crowsnest.git
install_script: tools/install.sh
Beispiel Configuration deiner Webcam:
#### crowsnest.conf
#### This is a typical default config.
#### Also used as default in mainsail / MainsailOS
#### See:
#### https://github.com/mainsail-crew/crowsnest/blob/master/README.md
#### for details to configure to your needs.
#####################################################################
#### #####
#### Information about ports and according URL's #####
#### #####
#####################################################################
#### #####
#### Port 8080 equals /webcam/?action=[stream/snapshot] #####
#### Port 8081 equals /webcam2/?action=[stream/snapshot] #####
#### Port 8082 equals /webcam3/?action=[stream/snapshot] #####
#### Port 8083 equals /webcam4/?action=[stream/snapshot] #####
#### #####
#### Note: These ports are default for most Mainsail #####
#### installations. To use any other port would involve #####
#### changing the proxy configuration or using directly #####
#### http://<ip>:<port>/?action=[stream/snapshot] #####
#### #####
#####################################################################
#### RTSP Stream URL: ( if enabled and supported ) #####
#### rtsp://<ip>:<rtsp_port>/stream.h264 #####
#####################################################################
[crowsnest]
log_path: %LOGPATH%
log_level: verbose # Valid Options are quiet/verbose/debug
delete_log: false # Deletes log on every restart, if set to true
no_proxy: false
[cam 1]
mode: ustreamer # ustreamer - Provides mjpg and snapshots. (All devices)
# camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only)
enable_rtsp: false # If camera-streamer is used, this enables also usage of an rtsp server
rtsp_port: 8554 # Set different ports for each device!
port: 8080 # HTTP/MJPG Stream/Snapshot Port
device: /dev/video0 # See Log for available ...
resolution: 640x480 # widthxheight format
max_fps: 15 # If Hardware Supports this it will be forced, otherwise ignored/coerced.
#custom_flags: # You can run the Stream Services with custom flags.
#v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.
Wie findest du deine Kamera "Device":
Verbinde dich mit Putty oder einem SSH Client zu deinem Pi
Mit diesem Befehl kannst du dir alle Kamerageräte anzeigen lassen
v4l2-ctl --list-devices
Kamera in Mainsail einfügen:
Öffne das Menü über die Zahnräder oben rechts auf der Weboberfläche:
Navigiere über die Auswahlreiter zu Webcam.
Hier ist ein Beispiel meiner Konfiguration
Stream URL = Pfad zu deiner Kamera.
Für Kamera 1 ist das "/webcam/?action=stream"
Für Kamera 2 wäre es "/webcam2/?action=stream"
Snapshot URL = Pfad für einen Schnappschuss (Timelapserelevant)
Kamera 1 "/webcam/?action=snapshot"
Kamera 2 "/webcam2/?action=snapshot"
Dienst = Empfehlung "Adaptive MJPEG-STREAMER"
FPS = 30 -50
Probleme?!
Durchsuche unser FAQ nach deinem Fehler.
*Z-Tilt / Quad Gantry Level
Was ist Z-Tilt und Quad Gantry Level (QGL)
Wichtig: Das Druckbett sollte vorher schon parallel zum Gestell oder Boden stehen.
Konsolenausgabe
Dies ist eine Beispielausgabe des QGL:
Making the following Z adjustments:
stepper_z = 0.004953
stepper_z1 = -0.000403
stepper_z2 = -0.000520
stepper_z3 = -0.004030
Average: 7.239051
Actuator Positions:
z: 7.234097 z1: 7.239454 z2: 7.239571 z3: 7.243081
Gantry-relative probe points:
0: 7.236478 1: 7.238353 2: 7.239915 3: 7.240540
probe at 250.000,25.000 is z=7.759460
probe at 250.000,225.000 is z=7.760085
probe at 25.000,225.000 is z=7.761647
probe at 25.000,25.000 is z=7.763522
probe at 250.000,25.000 is z=7.759460
Wie Ihre sehen könnt werden als ersten die in der Konfiguration definierten Punkte angefahren und in Z-Höhe vermessen.
Making the following Z adjustments:
Es werden jetzt für die jeweiligen Motoren Änderungen der Z-Höhe vorgenommen und nochmals die Messpunkte angefahren.
Die Wiederholungen sind abhängig von den von euch definierten Toleranz in der Konfiguration in der Variable:
retry_tolerance: 0.0075
Alle Infos zu den Parametern der Konfiguration findet ihr in der Dokumentation von Klipper.
*Mainsail ohne Drucker nutzen
Hallo.
Hier zeigen wir euch, wie ihr die Mainsail Oberfläche nutzen könnt, ohne dass ein Drucker aktiv laufen muss.
Dies kann euch für verschiedene Anwendungen nützlich sein.
Quellen:
- Beitrag von Meteyou auf dem Mainsail Discord
- Link zu der original Klipper Dokumentation
1. Klipper-mcu.service anlegen
1. Klipper MCU Service anlegen:
Verbindung via SSH Client zum Pi/Host herstellen
2. In das klipper Verzeichnis navigieren
cd ~/klipper/
3. Den klipper-mcu Service in das "Anwendungsstammverzeichnis kopieren
sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/
4. Den klipper-mcu.service als Autostart anlegen
sudo systemctl enable klipper-mcu.service
Autostart deaktivieren:
sudo systemctl disable klipper-mcu.service
2. Microcontroller flashen
1. In das Klipper Verzeichnis navigieren
cd ~/klipper/
2. Die Klipper Firmwareerstellung öffnen
make menuconfig
3. Als Microcontroller Architektur "Linux process" wählen
4. Den Klipper service Stoppen - Firmware flashen - Klipper Service starten
sudo service klipper stop
make flash
sudo service klipper start
3. Nutzer in TTY Gruppe anlegen
Wichtig:
"pi" wird hier als Nutzername gewählt. Habt ihr einen andern Nutzernamen, müsst ihr diesen anpassen.
sudo usermod -a -G tty pi
Pi neustarten
sudo reboot
4. Printer.cfg anpassen
Ihr müsst jetzt folgenden Eintrag in eurer Printer.cfg anpassen.
Wir empfehlen hier eine seperate printer.cfg anzulegen.
Kopiert euch einfach den Inhalt eurer standard printer.cfg in eine neu erstellte "backup.printer.cfg"
[include mainsail.cfg]
[mcu]
serial: /tmp/klipper_host_mcu
[printer]
kinematics: none
max_velocity: 1
max_accel: 1
Optional:
Printer.cfg per Command wechseln
1. kiauh installieren
2. gcode shellcommander installieren
3. Config Dateien anlegen
- default-mcu.cfg -> Das ist die normal config Datei
- klipper-mcu.cfg -> Das ist die config Datei ohne Drucker
- "[include shell_command.cfg]" muss in beiden cfgs vorhanden sein
4. Macros anlegen
[gcode_shell_command load_klipper_mcu]
command: cp /home/pi/printer_data/config/klipper-mcu.cfg /home/pi/printer_data/config/printer.cfg
timeout: 2.
verbose: True
[gcode_macro LOAD_KLIPPER_MCU]
gcode:
RUN_SHELL_COMMAND CMD=load_klipper_mcu
M117 Config changed to klipper-mcu .... Restart Firmware
FIRMWARE_RESTART
[gcode_shell_command load_default_mcu]
command: cp /home/pi/printer_data/config/default-mcu.cfg /home/pi/printer_data/config/printer.cfg
timeout: 2.
verbose: True
[gcode_macro LOAD_DEFAULT_MCU]
gcode:
RUN_SHELL_COMMAND CMD=load_default_mcu
M117 Config changed to default-mcu .... Restart Firmware
FIRMWARE_RESTART