Skip to content

Commit 36dfa3a

Browse files
authored
SW-1317 add pressure sensor data to analytics (mrbeam#1504)
1 parent d2f244a commit 36dfa3a

File tree

3 files changed

+43
-16
lines changed

3 files changed

+43
-16
lines changed

octoprint_mrbeam/analytics/analytics_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def analyticsHandler(plugin):
3636

3737
class AnalyticsHandler(object):
3838
QUEUE_MAXSIZE = 1000
39-
ANALYTICS_LOG_VERSION = 22 # bumped for SW-653 - added frontend event update_info_call_failure to see when this backend call fails
39+
ANALYTICS_LOG_VERSION = 23 # bumped for SW-1317 - added pressure to test fan rpm event
4040

4141
def __init__(self, plugin):
4242
self._plugin = plugin

octoprint_mrbeam/iobeam/dust_manager.py

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

octoprint_mrbeam/iobeam/iobeam_handler.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class IoBeamValueEvents(object):
5555
RPM_VALUE = "iobeam.rpm.value"
5656
STATE_VALUE = "iobeam.state.value"
5757
DYNAMIC_VALUE = "iobeam.dynamic.value"
58+
EXHAUST_DYNAMIC_VALUE = "iobeam.exhaust.dynamic"
5859
CONNECTED_VALUE = "iobeam.connected.value"
5960
FAN_ON_RESPONSE = "iobeam.fan.on.response"
6061
FAN_OFF_RESPONSE = "iobeam.fan.off.response"
@@ -1068,7 +1069,13 @@ def _handle_exhaust(self, dataset):
10681069
:param dataset:
10691070
:return: error count
10701071
"""
1071-
# self._logger.info("exhaust dataset: '%s'", dataset)
1072+
self._logger.debug("exhaust dataset: '%s'", dataset)
1073+
# get the pressure sensor reading this will come as dust with the current iobeam version
1074+
if "dust" in dataset:
1075+
vals = {
1076+
"pressure": dataset["dust"],
1077+
}
1078+
self._call_callback(IoBeamValueEvents.EXHAUST_DYNAMIC_VALUE, dataset, vals)
10721079
return 0
10731080

10741081
def _handle_link_quality(self, dataset):

0 commit comments

Comments
 (0)