Indeed, there is this "decrement" message in the log @ 3:37 AM:
"acurite: rain counter decrement ignored: new: 0.0 old: 2.4384"
the rain counter did a spurious decrement. when it bounced back to its previous value, that looks no different than a rain event. in this case, the delta was 2.4384 cm, which corresponds to the 0.96 inch value you see in your database.
it is easy to detect counter decrements.
it is easy and fairly reliable to detect spurious counter decrements - they will be less than the hardware-defined maximum counter size.
it is impossible to detect spurious counter increments, unless we have some additional information.
what could we do?
option 1: if the increment is larger than any sane amount of rainfall, we could ignore it. the risk is that you lose data - for example, a corner case for this is if you lose contact with the sensors for 4 hours during a heavy rain, the 4 hour total would be thrown away even though it is correct.
option 2: if the increment happens within a certain amount of time of a counter decrement and that amount matches the previously-cached decrement amount, then we could assume it is a bounce-back event, not a rain event. the risk is that a real rainfall event happens between spurious decrement and bounce-back, so that the bounce-back amount does not match exactly the decrement.
option 3: similar to option 2, but use fuzzy matching instead of exact match for the delta.
other options?
m