If your main issue is protecting the pump, perhaps investing in one with its own dedicated line-voltage float switch is the way to go. Pump protection should be a proven, self-contained and low-tech approach, which is designed to be safe with immersed line voltage wiring.
This frees you up to choose a level monitoring approach that is safe, cheap, and reliable, without needing to deal with line voltage.
With that out of the way, here's some ideas for monitoring level:
- Multiple optical prism sensors, in a dip tube. Simple, inexpensive, low voltage, no moving parts, could give direct drive to LEDs or some simple display. Arguably the cheapest approach.
- Capacitive tank sensor, used in the RV and boating trades for fuel, water and wastewater monitoring. Again, for your cistern, in a dip tube. No moving parts, but more expensive than optical sensors due to the electronics. These can be self-calibrated to indicate fullness.
- Measure distance to water with a time-of-flight laser. Seems problematic. Could maybe be hacked to use a tethered float with a cat's eye retroreflector on it. Probably kind of expensive since it needs the laser TOF, and needs math to convert to fullness.
- Hydrostatic (pressure) sensor, suspended from the top. Popular choice for cisterns that's easy to install and service. Lots of off-the-shelf products from modest to expensive. Can be calibrated to indicate fullness.
More here about optical and capacitive sensing: Is it possible to do water detection with a single electrode?
Of all these, the hydrostatic seems to offer the most options for display, including wireless monitoring to your phone if you wish.
If you want to do your own controller, vertical tank math is simple: pressure is proportional to tank fill height; volume is cross-section x height.
How to compute height from pressure?
- Pressure = height x density x g
- Height = pressure / (density x g)
Where g is gravity acceleration.
(see here)
Example: a tank 1m high, the 'full' pressure at the bottom of the tank will be:
- height = 9.81 kPa / [(1kg/l) * 9.81 m/s^2] = 1m height
Conveniently, we note that 1m water height is 9.81 kPa in pressure. This gives us the linear relationship of 9.81 kPa/m.
Metric tank volume, in m^3, would be:
- volume (m^3) = area (m^2) * (pressure in kPa) / (9.81 kPa/m)
Simple, right?
The pressure method gives precise, real-time volume data. With suitable post-processing you can calculate dynamic usage and even detect leaks.
This applies to capacitive and laser sensor approaches too.