Livetime SDS011 rather poor?

SDS011 is /cheap/ at around $20. Keep in perspective that many commercial systems sell for $2000-$5000. The SDS is used in many commercial systems like the aeroqual which is manufactured in california. It’s a fine little instrument and a bargain. Estimated life is 3 years, or about 300 hours of sniffing. Main impediment to accuracy is getting a good humidity reading. Out of the 30 or so that I have bought two had high readings out of the box, and one just went tits up with zero readings. So, maybe 1:10

DHT22 should be replaced by BMP280 which includes air pressure. Lukas was pretty adamant about this. I have been upgrading my sensors and tossing the DHT22.

I paid more than $20 for the SDS011, but no matter, that’s just the maintenance cost for the sensor set.

The BME280 really gives much better results than the DHT22 in terms of humidity. Is really worth its higher price.

By the way, the sensors are mounted as often suggested, protected in two 90° 70mm PVC pipe bends and in the shadow of a large parabolic antenna.
DHT22_winter_humidity

My SDS012 is now almost 4 years old and still no problems.
The sensor is indoors with tube going outdoors.
I also use a BMP280 in conjunction.
I replace this sensor regularly once a year.
Best is to locate SDS011 indoors for greater lifespan.

I have now the third SDS011 sensor. First one lasted about 1.5 years after that it had constantly too high values. Second sensor lasted about 2.5 years and had, like yours, constantly too low values.
Sensor was mounted directly under a roof next to a massive wall. So no rain could reach the sensor. At that place it was about 2 to 4 degrees warmer because of the proximity to the wall. Still sensors didn’t last very long. So I can confirm your experience.

I was also worried about a few SDS011 which constantly read too low compared to a well working sample, which gives results very close to the next official station.

As the data was qualitatively OK (i.e. the shape was right) but just quantitatively off, I added a scaling factor.

Sample result from the past 2 days:

SC (SDS) - SDS011 SensorCommunity built, no heating
NAM (SDS) - SDS011 in NAM case with heating and a scaling factor of approx “2”
SC (SPS) - Sensirion SPS30 in same casing as SC (SDS)
NPM 2.5 - Tera NextPM with internal heating


(data shown has been smoothed via moving average of 5 values)

My 2 cents:

  • scaling factor works at least in my case
  • heating does not have a visible effect
  • note for @pjg : NPM with fulltime option did not have a visible effect but the sensor sounds much healthier with the fan not running all the time :slight_smile:
1 Like

Very interesting!

I’m comparing one SDS011 with an Ecowitt (link) and the result is an average difference of 52%. But I do not have a certain reference that allows us to understand if WH41 overestimates or SDS underestimates.
You have been able to adjust one to their own average.

Maybe i need to add more SDS011 sensors to not suffer the potential error of a single (maybe i have the worst and i don’t know) :roll_eyes:

It’s not just adjusting one to the average, it’s adjusting one SDS to the other SDS which is close to the official data.

Here is an example from last week. Orange is the data I scrape from the official sensor’s website. It does not update between 21:00 and 4:00 but for the rest of the day the agreement is usually quite good.

The peaks are caused by my neighbour burning old furniture and parquet.

right, I didn’t understand that you also have the reference data.
I am missing a reference point to considere in my compare.

The closest reference sensor is at 8.6 km and makes only one data per day at 23:10.

The distance is about 4km over here… not perfect but depending on the weather it’s a good match.

It’s a pity you get just one value per day. Where is it located? Any chance to talk to the operator and ask for more data? I was surprised that over here I got a quick response and they added PM2.5 to the summary view on their website (was just PM10 before).

I’m very interested in finding out how to get external data (from an official monitoring station) into my InfluxDB/Grafana setup.

1 Like

Additionally, I’d like to know how one can import the Grafana graphs from sensor.community into a private account. (I’d like to setup an alert, which is not possible without an account…)

I have written several python scraping scripts, of which one is running as an hourly cron job on the same Raspberry Pi which hosts the influxdb. The currently active script uses beautiful soup to read the PM data from the respective website but I have also used phantomjs for an Ajax based website. The PM data is then sent to the influxdb. The scripts are by no means elegant but after lots of trial & error work. I can post one example, if you want.

Yes please, I’d be very happy! :slight_smile:

Hope this helps. Please don’t laugh. The script is far from perfect.

I used to have one for EEA website, but IIRC the site was updated and the script needs to be adapted. The one below is for a website operated by the federate state of Brandenburg, Germany.

from influxdb import InfluxDBClient
from bs4 import BeautifulSoup
import requests
import re
import time
from datetime import datetime, tzinfo, timedelta

# data is taken with a delay of x hours (usually 1)
delay = 1

# as above but in local time and save as unix timestamp for influxdb
call_time = datetime.now().replace(microsecond=0, second=0, minute=0)
data_time = call_time - timedelta(hours = delay)
data_time_unix = int(time.mktime(data_time.timetuple()))

# read url and filter PM values
page = requests.get("https://luftdaten.brandenburg.de/luftguete?p_p_id=zitbb_luftguete_portlet_LuftguetePortlet&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&_zitbb_luftguete_portlet_LuftguetePortlet_javax.portlet.action=filterMeasurementsAction&p_auth=QRO7ZAxo")
soup = BeautifulSoup(page.content, 'html.parser')
datablock = soup.get_text()
datalines = datablock.splitlines()

i = 0
for line in datalines:
    if ">>ENTER_YOUR_STATION_HERE<<" in line:
        break
    i = i + 1

PM10_line  = i + 17
PM2_5_line = i + 20

PM2_5_value_raw = datalines[PM2_5_line]
PM10_value_raw  = datalines[PM10_line]

# clean up and store final values
PM10_value  = PM10_value_raw.strip()
PM2_5_value = PM2_5_value_raw.strip()

data =[]
measurement_value = ">>WHICH_INFUXDB_MEASUREMENT_TO_BE_USED<<"
location_value = ">>LOCATION_TO_BE_SHOWN_IN_INFLUXDB<<"

# turn timestamp to milliseconds
datatime = int(data_time_unix)*1000
data.append("{measurement},location={location} PM25={PM2_5}i,PM10={PM10}i {timestamp}".format(measurement=measurement_value,location=location_value,PM2_5=PM2_5_value,PM10=PM10_value,timestamp=datatime))

client = InfluxDBClient(host='192.168.XXX.XXX', port=8086)
client.write_points(data, database='>>YOUR_DATABASE<<<', time_precision='ms', protocol='line')

statuscode = page.status_code
timestring = data_time.strftime("%d/%m/%Y, %H:%M:%S")
print("PM update -> " + timestring + " >>> page statuscode " + str(statuscode) + " >>> PM2.5 / PM10: " + str(PM2_5_value) + " / " + str(PM10_value))

Crontab contains the following line (crontab -e)

30 * * * * /usr/bin/python3 /home/pi/luftdaten/scrape_BB.py >> /home/pi/luftdaten/PM_scrape.log 2>&1

Back to the original topic: What to expect for the lifetime? I was shocked to read that SDS011 is meant for indoor use only.

I have two outdoors sensors with SDS011 in NAM case/setup. One of them freezes every few weeks. Restarting the device gets the SDS011 back. The humidity/temperature sensor works all the time and I have a continuous WiFi chart as well.

Is anything to check? Or should I already replace the SDS011?

Accuracy is also a good question. I always had the feeling this sensor underestimates pollution. It’s near the busiest road of the city, next to a train station (so that everything gets brown with iron dust). Nevertheless, it’s always in the green range.

My second sensor has worked this year without any issue and delivers comparable values to two other sensor in about 4 km distance. Next official dust sensors in cities in 25-40 km distance show 30% higher values.
As described in my first post, is outside located.

I would replace your SDS011, when you have already checked the wiring. Don’t trust the plug contacts in the cheap construction set, use a soldering iron or more reliable plugs.

Hi Holler,

nobody seems to have answered the core your question. I am collecting the SDS011 for use as bookend or roof tiles :wink: . But nobody seems to have investigated why those little bastards regularly fail (imho).
I tried, but due to a lack of competence, didn’t find any hints. Did you or anybody else have an idea?

Kind Regards
Maniac

If you are in the countryside it can be normal it measures less.

@Thomas_P is the PSU good enough ?

@pjg : Well it does not degrade over the course of a year or longer and works fine with a new SDS011 for some months.
I personally believe the SDS011 has some kind of internal “counter” or intended breaking point to break after an estimated number of runs.

I don’t think that’s true. People are running these sensors for many years without any apparent issue.

What’s the orientation of the sensor in your setup?

1 Like