[Idea] Air Quality / Health Impact Plugin - HELP WANTED!

The Problem

Melting plastics in your home, even PLA, could be harmful to your health. Here are some research articles:

Tl;dr: it may be bad, more research is needed. No scaremongering, just science.

While we wait for additional research, an easy way to enable OctoPrint users to monitor air quality around their printer would:

  • Make it possible to test the current attempts at DIY ventilation solutions. It seems most people who have attempted to do something about the potential health risks, including the creators, are dangerously and wrongly assuming that if it looks like a filter it'll do the job
  • Reduce the health risk of 3D printing at home
  • Help the community learn which filaments and brands present the highest/lowest risks
  • Increase awareness of potential health risks, and potentially research funding as a consequence
  • Increase interest and development of DIY enclosures and filtration systems
  • Encourage filament companies to actively work to reduce potentially harmful emissions

Personally, as I live in a flat/apartment, we don't have the space to stay out of the room all day, and I always got headaches when printing with PLA+ in the office (our small second bedroom), so my printing is on hold until I can continue safely.

Help Wanted...

I'm a Product Manager with some UX experience. I'm not a developer (I'm really at university-level coding), but I'm having a go, see the GitHub repository. Contributions from people who know what they're doing would be much appreciated!

Current Plugins

Octoprint-SDS011 is a great start, it's complicated to install, has limited functionality, and doesn't use the best value (accuracy vs cost) sensor. I wasn't able to find any others.

Particulate Matter Sensor

The hardware should balance cost, accuracy, size and ease of acquisition to reduce the barrier for getting this set up. I'd suggest starting with a single sensor that balances these attributes, and add more in the future. At a minimum, the sensor should output measurements for 1.0 μm, 2.5 μm and 10 μm particles.

Options:

HoneyWell HPM HPMA115C0-003 and -004

Plantower PMS5003

  • Well regarded in other projects and scientific experiments.

Plantower PMS5003ST

  • Also includes formaldehyde, temperature and humidity sensors, but rarely mentioned online - no experiments, very few public projects, and if one sensor fails, it cannot be replaced individually.

Plantower PMS7003

  • Similar to the PMS5003 but half the size

Plantower PMSA003

SDS011

  • Doesn't seem to be as accurate as the other options.

SDS021

  • Doesn't seem to be as accurate as the other options.

SGP30

  • Board only, no case with fan/duct to provide continuous air flow across sensor.

So far, I think the Plantower PMSA003 is the one to go with, at least initially. This should be connected via USB to aid in support for various OctoPrint capable devices and for multiple sensors per OctoPrint device. The two best tools I've found for interacting with this sensor (and others) are PyPMS and plantower.

Longer term, it would be helpful to support a variety of sensors.

Questions:

  1. Humidity can affect the sensor reading, and consequently the humidity should also be measured and compensated for. How?

Humidity Sensor

Pending research...

BME680 ??

VOCs Sensor

Pending research...

BME680

MQ-135

Serial UART to USB Adaptors

Some information about what these do and the various options can be found here: https://www.sjoerdlangkemper.nl/2019/03/20/usb-to-serial-uart/

The FT232R seems to be the most popular. It's easily available cheaply from AliExpress for ~$1.50 and doesn't require drivers to be installed on a number of compatible platforms. If needed, PyFTDI provides an all-Python driver.

I think it's reasonable to remain adaptor-agnostic in this project, expecting users to either follow the hardware recommendations to purchase the above, which is very affordable, or install the drivers required for their chosen alternative.

Requirements

  • Must always be as easy as possible to install and configure
  • Python 3 for compatibility with OctoPrint 1.4 onwards

MVP

  1. What are the particulate matter measurements inside my enclosure/print area?
  2. What are the particulate matter measurements outside of my enclosure/print area?
  3. How do my measurements compare to my baseline when there is no 3D printing activity?
  4. Where do my measurements sit in the particulate matter guidelines?

MVP+1

  1. What are the VOC measurements inside my enclosure/print area?
  2. What are the VOC measurements outside of my enclosure/print area?
  3. How do my measurements compare to my baseline when there is no 3D printing activity?
  4. Where do my measurements sit compared to guidelines?

MVP+2

  1. What were the readings over time?

MVP+3

  1. Use standby mode of sensor intelligently between readings to ensure longevity of parts, as they tend to have a stated lifetime before readings lose accuracy

MVP+4

  1. Compensate sensor readings for humidity.

Post-MVP

  • Investigate options for monetisation (the basic functionality in the MVP, however, should always be free)
  • How do my filaments compare for safety?
  • Support more sensor models
  • Support more Serial UART to USB chips
  • Help buyers identify relatively safe and unsafe filament
  • Notify me when it's safe to enter the room/open my enclosure
  • Warn me when it is unsafe to be in the room/open the enclosure

Next Steps

  1. Build the fundamentals of serial device management in an OctoPrint plugin (WIP, see GitHub repo)
  2. Start working through the MVP requirements
  3. Design a simple sensor to UART adapter cable and get a supplier to manufacturer it
  4. Design 3D printed parts to hold the sensor(s) and adapter(s)
  5. Research into applicable VOCs and appropriate hardware
  6. Choose the best suited humidity sensor

Reference Projects

The following projects use various sensors. I've been collecting these as references for interacting with the sensors.

https://opensource.com/article/18/3/how-measure-particulate-matter-raspberry-pi
https://dustsensor.net/
https://github.com/anoochit/pm25_pms7003
https://github.com/arendst/Tasmota/wiki/Sensors-Supported-by-Tasmota
https://github.com/rpanfili/airQualityMeter
https://www.thingiverse.com/thing:2320020
https://all3dp.com/4/smart-diy-3d-printer-emission-monitor-collects-harmful-volatile-organic-compound-data-at-home/
https://hackernoon.com/how-to-measure-particulate-matter-with-a-raspberry-pi-75faa470ec35
https://learn.adafruit.com/pm25-air-quality-sensor/python-and-circuitpython
https://learn.adafruit.com/remote-iot-environmental-sensor
https://forum.mysensors.org/topic/6404/next-generation-dust-sensor-for-mysensors
https://www.rigacci.org/wiki/doku.php/doc/appunti/hardware/raspberrypi_air
https://www.balena.io/blog/build-an-environment-and-air-quality-monitor-with-raspberry-pi/
https://cassiopeia.hk/laserdust/
https://github.com/teusH/MySense/blob/f164229c49e73947e9549a855a486cfd27c5c98d/docs/pms7003.md
https://www.letscontrolit.com/wiki/index.php/PMSx003
https://github.com/pawitp/android-pmsx003
https://www.hackster.io/kutluhan-aktar/raspberry-pi-adjustable-air-quality-detector-running-on-gui-b7fb75

The following use sensors in OctoPrint for other purposes and may be helpful:

https://plugins.octoprint.org/plugins/filamentstorage/

1 Like

Interesting idea. I've been making updates to the tasmota plugins that incorporate sensor data, both energy monitoring (if available) and temperature/humidity data as long as the tasmota firmware is able to support the sensors. I wonder if tasmota might support these types of sensors?

I am planning on adding a temperature/humidity sensor to my WiFi filament weighing sensor. It should be trivial to use the BME680 instead of the BME280 that I was originally planning to use.

It should also be able to support some of the other sensors. And since it's WiFi, it shouldn't be too hard to get OP to pull in the data from it.

Thanks! It looks like the PMS5003 and PMS7003 are supported, but they haven't listed the PMSA003. It sounds like it might work, though.

Which plugins might support them? This one?

I'm not entirely sure what Tasmota does. It sounds like you need 1x ESP8266 per sensor, and the ESP8266 would share the data output onward in a standardised format? Could be convenient for placing in different rooms, and also if your enclosure top is removable, but for something initial it might be more accessible to keep the cost and complexity down and plug directly into USB.

Temperature and humidity make sense I for a filament-related plugin, particularly as I'm sure a number of people will have a drybox for their filament (I will soon, sick of it snapping after a period without much printing) and will want to know their drybox is working as expected.

If this is something you might want to work on, it could be worth cloning your plugin and re-purposing the clone to support these sensors and appropriate output so it can be used alongside or independently of the WiFi weight plugin? Better than starting from scratch.

Yep, that's the one. My current development branch linked below has the integration. Of course it's currently only temp and humidity for environmental sensors. The tasmota firmware is installed on esp device (I've used mains power relays, specifically sonoff devices, and a nodemcu module successfully). The device handles the reading of data, the plugin just calls out and requests the current data and logs it.

To this, I would add that UFPs from teflon ("PTFE") are known to kill birds-as-pets ("teflon toxicosis"). The temperatures required are usually too high, practically-speaking, for 3D printers.

Although I would agree with the caution for any other type of filament, it feels to me that PLA printing is quite safe in the average environment (outside of a printer farm).

Not to be mean but it feels like the average user these days really doesn't think like a chemist/scientist.

I was asked once to create an in-the-barn milk fat measuring device for dairy farmers. I could easily create one for a scientist. But for a farmer? I passed on the project.

Short answer: don't have the user calibrate. Have the user indicate the measurements of the room they're in (square footage, for example) and behind-the-scenes you've provided a linear function to compensate.


All this said (and I applaud your efforts) I myself would just jump to the next logical step and work on filtering devices and products within this space rather than sensoring devices. In theory then, I might work up sensoring to measure the before/after for the sake of the brochure for the sales people.

To me, it's like there are two parallel universes: one in which many people in Hong Kong, say, are wearing sophisticated IoT devices which tell them how many UFPs they're breathing in and the second universe in which they're instead wearing trendy/fashionable steampunk gas masks.

1 Like

Good idea on calibration. I'm not sure at this point what calibration in this context is, so I'm still to work out how this can be approximated with a few settings options.

Filtering is definitely on my list as I slowly work to complete my enclosure, but there are some assumptions we need to unpack before switching focus from sensors to filters:

  • It is easy for the average user to discover, understand and build a suitable, reliable filter
  • The average user has their printer(s) in a (somewhat) airtight enclosure
  • The average user has a "safe" place to print parts for their filter in the meantime

I'd guess that those assumptions are false. There's also a relatively high cost (in time, money and plastic) to get from "printer on the table" to "enclosed and filtered". While trying to get to this stage, it'd be nice to be able to buy $20 of hardware, plug it in to a Pi, stick it next to the printer, and get some idea on if/when it's safe to go back in the room, and if it's worth me spending my time, money and plastic on building an enclosure and filtering system.

A parallel effort on a filter system for the masses would be great. I've struggled to find any existing public effort on this though, so thought I'd tackle it later.

I contracted for Robo 3D down in San Diego and was very interested in the topic since there were always many printers running all sorts of exotic filament at all times of the day. There was zero regard for the safety concerns and I tried to drag them kicking and screaming into that reality at least from an employee-safety standpoint.

The problem is that the HEPA standard specifies the ability to filter down to 0.3 microns - and the UFPs as measured by the researchers above ranged from 0.012 - 0.116 microns.

1 Like

Another good reason to build this before trying to reduce the emissions...

Some articles state that HEPA filters do not work for particles less than 0.3 microns:

But I'm unsure if this is true or false. Other articles suggest this is a confusion due to the HEPA standards referencing 0.3 microns. This doesn't mean they can't filter out smaller particles. Apparently the way that smaller particles move makes them more likely to repeatedly hit obstacles as they move through the filter, reducing their energy until they cannot escape. So a thick enough HEPA filter should do the trick.

But what type of HEPA filter would actually work, or work best, no one seems to know, aside from a few commercial products, where they're not sharing the details:

There's also a question of which airflow is required for a given size/density of filter, and whether re-circulation could be as effective as venting out a window.

I think the above highlights the need to measure and experiment using scientific method rather than assume that any given setup will actually work. A sensible, consolidated, open source effort to build a filter system for the community would make this move much faster, but I just can't find anything like this.

Although I encourage you, I would remind you that commercial products are in the $3000 to solve this problem. I tend not to do all the leg work so that some company out there then reaps the profits. (I'm a consultant.)

Sure, monitoring is a good idea. Good luck.

Doesn't that just highlight the importance of a public open-source effort/alternative to overpriced commercial products?

2 Likes

Looking back upon 2020 ten years from now, we'll probably cringe at how unsafe 3D printing was back then. Do end-users of (single) 3D printers now need filtering/monitoring? For vanilla PLA, probably not. For everything else, possibly (depending upon the airflow).

And then we flip over to the entire world of MORE THAN ONE PRINTER. We move decidedly into the realm of people with money to pay for solutions. A quickly-growing segment of this group include those who think they're going to get rich by owning/operating a printer farm. We see evidence of them showing up here every month, trying to solve big-company problems on the cheap by harvesting fruit from someone else's tree, basically.

If it were me, I'd solve the problem in a private way and then invite other non-companies to reap the rewards of that semi-open-source work. Don't get me wrong, I have over 70 public repositories on my github. But there are times when I make things like this private and only open to people who aren't running printer farms. I see that as a necessary push-back to the abuses within this open source space. /IMHO

I've updated the first post following:

  • More research and investigation
  • A more useful MVP
  • Future development beyond MVP

I've ordered the first sensor and some UART adapters too, but I've realised that I'm not going to be able to code this myself, so this is kind of blocked until I find a Python developer(s) who is interested in solving this problem with me.

Moved to #development category at the request of the OP.

Hi there, I read your post a couple of days ago, then read MagPi issue 92, there's a whole section in there on Air Quality and Pollution monitoring which mentions the PMS5003 in combination with an Enviro HAT. You can get a free, non dead tree copy of MagPi, here Magpi issue 92 - and all other and future issues are downloadable as PDF. This might push your work forward more quickly. I'm definitely interested as I am 1. asthmatic and 2. a 3D printer user - I noticed I was getting headaches a lot when running two printers in my office. One is now upstairs in my lab. I'd be interested also in having a smoke detector hooked up to kill my printers in the event of a power or filament issue that results in a printer overheating or melting insulation.

1 Like

Thought I'd add a couple of links for articles I've read lately.

Someone I know just posted this a few days ago..

1 Like

With the ESP device, Tasmota, and the Tasmota plugin, you should in theory be able to pull the data and graph in OctoPrint.

https://tasmota.github.io/docs/SDS011/

Thanks, added to the description. That'll help narrow down which VOCs to focus on measuring