Each plotted tide level is an average of 10 samples taken at 1 second intervals in an attempt to average out wave action. Something was causing the downward slices in the waveform.
The tide sensor is in a bay where strong winds can deliver up to a 1 foot chop. When these strong winds occur, the data would exhibit the artifacts. On an async terminal, I can look at the data stream and see the raw individual samples before averaging. The individual samples where usually sensible; however, with high winds and wave action some samples would be 2X the others, or just very large numbers.
I believe the 2X numbers can be explained as follows:
When the ultrasound pulse hits a wave front, it's reflection can be directed by a wave under the dock. The resultant return pulse hits the bottom of the dock, back down to the water, and back to the transducer. The result is 2X the expected distance.
Very large numbers can be explained by a total miss. The wave front deflects the pulse off into space (away from the dock), and the sensor never sees the return.
A filtering algorithm that has been running for the last week removes these artifacts out by tossing out samples that don't make sense. The sensibility test involves looking at past tide heights, and assuming a very large change in a 15 minute interval is not possible (unless the moon explodes or something like that!).
Here's the filtered data which I've been taking for the last week or so:
I am curious if the plateaus at high tide are real, or some other artifact of the sensor. I'll be looking at that next.