@@ -72,6 +72,7 @@ def __init__(self, plugin):
7272 self ._just_initialized = False
7373
7474 self ._last_rpm_values = deque (maxlen = 5 )
75+ self ._last_pressure_values = deque (maxlen = 5 )
7576 self ._job_dust_values = []
7677
7778 self .extraction_limit = 0.3
@@ -120,6 +121,9 @@ def shutdown(self):
120121
121122 def _subscribe (self ):
122123 self ._iobeam .subscribe (IoBeamValueEvents .DYNAMIC_VALUE , self ._handle_fan_data )
124+ self ._iobeam .subscribe (
125+ IoBeamValueEvents .EXHAUST_DYNAMIC_VALUE , self ._handle_exhaust_data
126+ )
123127 self ._iobeam .subscribe (
124128 IoBeamValueEvents .FAN_ON_RESPONSE , self ._on_command_response
125129 )
@@ -142,6 +146,25 @@ def _subscribe(self):
142146 self ._event_bus .subscribe (OctoPrintEvents .PRINT_RESUMED , self ._onEvent )
143147 self ._event_bus .subscribe (OctoPrintEvents .SHUTDOWN , self ._onEvent )
144148
149+ def _handle_exhaust_data (self , args ):
150+ """
151+ hanldes exhaust data comming from iobeam EXHAUST_DYNAMIC_VALUE event
152+
153+ Args:
154+ args: data from the iobeam event
155+
156+ Returns:
157+
158+ """
159+ pressure = args .get ("pressure" , None )
160+ if pressure is not None :
161+ self ._logger .debug (
162+ "last pressure values append {} - {}" .format (
163+ pressure , self ._last_pressure_values
164+ )
165+ )
166+ self ._last_pressure_values .append (pressure )
167+
145168 def _handle_fan_data (self , args ):
146169 err = False
147170 if args ["state" ] is not None :
@@ -247,19 +270,13 @@ def _finish_test_fan_rpm(self):
247270 try :
248271 # Write to analytics if the values are valid
249272 if self ._validate_values ():
250- if len (self ._last_rpm_values ):
251- rpm_average = sum (self ._last_rpm_values ) / len (
252- self ._last_rpm_values
253- )
254- else :
255- rpm_average = - 1
256-
257273 data = dict (
258- rpm_val = rpm_average ,
274+ rpm_val = list ( self . _last_rpm_values ) ,
259275 fan_state = self ._state ,
260276 usage_count = self ._usage_handler .get_total_usage (),
261277 prefilter_count = self ._usage_handler .get_prefilter_usage (),
262278 carbon_filter_count = self ._usage_handler .get_carbon_filter_usage (),
279+ pressure_val = list (self ._last_pressure_values ),
263280 )
264281 self ._analytics_handler .add_fan_rpm_test (data )
265282
@@ -463,12 +480,15 @@ def _validate_values(self):
463480
464481 if not result and not self ._plugin .is_boot_grace_period ():
465482 msg = "Fan error: {errs}" .format (errs = ", " .join (errs ))
466- log_message = msg + " - Data from iobeam: state:{state}, rpm:{rpm}, dust:{dust}, connected:{connected}, age:{age:.2f}s" .format (
467- state = self ._state ,
468- rpm = self ._rpm ,
469- dust = self ._dust ,
470- connected = self ._connected ,
471- age = (time .time () - self ._data_ts ),
483+ log_message = (
484+ msg
485+ + " - Data from iobeam: state:{state}, rpm:{rpm}, dust:{dust}, connected:{connected}, age:{age:.2f}s" .format (
486+ state = self ._state ,
487+ rpm = self ._rpm ,
488+ dust = self ._dust ,
489+ connected = self ._connected ,
490+ age = (time .time () - self ._data_ts ),
491+ )
472492 )
473493 self ._pause_laser (
474494 trigger = msg , analytics = "invalid-old-fan-data" , log_message = msg
0 commit comments