From 0b332923d554dfbb662bae3844fd1956751f6be8 Mon Sep 17 00:00:00 2001 From: Debian Date: Sun, 5 Jul 2026 05:49:51 +0000 Subject: [PATCH 1/3] initial support for skew profile --- .../recipes-apps/klipper/files/macros.cfg | 14 +++++++++++++- .../files/build-klipper-var-config.sh | 10 ++++++++++ .../config-manager/files/config_manager.py | 1 + .../recipes-data/config-manager/files/default.conf | 4 ++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/meta-opencentauri/recipes-apps/klipper/files/macros.cfg b/meta-opencentauri/recipes-apps/klipper/files/macros.cfg index af3df889..ac40154f 100644 --- a/meta-opencentauri/recipes-apps/klipper/files/macros.cfg +++ b/meta-opencentauri/recipes-apps/klipper/files/macros.cfg @@ -25,6 +25,8 @@ gcode: {% set adaptive_purge = settings.adaptive_purge|default('true')|lower == 'true' %} {% set nozzle_z_homing = settings.nozzle_z_homing|default('false')|lower == 'true' %} {% set all_calibrated = printer["gcode_macro _CHECK_CALIBRATION_VARS"].all_calibrated %} + {% set load_skew_profile = settings.load_skew_profile|default('false')|lower == 'true' %} + {% set skew_profile_name = settings.skew_profile_name|default('')|str %} {% if not all_calibrated %} SET_DISPLAY_TEXT MSG="Calibration process not completed. Please complete initial calibration first" @@ -99,6 +101,11 @@ gcode: {% if adaptive_purge %} LINE_PURGE {% endif %} + + {% if load_skew_profile %} + SET_DISPLAY_TEXT MSG="Loading skew profile" + SKEW_PROFILE LOAD={skew_profile} + {% endif %} SET_TEMPERATURE_FAN_TARGET temperature_fan=mainboard TARGET=30 SET_DISPLAY_TEXT ; Clear display text after print start G90 @@ -111,7 +118,12 @@ gcode: {% set z_ideal = settings.z_ideal_lifting_distance|default(170)|int %} {% set e_mintemp = printer.configfile.settings['extruder'].min_extrude_temp %} {% set sensor = printer['filament_switch_sensor filament_sensor'] %} - + {% set load_skew_profile = settings.load_skew_profile|default('false')|lower == 'true' %} + + {% if load_skew_profile %} + SET_SKEW CLEAR=1 + {% endif %} + {% if printer.toolhead.homed_axes|lower == "xyz" %} G91 {% if sensor.enabled and sensor.filament_detected %} diff --git a/meta-opencentauri/recipes-data/config-manager/files/build-klipper-var-config.sh b/meta-opencentauri/recipes-data/config-manager/files/build-klipper-var-config.sh index a2594d20..35c4f074 100644 --- a/meta-opencentauri/recipes-data/config-manager/files/build-klipper-var-config.sh +++ b/meta-opencentauri/recipes-data/config-manager/files/build-klipper-var-config.sh @@ -20,6 +20,14 @@ z_ideal_lifting_distance=$(get_config_value z_ideal_lifting_distance) full_calibrate_hotend_temperature=$(get_config_value full_calibrate_hotend_temperature) full_calibrate_bed_temperature=$(get_config_value full_calibrate_bed_temperature) bypass_calibration=$(get_config_value bypass_calibration) +load_skew_profile=$(get_config_value load_skew_profile) +if $(echo "$load_skew_profile" | tr '[:upper:]' '[:lower:]'); then + skew_profile_name=$(get_config_value skew_profile_name) +else + #if someone has set load_skew_profile to false and also deleted skew_profile_name, + #provide a dummy value since we are set -eu + skew_profile_name=undefined +fi mkdir -p "${OUTPUT_DIR}" @@ -38,6 +46,8 @@ variable_z_ideal_lifting_distance: ${z_ideal_lifting_distance} variable_full_calibrate_hotend_temperature: ${full_calibrate_hotend_temperature} variable_full_calibrate_bed_temperature: ${full_calibrate_bed_temperature} variable_bypass_calibration: ${bypass_calibration} +variable_load_skew_profile: ${load_skew_profile} +variable_skew_profile_name: ${skew_profile_name} gcode: EOF diff --git a/meta-opencentauri/recipes-data/config-manager/files/config_manager.py b/meta-opencentauri/recipes-data/config-manager/files/config_manager.py index c622806f..8ff21e82 100644 --- a/meta-opencentauri/recipes-data/config-manager/files/config_manager.py +++ b/meta-opencentauri/recipes-data/config-manager/files/config_manager.py @@ -21,6 +21,7 @@ 'z_ideal_lifting_distance': [str(i) for i in range(257)], 'full_calibrate_hotend_temperature': [str(i) for i in range(200, 301)], 'full_calibrate_bed_temperature': [str(i) for i in range(40, 101)], + 'load_skew_profile' : ['True', 'False'], }, } diff --git a/meta-opencentauri/recipes-data/config-manager/files/default.conf b/meta-opencentauri/recipes-data/config-manager/files/default.conf index 6a87bc7d..8d9c2b67 100644 --- a/meta-opencentauri/recipes-data/config-manager/files/default.conf +++ b/meta-opencentauri/recipes-data/config-manager/files/default.conf @@ -35,3 +35,7 @@ z_ideal_lifting_distance = 170 full_calibrate_hotend_temperature = 250 # Bed temperature in Celsius used during the full calibration workflow. Range: 40-100. full_calibrate_bed_temperature = 60 +#load a user defined skew_profile at print start +load_skew_profile = False +#if load_skew_profile is True, the name of the skew profile to load +skew_profile_name = Califlower From ec373bf084372116201d35e3a9f5173274ee96fe Mon Sep 17 00:00:00 2001 From: Debian Date: Sun, 5 Jul 2026 20:28:45 +0000 Subject: [PATCH 2/3] fixed syntax --- meta-opencentauri/recipes-apps/klipper/files/macros.cfg | 2 +- .../config-manager/files/build-klipper-var-config.sh | 5 +++-- .../recipes-data/config-manager/files/config_manager.py | 6 ++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/meta-opencentauri/recipes-apps/klipper/files/macros.cfg b/meta-opencentauri/recipes-apps/klipper/files/macros.cfg index ac40154f..649cfe02 100644 --- a/meta-opencentauri/recipes-apps/klipper/files/macros.cfg +++ b/meta-opencentauri/recipes-apps/klipper/files/macros.cfg @@ -26,7 +26,7 @@ gcode: {% set nozzle_z_homing = settings.nozzle_z_homing|default('false')|lower == 'true' %} {% set all_calibrated = printer["gcode_macro _CHECK_CALIBRATION_VARS"].all_calibrated %} {% set load_skew_profile = settings.load_skew_profile|default('false')|lower == 'true' %} - {% set skew_profile_name = settings.skew_profile_name|default('')|str %} + {% set skew_profile_name = settings.skew_profile_name|default('')|string %} {% if not all_calibrated %} SET_DISPLAY_TEXT MSG="Calibration process not completed. Please complete initial calibration first" diff --git a/meta-opencentauri/recipes-data/config-manager/files/build-klipper-var-config.sh b/meta-opencentauri/recipes-data/config-manager/files/build-klipper-var-config.sh index 35c4f074..9979d3cf 100644 --- a/meta-opencentauri/recipes-data/config-manager/files/build-klipper-var-config.sh +++ b/meta-opencentauri/recipes-data/config-manager/files/build-klipper-var-config.sh @@ -26,7 +26,7 @@ if $(echo "$load_skew_profile" | tr '[:upper:]' '[:lower:]'); then else #if someone has set load_skew_profile to false and also deleted skew_profile_name, #provide a dummy value since we are set -eu - skew_profile_name=undefined + skew_profile_name="undefined" fi mkdir -p "${OUTPUT_DIR}" @@ -47,7 +47,8 @@ variable_full_calibrate_hotend_temperature: ${full_calibrate_hotend_temperature} variable_full_calibrate_bed_temperature: ${full_calibrate_bed_temperature} variable_bypass_calibration: ${bypass_calibration} variable_load_skew_profile: ${load_skew_profile} -variable_skew_profile_name: ${skew_profile_name} +variable_skew_profile_name: '"$skew_profile_name"' + gcode: EOF diff --git a/meta-opencentauri/recipes-data/config-manager/files/config_manager.py b/meta-opencentauri/recipes-data/config-manager/files/config_manager.py index 8ff21e82..809ada35 100644 --- a/meta-opencentauri/recipes-data/config-manager/files/config_manager.py +++ b/meta-opencentauri/recipes-data/config-manager/files/config_manager.py @@ -22,6 +22,7 @@ 'full_calibrate_hotend_temperature': [str(i) for i in range(200, 301)], 'full_calibrate_bed_temperature': [str(i) for i in range(40, 101)], 'load_skew_profile' : ['True', 'False'], + 'skew_profile_name': None, }, } @@ -36,6 +37,11 @@ def validate_config(config : dict): if option not in config[section]: continue value = config[section][option] + if valid_values is None: + if not isinstance(value, str): + print(f"Warning: Invalid value '{value}' for '{option}' in section '{section}'. Expected a string.", file=sys.stderr) + del config[section][option] + continue if value not in valid_values: print(f"Warning: Invalid value '{value}' for '{option}' in section '{section}'. Valid options are: {valid_values}", file=sys.stderr) del config[section][option] From 05c8080c3c9027e13c60c3c1226c700749904b98 Mon Sep 17 00:00:00 2001 From: Debian Date: Sun, 5 Jul 2026 22:49:24 +0000 Subject: [PATCH 3/3] fixed var name, passed on printer tests --- meta-opencentauri/recipes-apps/klipper/files/macros.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-opencentauri/recipes-apps/klipper/files/macros.cfg b/meta-opencentauri/recipes-apps/klipper/files/macros.cfg index 649cfe02..d91c91db 100644 --- a/meta-opencentauri/recipes-apps/klipper/files/macros.cfg +++ b/meta-opencentauri/recipes-apps/klipper/files/macros.cfg @@ -104,7 +104,7 @@ gcode: {% if load_skew_profile %} SET_DISPLAY_TEXT MSG="Loading skew profile" - SKEW_PROFILE LOAD={skew_profile} + SKEW_PROFILE LOAD={skew_profile_name} {% endif %} SET_TEMPERATURE_FAN_TARGET temperature_fan=mainboard TARGET=30 SET_DISPLAY_TEXT ; Clear display text after print start