emonTH Accuracy

I’ve got a humidor which I use to store cigars. It’s a wooden box designed to maintain a specific humidity, and I’ve got a Cigar Oasis device in there which does this. The Cigar Oasis is set to 69% RH. A while back I put one of my emonTH devices in there, and was surprised how far out it was (it read 78%) - though I wasn’t sure whether it was the Cigar Oasis or the emonTH that was out.

Since then I’ve bought some Sonoff TH monitoring (SNZB-02) for Home Assistant, and these both show about 71% RH, which is much more what I would have expected.

I’ve put two more of the emonTH’s in there now (so I have a total of 5 sensors plus the Cigar Oasis) and after leaving them in there for a week, I currently get these results:

Cigar Oasis - 68.8%
Sonoff SNZB-02 (1) - 71.0%
Sonoff SNZB-02 (2) - 71.6%
emonTH (1) - 54.7% (DHT22 Sensor)
emonTH (2) - 71.7% (Si7021 Sensor)
emonTH (3) - 77.6% (Si7021 Sensor)

From what I can tell, these can’t be calibrated, and the spec sheets show the Si7021 should be within 3% and the DHT22 within 1%. Am I missing something obvious here?

I think I’ve looked at a different specification to you.
For the DHT22, I read ±2% with a repeatability of ±1% and long-term drift of ±0.5%/year.

For the Si7021-A20 what I read agrees: ± 3% RH (max), 0–80% RH

So if your two Si7021 samples are at opposite ends of the tolerance band, they can be within spec - if all apart from Sonoff (2) are wrong, and that is exact.

One way I know of obtaining an absolute calibration is by the saturated salt solution method, see Saturated Salt Solutions and control of Air Humidity

An alternative method is to measure the dew point and do the maths: How do I convert between dew point and relative humidity? - NPL
or use something like Dew Point Calculator.

I’ve never attempted either method. Neither is easy and simple.

Common salt (sodium chloride) solution gives a value close to the numbers you’re getting, but bear in mind that, as far as I know, supermarket table salt won’t be wholly sodium chloride, but can contain other compounds as well. Whether that changes anything significantly, I don’t know. I’m an electrical engineer, not a chemist, so no awkward questions, please. :laughing:

Thanks Robert - i’d seen the salt saturation method on another site, but haven’t yet got around to trying it. I agree it may not be as simple as even regular table salt can be a mix of Sodium and Potassium Chloride, and the table you shared shows a significant difference in the results with both of them. I’ll have a think and will likely do this at some point in the next few weeks.

As I’ve got 6 emonTH’s in total (four DHT22 and two of the newer Si7021) I’d be interested to see how accurate they are.

If you can find salt for curing meat then I believe it should be just sodium chloride. It’s possible that kosher salt is also fairly pure but I’m not certain about that. You may also find that it’s available on ebay (really!) though whether the price is reasonable or not is a different question.

Testing the RH sensors on my weather station is on my list of things to do, but I’ve not got that far yet.


Thanks JasF - i’ve just ordered a few hundred grams of NaCl and MgCl2 (Sodium Chloride and Magnesium Chloride). The Magnesium Chloride is actually labelled Magnesium Chloride Hexahydrate, but I think that only means it already contains some water molecules. As it’ll be dissolved into a paste anyway, that shouldn’t be an issue. I chose these two as they are quite far apart for RH (about 33% and 75%) and neither go above 80% which is outside of the guaranteed range of the sensors. I’m not sure when I will get a chance to do the test, but will update my findings here.

This looks like a reasonable supplier (I actually bought from their eBay store for ease):

Just checked with my son who is doing chemistry as part of his Natural Sciences degree and therefore knows a bit more than I can remember from O Levels :slight_smile: The “Hexahydrate” bit apparently just means there are groups of six water molecules associated with, but not chemically bonded to, the MgCl₂. They could apparently be driven off by heating above boiling point (for example stick some on a tray in the oven at just over 100°C for a while), but as you’re going to mix it with lots of water anyhow it probably won’t make that big a difference.


Thanks - that’s kinda what I was expecting :slight_smile:

From playing around with the DHT11, DHT22 and AM2302 Sensors many years ago, they are all a complete nightmare! Cheap, yes, better than nothing yes, but accurate? No, definitely not.
Even after running calibration cycles on the DHT11/22’s they drift off in all directions. I ended up buying about 10 and picked the two best ones, which were both connected to a DIY EmonTH and I averaged the readings to get something sensible. If you want accuracy, try the Bosch BME280’s, just make sure you don’t end up with fakes!