Skip to content

Commit

Permalink
Hook improvments and minor bug fixes (#1)
Browse files Browse the repository at this point in the history
* Fix incorrect command

* Add macro variable to STATUS_LEDS

Variable can be used for conditional actions based on the active color value.

* Present value as a string literal

* Case and quotes adjustments

* Change quote type

* More quotes

* Discard use of delayed_gcode

beacon_klipper has undocumented hook features that are called before or after homing either the x or y axis

* Add xy hooks

* Add activation macro

* Add contact macro

* Case change

* Add recommend homing configuration

* Revert status_leds
  • Loading branch information
crkochan authored Aug 11, 2024
1 parent 01d4a90 commit fb24ffc
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 31 deletions.
7 changes: 7 additions & 0 deletions config/hardware/probes/beacon_contact.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,14 @@ endstop_pin: probe:z_virtual_endstop
homing_retract_dist: 0

[beacon]
home_method: contact
home_method_when_homed: proximity
home_autocalibrate: unhomed
home_gcode_pre_x: _HOME_PRE_AXIS AXIS=X
home_gcode_post_x: _HOME_POST_AXIS AXIS=X
home_gcode_pre_y: _HOME_PRE_AXIS AXIS=Y
home_gcode_post_y: _HOME_POST_AXIS AXIS=Y
home_gcode_pre_xy: _HOME_XY STAGE=pre
home_gcode_post_xy: _HOME_XY STAGE=post
contact_activate_gcode: _CONTACT_MACRO STAGE=activate
contact_deactivate_gcode: _CONTACT_MACRO STAGE=deactivate
100 changes: 70 additions & 30 deletions macros/base/homing/beacon_homing_hooks.cfg
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
[gcode_macro _HOME_PRE_AXIS]
description: Perform actions prior to homing an axis
variable_saved_accel: 0
gcode:
{% set axis = params.AXIS %}
{% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %}
{% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %}
{% set kinematics = printer['configfile'].config['printer']['kinematics'] %}
{% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %}
{% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %}
{% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %}
{% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %}

{% set x_driver = printer["gcode_macro _USER_VARIABLES"].x_driver %}
Expand All @@ -24,29 +20,13 @@ gcode:
# reset parameters
{% set X, Y = False, False %}

# Cancel delayed gcode
UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0

# which axis has been requested for homing
{% if axis == 'X' %}
{% set X = True %}
{% elif axis == 'Y' %}
{% set Y = True %}
{% endif %}

{% if status_leds_enabled %}
STATUS_LEDS COLOR='HOMING'
{% endif %}

# Set the homing acceleration prior to any movement
SET_GCODE_VARIABLE MACRO=_HOME_PRE_AXIS VARIABLE=saved_accel VALUE={printer.toolhead.max_accel}
M204 S{homing_travel_accel}

{% if bed_mesh_enabled %}
BED_MESH_CLEAR
{% endif %}

G90

{% if sensorless_homing_enabled %}
{% if kinematics == 'corexy' %}
Expand Down Expand Up @@ -84,7 +64,6 @@ gcode:
{% set kinematics = printer['configfile'].config['printer']['kinematics'] %}
{% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %}
{% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %}
{% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %}

{% set x_homing_backoff, y_homing_backoff = printer['gcode_macro _USER_VARIABLES'].homing_backoff_distance_xy|map('float') %}

Expand Down Expand Up @@ -142,17 +121,78 @@ gcode:
{% endif %}
{% endif %}

# Reset acceleration values to what it was before
{% set saved_accel = printer["gcode_macro _HOME_PRE_AXIS"].saved_accel %}
SET_VELOCITY_LIMIT ACCEL={saved_accel}

# Set delayed gcode
UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0.5

[delayed_gcode _set_status_leds_ready]
[gcode_macro _HOME_XY]
description: Perform actions before or after homing x or y axis
variable_saved_accel: 0
gcode:
{% set stage = params.STAGE|lower %}

{% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %}
{% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %}
{% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %}

# reset parameters
{% set pre, post = False, False %}

# Which axis has been requested for homing
{% if stage == 'pre' %}
{% set pre = True %}
{% elif stage == 'post' %}
{% set post = True %}
{% else %}
{ action_raise_error('Unrecognized STAGE value, valid choices: pre, post') }
{% endif %}

{% if pre %}
# Set the homing acceleration prior to any movement
SET_GCODE_VARIABLE MACRO=_HOME_XY VARIABLE=saved_accel VALUE={printer.toolhead.max_accel}
M204 S{homing_travel_accel}

{% if bed_mesh_enabled %}
BED_MESH_CLEAR
{% endif %}

G90

{% if status_leds_enabled %}
STATUS_LEDS COLOR="homing"
{% endif %}
{% elif post %}
# Reset acceleration values to what it was before
{% set saved_accel = printer["gcode_macro _HOME_XY"].saved_accel %}
SET_VELOCITY_LIMIT ACCEL={saved_accel}

{% if status_leds_enabled %}
STATUS_LEDS COLOR="READY"
{% if status_leds_enabled %}
STATUS_LEDS COLOR="ready"
{% endif %}
{% endif %}

[gcode_macro _CONTACT_MACRO]
description: Perform actions before or after contact activate/deactivate
gcode:
{% set stage = params.STAGE|lower %}

{% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %}

# reset parameters
{% set activate, deactivate = False, False %}

# Which axis has been requested for homing
{% if stage == 'activate' %}
{% set activate = True %}
{% elif stage == 'deactivate' %}
{% set deactivate = True %}
{% else %}
{ action_raise_error('Unrecognized STAGE value, valid choices: activate, deactivate') }
{% endif %}

{% if activate %}
{% if status_leds_enabled %}
STATUS_LEDS COLOR="homing"
{% endif %}
{% elif deactivate %}
{% if status_leds_enabled %}
STATUS_LEDS COLOR="ready"
{% endif %}
{% endif %}
2 changes: 1 addition & 1 deletion macros/base/homing/homing_override.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ gcode:
{% endif %}

{% else %}
{ action_respond_error("Axis homing order not valid. Choose either X or Y first in the variables.cfg file!") }
{ action_raise_error("Axis homing order not valid. Choose either X or Y first in the variables.cfg file!") }
{% endif %}


Expand Down

0 comments on commit fb24ffc

Please sign in to comment.