SaltWatch: ESPHome salt level monitor with refill forecast and dashboard card

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.

SaltWatch:

SaltWatch Card:

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.

2 Likes

How long is it in use and how is the VL53L0X sendor holding up in the salty moist enviroment under the lid?

@AshaiRey Just a few weeks. So far no problem. Let’s see.

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.

@briis Great news . This is now supported in SaltWatch Card v0.6.0!

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!

That was fast :slight_smile:

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?

Thanks, I will enable the forecast

Yes, that would be nice. I can live without but everything else on my dashboard is danish

@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 Thomas. I would translate the word ‘Low marker’ to ‘Minimumsmærke’ All the rest is fine

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!