The good news is: My little Wemos D1 based pump monitor works!
The bad news is: The anomaly detected by my pump monitor was real and required physical labour to correct
In a nutshell - You might recall that I had a WiFi temperature sensor set up for my hummingbird feeder during the winter. It is based on an ESP-01 module, and I used it to take regular temperature readings and send it to my server. From there I could then see the graph of the temperature.
Earlier in the year we had a pump station failure, in that the pump stayed on too long. Luckily we were outside near the tank when it happened and we heard the gurgling of the pump running dry. We had to dig it out and jiggle the sensor (it's a depth sensor, but they said it can get gummed up with stuff stuck on it), and it worked again. I raised it up an inch to give some clear space under it.
I realized that in all failure cases the pump stays on too long. In this case the depth sensor was reporting deeper than real liquid levels and so the control panel failed to turn the pump off = on too long. In the case where the pump itself fails the control panel would provide it power but it would not pump out enough to hit the off level = on too long. Log files showed that before the previous pump failure (and tank alarm) the pump had intermittently run longer than was usual.
So I used the different parts that make up the WiFi temperature sensor, and modified it slightly to become a pump monitor instead.
This is what it looks like (it's in my basement/crawlspace) - I soldered on a resistor and a light sensor on a long lead (cat-5 wires).
And this is how I placed the sensor above the LED on the panel:
I had a WeMos D1 available, so I used that - it's much easier to use than the ESP-01, as it has a micro-USB port on it that I can use to program it, and I can also use it to provide power from a small 5v USB iPhone charger cube.
Instead of a temperature sensor I instead used a light sensor, which I placed near the little red LED "pump on" light on the control panel.
The scripts on the server are also very similar to the temperature one - it logs the readings "on" and "off" into a simple file, and the server adds timestamps.
Because I also wanted to know how long the pump runs each time, the Arduino program counts the number of seconds between the light sensor detecting light and then detecting that the light is off again.
This also gets sent to the server.
To make monitoring more real-time, I added a piece to the script that sends me a text message for each event (using the email-to-text feature my cell provider includes in my package).
I quickly noticed that the pump is always on for about 2:07 (minutes:seconds), give or take 5 seconds. So I added some code for the WeMos to send warning updates to the server if the pump stays on for longer than 5 minutes (I will be reducing that down to 3 minutes soon).
So I've been happily receiving comforting text messages for the last handful of months since that first incident, until this weekend - of course while I was away on a mini-vacation.
This is what I usually see. Very comforting:
And here is when I knew the pump controller needed attention, not comforting at all! but good to know it works:
You'll noticed the top few are 02:04 and 02:08, which is very much along the lines of what I've been getting since I set that up... but then uh-oh!
The pump stayed on for over 10 minutes! EEEP! Luckily it turned off by itself or I would have needed to drive home to deal with it (we were staying overnight on the mountain - about 40 minutes away).
When we got back later that day the pump did a proper run again, but then hiccuped again the next day.
So today we dug it out again (luckily the lid is only a few inches under dirt) - and this time I pulled the sensor out of the tank completely and cleaned it up to where the panel reported it properly as 0.0 inches again. And I raised it up a few more inches just in case the tank gets too much sediment and gums it up again.
Turns out the sensor was reporting the level as 12" when in reality it was down to about 3 or 4".
I'm not very happy with this expensive control panel the plumber installed 4 years ago - it was supposed to be much more reliable, but it turns out to be the opposite! I kinda think this sensor issue caused the previous pump to fail after only 3 years (just after warranty - boo!). The good old fashioned float switches don't care about a bit of goo on them.
If it comes time to replace it, I'll definitely go back to float switches! With my little DIY IoT monitor as a safety backup
So now we're running some laundry to get the liquid level in the tank up to above the sensor, to make sure that the sensor does report proper numbers and that the pump controller does properly pump out the tank again. The bright side of that is that I don't have to do more shovelling until that part is proven
So, while it was a lot of effort to clear things up again, we realized that without my little IoT monitor we would not even have known about this issue! It might have caused us yet another premature pump failure from constantly running it dry!
So a definite Win for the DIY tech here!
And my wife no longer makes fun of me receiving text messages from my septic pump
I'll probably add a redundant low-level float switch, which the control panel has room for, so in the future it at least won't run dry.
The panel tech support guy also suggested I could expand my little DIY device to use a relay to emulate the redundant low-level float! Great idea - seeing as it already counts the minutes I could quite easily have it send the 3 minute warning while at the same time shutting off the pump.
Cheers,
-Nico
Top Comments