Klipper3d / klipper

Klipper is a 3d-printer firmware
GNU General Public License v3.0
8.99k stars 5.17k forks source link

filament_switch_sensor: send insert and runout events #6435

Closed mdvorak closed 5 months ago

mdvorak commented 6 months ago

Filament sensors are nowadays used in a way more places, than just for runout detection. MMU units are good example. Firing events would allow additional software to reuse this class, without resolving for hacks like https://github.com/moggieuk/Happy-Hare/blob/main/extras/mmu_sensors.py#L136

This PR does not change current behavior.

Additionally, I would consider adding a new config parameter, allowing insert_gcode and runout_gcode to be executed regardless of printing status.

JamesH1978 commented 6 months ago

Thank you for submitting a PR, pleas refer to point 3 in "What to expect in a review" in https://github.com/Klipper3d/klipper/blob/master/docs/CONTRIBUTING.md and provide a signed off by line.

Thanks James

github-actions[bot] commented 5 months ago

Thank you for your contribution to Klipper. Unfortunately, a reviewer has not assigned themselves to this GitHub Pull Request. All Pull Requests are reviewed before merging, and a reviewer will need to volunteer. Further information is available at: https://www.klipper3d.org/CONTRIBUTING.html

There are some steps that you can take now:

  1. Perform a self-review of your Pull Request by following the steps at: https://www.klipper3d.org/CONTRIBUTING.html#what-to-expect-in-a-review If you have completed a self-review, be sure to state the results of that self-review explicitly in the Pull Request comments. A reviewer is more likely to participate if the bulk of a review has already been completed.
  2. Consider opening a topic on the Klipper Discourse server to discuss this work. The Discourse server is a good place to discuss development ideas and to engage users interested in testing. Reviewers are more likely to prioritize Pull Requests with an active community of users.
  3. Consider helping out reviewers by reviewing other Klipper Pull Requests. Taking the time to perform a careful and detailed review of others work is appreciated. Regular contributors are more likely to prioritize the contributions of other regular contributors.

Unfortunately, if a reviewer does not assign themselves to this GitHub Pull Request then it will be automatically closed. If this happens, then it is a good idea to move further discussion to the Klipper Discourse server. Reviewers can reach out on that forum to let you know if they are interested and when they are available.

Best regards, ~ Your friendly GitIssueBot

PS: I'm just an automated script, not a human being.

Arksine commented 5 months ago

Hi. After an initial review it appears to me that this PR can change behavior of sensors that depend on the RunoutHelper. Currently, self.min_event_systime is only reset after runout/insert gcode is processed. This PR resets it after each change in state. This could cause an event to be skipped that would otherwise be detected.

Firing events would allow additional software to reuse this class, without resolving for hacks like https://github.com/moggieuk/Happy-Hare/blob/main/extras/mmu_sensors.py#L136

Currently Klipper doesn't have official support for 3rd party extensions. This is something Kevin is looking to add in 2024. IMO extensions really need a stable API with semantic versioning. Using the example of the Happy Hare, even if this were to be merged the 3rd party extension would have to verify that the installed version of Klipper supports these events and fallback if it doesn't. It would likely make more sense to exclusively use the workaround rather than support both.

Additionally, I would consider adding a new config parameter, allowing insert_gcode and runout_gcode to be executed regardless of printing status.

I would be ok with this change.

mdvorak commented 5 months ago

Ah, I missed that change in behavior. However if you'll agree with the alternative implementation, I'll prepare new PR. It is not so "clean", but it will fit in stable configuration API.

Thanks! Looking forward to extension support.