Creating an Air Quality Sensor using an SDS011 and ESPHome
After measuring temperature and humidity, the next step in measuring and tracking the air in your home might be air quality. Air quality is broad - comprising dust, pollen, pollutants, VOCs and even gas, smoke and carbon monoxide. For this guide, we’re going to focus on the more general aspect of air quality, and tracking Small and Fine inhalable particulates, also know as particulate matter. At the end, you’ll have a working air quality sensor for ESPHome that you can track in your Home Automation Hub.
The SDS011 is a helpful sensor to track particulate matter (aka particular pollution) at 2.5 and 10 micrometers. The SDS011 is available widely on the internet – I got mine for a fair price from China, but had to wait patiently for it to arrive. To start, ensure that your ESP32 has been set up correctly in ESPHome and online. When connecting your SDS011, connect the
Ground, followed by the
As the communication is done via UART, you need to have an UART bus set in your configuration with the rx_pin connected to the TX pin of the SDS011 and optionally the tx_pin connected to the RX Pin of the SDS011. Additionally, you need to set the baud rate to 9600.
Once this is done, you will need to create the SDS011 in the YAML configuration for your ESP32, by following the template on the ESPHome Site. In my case – I’ve gone for the
PM 10 sensor only, but you can create the
PM 2.5 sensor at the same time. Here is what it looks like in YAML:
Remember: If update_interval is equal to 0min, the SDS011 will be set to continuous measurement and will report new measurement values approximately every second. This will drastically reduce the life of your SDS011 and highly recommended against.
Making It Work
Now that you’ve defined the sensor, click
UPLOAD, and wait for your ESP32 to re-compile and re-upload successfully. Following a restart of Home Assistant, it would’ve imported the
PM 10 sensor into your
Entities list, and you should already be able to start seeing it report values.
Now, the particulate concentration values aren’t very meaningful unless you are continually looking at them each and committed them to memory. What’ll be more helpful is to create a Template sensor to define the tiers of concentration levels, and convert them into something intelligible. Thankfully, DEFRA’s Daily Air Quality Index has already done this for us – and you can see the bands at this page. By taking these, and creating a Template sensor – we will have a new sensor that will tell us if the air surrounding the SDS011 is
Very Poor or
And finally, here is what it looks like in YAML:
Related Links & Posts
Use Home Assistant to Help Plan Your Wardrobe
When I think about the future, it always features a Smart Home AI personality telling me it’s too hot to wear jeans…
Setting up Power and Energy Monitoring with a Shelly EM and Home Assistant
In this guide I’ll demonstrate how to use the very useful Shelly EM as a power and energy monitoring input into your…