I kept forgetting to check the salt in our water softener, so I built a small ESPHome device to do it for me. It has turned into a pretty cool little project, so I thought I would share it.
SaltWatch uses an M5Stack ATOM Lite and an M5Stack VL53L0X ToF unit. The sensor mounts under the tank lid and measures the distance to the salt surface. A two point calibration turns that into a percentage in Home Assistant.
The useful parts are:
Current salt level and measured distance
Full and empty calibration from Home Assistant
Adjustable low salt threshold
Clear sensor fault and calibration states
Automatic removal of stale measurements
An estimate of how many days remain until the low salt threshold
An optional notification blueprint
A dedicated Home Assistant dashboard card
Browser based firmware installation
The forecast runs on the device and learns from the normal decline in salt level. It takes some time to collect enough useful data, but after that it can give a better answer than just showing the current percentage.
The hardware uses a Grove cable, so no soldering is required. After the initial browser installation, the device can be adopted into ESPHome.
Both projects are open source. I am looking for people willing to test the setup with different softener tanks and real installation conditions. Bug reports, ideas, documentation improvements, and PRs are very welcome.
The card looks nice. I already have a Water Softener integrated into Home Assistant, that reports all this data, but that cannot be used with this card. Would be good if one could specify the individual entities for the different values, instead og being dependent on a fixed naming structure from the device id. My Softener is a Ecowater GREENLINE 40.
Automatic discovery still works exactly as before when SaltWatch device is selected. The graphical editor now also has an Other device option, where you can map:
Salt level - required
Low-salt threshold - optional
Status - optional
Estimated days until low - optional
Forecast status and details - optional
If only a salt-level entity is available, the card still works and uses a configurable low threshold.
This should make the card usable with your EcoWater GREENLINE 40, provided its Home Assistant integration exposes a numeric salt-level entity between 0 and 100.
The update is available through HACS now. Thanks for the suggestion!
Now It works with my Softener. It does not have all the sensors but the display here is good enough for me.
Just one question: I have a Days until low salt sensor that reports right now 28d. Should that be visible anywhere? (I don’t use Forecast)
Also, would be nice to be able to translate the text like Low, Estimated salt level and low marker
@briis Your “Days until low salt” sensor the one currently reporting 28 days is exactly what the “Days until low salt entity (optional)” field is for. Select that sensor there, then choose either “Forecast only” or “Salt level and forecast” under Value display.
Regarding translation: do you mean that labels such as “Low,” “Estimated salt level,” “Low marker,” and “Good” should automatically appear in Danish according to your Home Assistant language setting?
@briis You’re welcome! Danish support has now been added and released in version 0.6.2. After updating the card, it will automatically use Danish when your Home Assistant profile language is set to Danish.
The translation was created with AI assistance and tested on both desktop and mobile. If anything sounds unnatural to a native Danish speaker, please let me know and I’ll be happy to correct it.
Thanks, @briis. I’ve changed the Danish translation from “Lavgrænse” to “Minimumsmærke” throughout the card and its settings.
I also fixed another issue where the divider between the salt level and forecast was no longer vertically centered when text such as “4 of 7 days collected” appeared.
Both fixes are included in the new stable v0.6.3 release. Thanks again for checking the translation!