Skip to content

Commit 6aaa02c

Browse files
committed
Add gcode hooks
1 parent a15c7d9 commit 6aaa02c

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

octoprint_filamentreload/__init__.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ def bounce(self):
3131
def switch(self):
3232
return int(self._settings.get(["switch"]))
3333

34+
@property
35+
def after_pause_gcode(self):
36+
return str(self._settings.get(["after_pause_gcode"])).splitlines()
37+
38+
@property
39+
def filament_detected_gcode(self):
40+
return str(self._settings.get(["filament_detected_gcode"])).splitlines()
41+
3442
def on_after_startup(self):
3543
self._logger.info("Filament Sensor Reloaded started")
3644
if self._settings.get(["pin"]) != "-1": # If a pin is defined
@@ -43,7 +51,9 @@ def get_settings_defaults(self):
4351
return dict(
4452
pin = -1, # Default is no pin
4553
bounce = 250, # Debounce 250ms
46-
switch = 0 # Normally Open
54+
switch = 0, # Normally Open
55+
after_pause_gcode = '',
56+
filament_detected_gcode = '',
4757
)
4858

4959
def get_template_configs(self):
@@ -65,7 +75,6 @@ def on_event(self, event, payload):
6575
Events.PRINT_DONE,
6676
Events.PRINT_FAILED,
6777
Events.PRINT_CANCELLED,
68-
Events.PRINT_PAUSED,
6978
Events.ERROR
7079
):
7180
self._logger.info("Not printing: Filament sensor disabled")
@@ -77,14 +86,19 @@ def on_event(self, event, payload):
7786
def check_gpio(self, _):
7887
sleep(self.bounce/1000)
7988
state = GPIO.input(self.pin)
80-
if state != self.switch: # If the sensor is tripped
81-
self._logger.info("Out of filament!")
82-
if self._printer.is_printing():
83-
self._logger.info("Pausing print.")
84-
self._printer.toggle_pause_print()
89+
if state != self.switch:
90+
self._logger.info("Out of filament, pausing!")
91+
self._printer.pause_print()
92+
if self.after_pause_gcode:
93+
self._logger.info("Sending after pause GCODE")
94+
self._printer.commands(self.after_pause_gcode)
95+
self._filament_change = True
8596
else:
8697
self._logger.info("Filament detected!")
87-
98+
if getattr(self, '_filament_change', False):
99+
self._logger.info("Sending filament detected GCODE!")
100+
self._printer.commands(self.filament_detected_gcode)
101+
self._filament_change = False
88102

89103
def get_update_information(self):
90104
return dict(

octoprint_filamentreload/templates/filamentreload_settings.jinja2

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,16 @@ Define the pin used by your sensor and the debounce timing for false positive pr
2424
</select>
2525
</div>
2626
</div>
27+
<div class="control-group">
28+
<label class="control-label">{{ _('After pause GCODE:') }}</label>
29+
<div class="controls">
30+
<textarea rows="4" class="block" data-bind="value: settings.plugins.filamentreload.after_pause_gcode"></textarea>
31+
</div>
32+
</div>
33+
<div class="control-group">
34+
<label class="control-label">{{ _('Filament detected GCODE:') }}</label>
35+
<div class="controls">
36+
<textarea rows="4" class="block" data-bind="value: settings.plugins.filamentreload.filament_detected_gcode"></textarea>
37+
</div>
38+
</div>
2739
</form>

0 commit comments

Comments
 (0)