>>> Join Us in the Fight Against Air Pollution

AirGradient Forum

Outdoor Temperature and humidity reading correction

We recently found out that it seems that the PMS5003T humidity and temperature readings differ among different production batches from the sensor manufacturer.

This obviously makes the compensation quite tricky. In our next firmware update we will read out the firmware version from the PMS5003T module and then we hope we can adjust the correction algorithms per firmware version.

2 Likes

I don’t expect to be able to do this same thing with the ESPHome firmware as I’ve not seen any evidence that the current code can provide the firmware version to know which algorithm to use. Currently could change the package line to sensor_pms5003t_uncorrected.yaml if wanted to use it without any of the corrections being applied

Once the AG firmware is available, if we can see how to obtain the firmware information then it should be fairly easy to extend the PMSX component in ESPHome. It’s just more I2C registers to read, presumably.

I’m a bit late to the discussion, but I personally found fascinating the report by @ex-nerd quoted below.

@Achim_AirGradient , doesn’t it sound like a win-win situation, as one would at the same time extend the life of the PM sensor (the first sensor expected to have issues, right?) as well as potentially also fix the issue with temperature and RH readings in outdoor monitors?

I understand also from this older blog post (A Simple Linear Correction Algorithm for Temperature) that: The reason for this deviation is that the electronic components inside the PM sensor heat up the air that is flowing through it.

So I assume there might be an obvious downside of reducing the PM sensor sampling period to 2 minutes (that I can’t think of right now), but could we provide the end user at least with such option under the monitor settings in the AirGradient app?

I believe there could be two potential downsides for the sleep mode.

  1. The number one failure we see is that insects get into the unit. I can imagine that this could happen much more frequently if the fan stops for a few minutes due to energy savings. This would then counter any potential longer life of the sensor module.

  2. The more measurement points you take and average them, the more accurate your readings are.

Hi @Achim_AirGradient , thanks for your comments - responding below to each point:

  1. But if the units are failing even if they have the fan practically constantly active (assuming failed units were using stock firmware), couldn’t we then rather conclude that the fan activation is not playing a role on avoiding the insects?

  2. As I have reported in the forum (link) and GitHub (link), I’m under the impression that the high sampling frequency is only being used for online LED display on indoor monitors, whereas the averaging only seems to take place in monitors with two PMS sensors. Standard indoor and outdoor units with one sensor rather seem programmed to discard all the readings in between (i.e. 59 out of 60 seconds of data), and only send to the server the latest one (once per minute). So unless I’m overlooking something (which may likely be the case, but I’m still waiting on a feedback there), currently we’re already only storing raw (not averaged) readings every minute - which may not be much different to the proposed solution of sampling every two minutes.

Also, I’d like to add that the user may be informed about these considerations and still have the final choice. Based on all of this, I personally would prefer to have extended life and correct temperature + RH readings.

Thanks for making the github issues. This is the right place to address this and I am pretty sure it will be addressed in one of the next releases.

I was under the impression that the correction algorithm is fully implemented now in Home Assistant, but while the agreement with my other sensors is a lot better at temperatures >5C it is still off by quite a bit at lower temperatures. I am running HA 2024.10 and firmware 3.1.9.

Have this been implemented?

Just recieved 2 indoor (I-9PSL) and 1 outdoor (O-1PST) kits, flashed all to 3.1.9 and put on the same shelf with AirVisual device (and also noname weather station not connected to HA).

Temperature:
изображение

Humidity:
изображение

When the correction algorithm of the outdoor model was developed, it was done outdoors and we have seen that the wind (even a small breeze) has an impact.

Additionally the monitor need to be upright and not laying on the table as this also most likely impacts the heat distribution in the enclosure.

We are working on also letting people add their own custom calibration parameters and then hopefully people can also fine tune their monitors. I will talk to the team to accelerate this implementation.

1 Like

Thanks for this note. Tried to put the monitor upright:

Nothing changed: still temperature is about +1 °C, humidity +8%

Sounds terrible for me. I cannot control wind, sun, rain, etc. Can I ever trust the values?
When the unit is indoor and compared to others, I see the values are incorrect.
Outdoors they will additionally depend on many factors, so they will be even less correct?

That will be great.
But will it help (see above)?
Ok, I could “calibrate” setting -1 °C for temperature and -8% for humidity for my unit. But should I trust the values after that? :worried:

By the way, why isn’t separate sensor used for temperature and humidity?
According to datasheet, SHT41 sensor used in indoor unit can operate in range “0…100 %RH, -40…125 °C”.
The sensor is rather small, not a big deal to find place for it. May be, put it instead of (nearly useless in my opinion) TVOC sensor.

I have also wondered about this, which is why I’ve collocated a SHT45 and am considering if I want to kick off a run of PCBs that would contain both SHT45 and SGT41…

Ok, I could “calibrate” setting -1 °C for temperature and -8% for humidity for my unit. But should I trust the values after that? :worried:

In my experience a temperature offset will do a good job (and 1°C is very well in the realm of reasonable adjustments.) A humidity offset will certainly not work though. It isn’t a linear measure. Here’s a psychrometric chart to give you idea how complicated RH really is:

.

Your best bet would be to convert to specific humidity at your initial temperature, apply any offsets to that and convert back to RH at the offset temperature. But in order to make that conversion precisely, you will also need atmospheric pressure which is another sensor… (Although there is a pretty good approximation that works with just temperature & RH.)

The correction formula for humidity isn't quite right contains some of my investigations into how accurate RH% measurements are & has some code to convert to absolute humidity if you want to go that route.


Mitigating effects of environmental factors is just super hard in general. Indeed, no 100-200 USD consumer device with get temperature readings exactly right at all if there’s direct sunlight warming the device’s case. Yes, there will be slight differences in the measurements between still air and hurricane-like conditions as well. So best that can be done here is acknowledging and understanding what environmental factors affect the readings, mitigate them to the best of your ability and interpret data with these in mind.

In my experience differences in air flow can affect temperature readings by up-to ~1°C with the AG’s outdoor monitor. But I also see ~1-2°C delta between two north-facing corners of a well insulated house, so…

2 Likes

Just trying to find out what is the use of outdoor monitor.

  1. CO2 measurement works well.
    But that is for scientific purposes only, no use for myself.

  2. SGP41 works well (VOC and NOx measurements).
    But cannot imagine any practical usage of having these values from outdoors (even indoors there is very little usage, see discussion here).

  1. PM is what I have bought this device for (to monitor how PM2.5 inside correlates with PM2.5 outside).
    Works… strange.
    Usually I have low values inside (EPA filters on ventilation unit).
    Yesterday tried to produce some smoke. Got 13-15 from two indoor units and 28 from outdoor unit standing side-by-side.
    PM0.3 from outdoor unit is always extremely more. For example, now both indoor units show 0, outdoor unit shows 183. In yesterdays smoke indoor units showed 800-900, outdoor - 4600 particles/dL.
    So, I cannot trust values from outdoor unit at all.

  2. Temperature and humidity - see above.
    Yes, I understand that it not a simple task to get the values.
    But I also see that even in ideal conditions the results are non-accurate. So, when we add wind, sun and rain - no trust at all.

May be, there is something wrong with Plantower module in my outdoor unit?
Should I try buying another one from Aliexpress and try to replace?

Can you check if you are affected by one of the low reading Plantower PMS5003 modules and then apply the correction.

https://www.airgradient.com/documentation/calibrate-low-pms-sensors/

So far we have found no issues with the Plantower PMS5003T that we use for the outdoor model.

So my guess is that your indoor unit might be too low.

You are right, my ONE units are affected, and I have already applied correction in the dashboard. And in the dashboard “the smoke peak” from ONE units is 18-21. Not 28 as the Open Air, but not 13-15 as in Home Assistant.
I should experiment a little bit more with smoke.

We are in the last stage for testing a fw update that will also apply this correction to HA and on the display of the monitor.

I should wait for it then and experiment with the new version.

I can’t help but share today’s charts.


Temperature form outdoor unit increased for ~1.5 °C synchronously with CO2 level increase.
Before that it was nearly the same (I did nothing, 2 days before it was stable +1 °C).
Seems to live its own life. :worried:

Can you please post a photo on the setup showing ask three monitors? Are they all completely next to each other?

Yes, they are. And outdoor unit is vertical with access from the bottom.

The temperature lives its own life. Chart for last 3 days:
изображение

1 Like