Occasional 100% humidity offset in measurements

I have one tag which, since a few days ago, occasionally sends humitidy measurements that are 100% off from the true value.

An example measurement from my collector:

Feb 11 12:30:39 ruuvigw-01 ruuvi-mqtt[9768]: 2021-02-11 12:30:39,630 DEBUG: Read ruuvi data from mac EC:39:7F:B0:EB:8D: {‘data_format’: 5, ‘humidity’: 163.84, ‘temperature’: 10.18, ‘pressure’: 1029.79, ‘acceleration’: 999.023523246575, ‘acceleration_x’: 44, ‘acceleration_y’: 64, ‘acceleration_z’: -996, ‘tx_power’: 4, ‘battery’: 2887, ‘movement_counter’: 121, ‘measurement_sequence_number’: 2567, ‘mac’: ‘ec397fb0eb8d’}

This is written in python, using https://pypi.org/project/ruuvitag-sensor/

I’ve established the following so far:

  • The measurements are off 100% (or very close to it) from the exact value
  • Only one, or at most a few, measurements are off before realistic values are sent again
  • Multiple receivers that hear the same tag record the same, incorrect values
  • All other measurements from this tag are fine
  • This seems to happen around once a day, but not at 24h intervals
  • The tag has been running for months without any weirdness

This would be “invalid” value and should be discarded by parser.

OK, so a tag sending these occasionally is expected (and invalid measurements are not discarded before being sent)?

It’s not really expected on a sensor that has been working without a glitch. Maybe the tag is somewhere really cold or humid and there’s condensation or ice on sensor?

Invalid measurements are not discarded, not all RuuviTags have sensors for all the possible data. For example RuuviTag basic has only temperature data and the rest of sensor fields are sent as invalid. This lets us to use one parser code regardless of what combination of sensors a tag has.

The tag has never seen RH over 80%, and temps lower than 8 degrees C. RH was under 70% when the issues first appeared. It’s inside, and if there had been significant ingress of water I would have noticed. I’ll open it up and see if I can see anything.