@@ -31,6 +31,14 @@ def bounce(self):
31
31
def switch (self ):
32
32
return int (self ._settings .get (["switch" ]))
33
33
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
+
34
42
def on_after_startup (self ):
35
43
self ._logger .info ("Filament Sensor Reloaded started" )
36
44
if self ._settings .get (["pin" ]) != "-1" : # If a pin is defined
@@ -43,7 +51,9 @@ def get_settings_defaults(self):
43
51
return dict (
44
52
pin = - 1 , # Default is no pin
45
53
bounce = 250 , # Debounce 250ms
46
- switch = 0 # Normally Open
54
+ switch = 0 , # Normally Open
55
+ after_pause_gcode = '' ,
56
+ filament_detected_gcode = '' ,
47
57
)
48
58
49
59
def get_template_configs (self ):
@@ -65,7 +75,6 @@ def on_event(self, event, payload):
65
75
Events .PRINT_DONE ,
66
76
Events .PRINT_FAILED ,
67
77
Events .PRINT_CANCELLED ,
68
- Events .PRINT_PAUSED ,
69
78
Events .ERROR
70
79
):
71
80
self ._logger .info ("Not printing: Filament sensor disabled" )
@@ -77,14 +86,19 @@ def on_event(self, event, payload):
77
86
def check_gpio (self , _ ):
78
87
sleep (self .bounce / 1000 )
79
88
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
85
96
else :
86
97
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
88
102
89
103
def get_update_information (self ):
90
104
return dict (
0 commit comments