BME280 relative humidity wrong?

Now he tells me… the ones I ordered had i2c pins though so I think I’m good

1 Like

I ordered similar ones - with I2C pins, so i guess we’re gonna keep crossing fingers until they arrive…
What chineae really like to “mess up” are BMx280 chips. If you look on ebay/aliexpress all sell BME/BMP280. The cheapest ones don’t have the option to choose the model, under specs humidity is stated, they are often sold as BME280 but you really get BMP280 (without humidity). I just got these “fakes” recently. It ended up with partial refund for cheating.
Now i know that the ones with price around 1-2 euro are always BMP’s, and usually BME’s are mounted on smaller PCB than BMP’s (interesting, though, why PCB’s are not the same…).
Since all these are fakes i guess that best option is to connect several of them at the same place for a week or so and compare output, to see the difference. I bought cheap temperature modules once (those in a small plastic box) and three of them all show different temp’s - the difference was over 2 degress… :cold_face: so, you get what you pay…

My AUD$4 BME’s are all screen printed with BME…

Yeah, well, they are printed BME allright. The question is are they real…? You’ll know only when you connect them. Mine are printed with both marks, and correct one “SHOULD” be marked with a marker, but of course it’s not… but 4 AUD is around 2.5€ - that can be correct sensor, if you’re lucky you can find them at that price, but it’s really lowest one for BME’s.

Well they all have pressure, temp and humidity so I think they are real?

If so, they are real, correct. BMP’s don’t have humiditiy.

1 Like

I think i finally found a solution to my “problem”. I monitored two BMP’s for some time: one is located outside and one inside. So, here’s data:

outside:
temp: -6,4 deg. Celsius
abs. pressure: 994 hPa
rel.pressure (calculated from original formula): 1035 hPa

inside:
temp: 15,8 deg. Celsius
abs.pressure: 994hPa
rel.pressure (calculated from original formula): 1032hPa

Here it’s clearly that ESP’s formula is wrongly dependant on temperature, while it really shouldn’t be - abs.pressures are exactly the same, only relative differs.

I searched some more on internet and found that in BMP180 datasheet there’s actually a formula for calculating relative humidity (interesting though that relative pressure is not mentioned at all in BMP/E280 datasheets…):

Prel= ((pressure)/pow((1-((float)(ELEVATION))/44330), 5.255))

direct ESPHome version:

lambda: |-
const float STANDARD_ALTITUDE = 315; // in meters, see note
return ((id(abs_pressure_out).state)/pow((1-((float)(STANDARD_ALTITUDE))/44330), 5.255));

(see BMP180 datasheet, page 17)

Indeed it contains NO TEMPERATURE, as i predicted. Namely, absolute pressure is already temperature compensated in BMP280, so i think it’s wrong to do it again.

Pressure, calculated with this new formula shows 1032hPa, so it seems that ESP’s formula is most accurate at appr.15-20 degrees and gets more errorneous when temps get lower (this is, in fact, what i noticed, too).

So how significant is 3hPa in the overall scheme of things?

You have the point, sure, but for me at least It’s not so much these 3 hPa difference than the principle itself. From the start of my HA project i often check my data with official ones, so i noticed this difference between tasmota and ESPHome data right away. I guess that i’m such type of person that this small details bothers me…

Just as a follow up to this, I will not be using SHT31Ds either.

Their temperature is consistently 2°C higher than my Fluke K-type thermocouple. And thus their calculated relative humidity is too low as well.

My DHT22s agree perfectly with the Fluke. So I will be sticking with them.

Also I know the humidity is incorrect as my dehumidifiers cut out at 55% RH. Exactly what the DHT22s are reading. The SHT31s are reading 10% lower than this.

1 Like

Hm…
thermometers, which come with multimeters have pretty low accuracy, don’t take them as a reference. Maybe thermocouple itself is accurate, but how accurate is electronics behind?
I looked at original SHT31, which has temperature accuracy stated as ± 0.3 degrees, so that’s pretty accurate. I guess you mean that chinese SHT’s are off? Mine are also quite “wrong”, like degree or so higher than chinese BME’s… Now, the real question is: are BME’s too low or DHT’s too high…

So, i decided to buy original sensor. I’m just in the middle of decision either to purchase original BME280 or DHT31. Or, maybe i’ll just buy both, to be sure…

BTW… air pressure, calculated with my formula above is now always correct, compared with local official data.

Glad you go that sorted.

The SHT was telling me the room was 20°C. The Fluke and DHT were saying 18°C. The room did not feel like 20°C. I know which ones I trust.

Also the relative humidity reported by the SHT is way off, because it is temperature compensating from the wrong temperature. And I know this as my dehumidifiers cut out at 55%, and the DTH agrees.

I don’t know if I got a good batch of DHTs or what but I’m sticking with them. The only downside is that they are a little slower to react than the SHTs.

BTW, both sensor were well isolated from the ESP to prevent heating by it (they were on leads outside the ESP enclosure).

Interesting…
Do you have originals or chinese “fakes”?
I have 5 sht31 and 5 Bme280 (chinese) and all bme’s show pretty much same temp, also all sht’s show same temp, but all sht’s are a good degree lower than bme’s. If readings would be random, ok, i understand, but since all same ones are equal, i don’t know who to trust. That’s why i intend to buy an original to be able to compare and calibrate.

Well I purchased them on Aliexpress but had no reason to believe they were ‘fakes’.

Sensors, bought in aliexpress, banggood (even ebay at some sellers) are more or less all “fakes”. Even if they are originals, they are definitely chips which didn’t pass internal quality control (and therefore they weren’t factory calibrated) - therefore wrong reading. You must take into account that original in adafruit costs around 15 USD (SHT or BME), while these sensors at aliexpress cost in the range of 1-2USD per piece… they just can’t be originals at that price.

If you buy SHT31 at adafruit it will definitely show correct temperature, as said: SHT has ±0,3 degrees guaranteed temp error, humiditiy somewhat more, but still pretty good.

The Adafruit forums have posts indicating the same issue.

https://forums.adafruit.com/viewtopic.php?f=19&t=131177

https://forums.adafruit.com/viewtopic.php?f=19&t=141544

2 Likes

Oh, well…
now i’m baffled… if all that is true then there’s no point of wasting 15 USD for sensor which also “lies”…
The point is which one to trust? I’d just like to “calibrate” my existing sensors, so that they will show at least kind-of correct temperature… i can’t sink them in boiling water, neither in freezing one…And, also, temperature of boiling water is dependant on altitude,so another error to compensate…
i guess i’ll just connect all my sensors, record readings and then draw a line in the middle…

I could easily calibrate the display of the temperature sensor however this temperature is also used internally to calculate the relative humidity and so this will still be wrong. I have no desire to fiddle around with salt solutions to calibrate the RH display (and I suspect it will be a nonlinear equation).

The DHT is good enough for my needs.

I guess that the very same problem you have with SHT’s can also happen with DHT’s, if you ran into a bad one(s)…

I’ve just bought another batch (from the same seller). It has been quite a few years between orders so it will be interesting to see how they compare.

2 Likes