I am looking for a solution, that reports the water level of a pond, preferably via Zigbee. I need at least 3-status (full, o.k., empty) readings and don't want to use distance sensors as they seem to be unreliable in the longer term.
Is there an off-the-shelf solution that anybody knows of, or if you have implemented your own, could you share the components used?
Three Zigbee Leak sensors would do it, the ones with the probe on the wire. Mount one at full, one at the OK level, and one at the bottom. Use RM logic to determine level based on which sensors are showing wet.
People seem to report The Ecowitt LDS01 level meter works well, if you happen to have a weather station gateway already set-up, and that may work better than those cheap Zigbee distance meters. That would give you exact level instead of three zones.
Thanks! I decided to move forward with my own ESP32-C5 based Zigbee device that measures the distance to the water surface with a VL53L0X-200. AI got me the driver code for Hubitat and also the ESP32 firmware put together - quite amazing, what Grok and Claude can do for you....
It depends on which sensor I end up using - the smallest sensor can measure from 10mm to about 100mm and as it will measure a Koi pond's water level, that should be fine (supposed to only fluctuate 50mm, so well within the range of a VL6180X). I am waiting for the VL6180X-200, which has a wider range and will allow installation further away from the surface. But will need to test with that one first.
Downside so far is that Hubitat does not recognize distance measurement devices with their capabilities, so I had to implement it as an "illuminance" measuring one. A good workaround, just not as clean as could be.
For a sensor that I use to monitor salt levels in a water softener (Salt Sentry), I just implemented distance as a custom attribute and use that custom attribute in my automations.
I have the same use case for a water level sensor. I am curious to learn how your implementation works before going down that rabbit-hole.
You could also use the Battery capability. Battery is nice, as the dashboard template icon will change colors automatically based on level. The attribute is not called level, though, it is called battery, so not good if you really want an attribute called level.
It works perfectly fine (no real life long term test though).
What I used: ESP32-C5, a cheap I2C IIC 128x64 OLED, a TOF200C VL53L0X distance sensor
Switched to that sensor as it offers distance measurement from 10cm to 200cm(120cm in high accuracy mode) which is more in line with my needs than the initial 1-10 cm sensor.
I used AI to get a Hubitat driver with plenty of parameters to control speed of reporting, correct some sensor inaccuracies, a "heartbeat" (forced reporting from ESP32 so I am able to use the "lastUpdate" to detect a dead / non-reporting sensor.
Defined a bunch of variables in Hubitat and two automations, primarily for checking that the sensor is reporting regularly and if not, send me an email that there is a problem...
Communication happens via Zigbee protocol and device detection by Hubitat works without issues.