Humidity Sensor on RuuviTag

RuuviTag has environmental sensor BME280 made by Bosch. The sensors come factory-calibrated with impressive absolute accuracy specification:

  • Temperature ±0.5 °C (Resolution 0.01 °C)
  • Pressure ±1 hPa (Resolution 0.01 hPa)
  • Humidity ±3 % RH (Resolution 0.5 %, can be increased with firmware)

Most of the questions we receive about sensors are about humidity. Let us take a closer look at the humidity sensor.

First of all, the humidity sensor reports relative humidity, and it measures conditions inside RuuviTag enclosure.

This causes some surprising phenomena: for examples bringing RuuviTag to steaming, hot sauna actually causes relative humidity to drop. This is because the absolute humidity takes time to get across the breathing Gore sticker, while temperature is transmitted much faster. Less dramatic, but similar results can be seen on almost any quick test with RuuviTags.

We had a discussion about testing humidity with the experts of Sensorcell, and they kindly gave us a pro tip on creating stable environment for the test. Saturated salt solutions tend to settle to a specific, stable relative humidity. These conditions are easy to recreate at home, just pour a little of pure water and a lot of pure salt (no added iodine) to an airtight container. The NaCL solution should reach an equilibrium at 75 … 76 % RH in room temperature.

Humidity sensor within a saline solution box
Humidity sensor within the saline solution box. Battery was used as a cover to prevent sensing element dipping into salt

To verify the the test conditions we used sensors from Testo as a reference. It’s worth noting that Testo sensors had similar or worse accuracy specification as Bosch BME280: ± 3 % RH and ± 3 hPa of air pressure.

After two days of waiting, the RH was settled and remained steady around 75% as expected. It was time to take some measurements with RuuviTags. Pieces 1 and 2 are standard RuuviTags, foam holding battery in place was removed from 3 and 4. Pieces 5 and 6 were open without cover.

Humidity sensor and air pressure sensor along with RuuviTags.
Humidity sensor and air pressure sensor along with RuuviTags.

Tags were in RAW mode, and data was logged with the Scrin’s InfluxDB code and Raspberry Pi 3. The tags were placed in the container, and output was logged. We can see that the tags settled within promised accuracy within 3 days.

Humidity reading
All tags settle in range 73 … 76 % RH, well within promised accuracy of the sensors.

The tags without cover settled quickly, within one minute to new values. Tags within enclosures take longer to reach new values. If the first measurement tags 1 and 2 reached a value bit lower than 5 and 6 within approximately 6 hours. Curiously tags 3 and 4 -which did not have the foam- were slower to reach tags 5 and 6, taking almost 16 hours to reach the final difference.

The lower humidity in tags 1 … 4 is probably caused by osmotic resistance of the Gore sticker itself. Calibrating against the resistance cannot be done by simply adding a constant or a factor to measurement however. To compensate for the resistance of the sticker we’d need to know the actual humidity outside the enclosure, and if we know the outside humidity compensation would not be needed at all.

This is not a proper test for the step response times however, as the conditions inside the container also have to settle. To test the response time of the tags, let us reverse the test by measuring the indoor humidity and taking tags out of the box. Humidity in middle of tags was 56 % according to Testo meter.

Humidity reading from the Ruuvi Tags
Tags without cover reach new value within a minute. Covered tags took 10+ hours to reach new equilibrium, however the room humidity was not stable.

As the covered tags take a long time to reach accurate values for humidity, reader might wonder if the humidity measurement can be relied on. Let’s do one more experiment to explore the dynamic behavior of the tags. Tags are placed on a kettle with boiling water under them.

RuuviTags being steamed
RuuviTags being steamed

On the 45 minute graph below we can easily see when the kettle was turned on from sudden spike in humidity. Even tags in enclosures do react, even though they do not reach the actual value. At 17.24 tags were placed on steam, and we can see instant reaction on humidity and temperature.

At 17.32 the readings are in the “neighborhood” of final values. As in sauna, we can see that the humidity actually falls down in the steam bath due to higher temperature. While the measurements are not stable, we can detect the change and have pretty good guess of the environment in 10 minutes.

RuuviTag Sensor readings in a steam bath
Sensor readings in a steam bath

To sum the post up:

  • Accuracy of humidity sensor was verified with a reference sensor and known constant humidity using saturated salt solution
  • Settling time was found to be approximately one minute when tags are open in the air and up to 6 hours when tags are inside enclosure.
  • The tags will settle in the “neighborhood” of final value a lot faster, within 10–20 minutes even in the enclosure
  • Removing the foam from tag does not improve on humidity accuracy or settling time