Three Days at 119 Volts: My Pump's Health Number Is a Voltmeter

October 28, 2026 · Todd Deshane · 8 min read

Yesterday I wrote that in its current mode my sump pump monitor controls every number it reports except one, the power the pump draws at the end of each 120-second pulse, and that "the watts have one value." I had looked at 1,322 pulses as a pile. This morning I looked at them as days, and the sentence is wrong. The watts had two values last week, and the second one was set by the power company.

That matters beyond my basement because of what the trade press was selling this week. A predictive-maintenance vendor's list of 2026 trends, reprinted by the Edge AI and Vision Alliance, puts "a single machine health score" built from sensor and visual data near the top. BrainChip announced a neuromorphic co-processor that hangs off the SPI bus of whatever microcontroller a product already has and hands back "a detected fault" from the sensor stream, learning on the chip. ANYbotics shipped the first legged inspection robot certified for explosive atmospheres, aimed at "pumps, compressors, valves, and piping" in oil and gas, and sold on turning inspection data into maintenance action. Every one of these scores a motor, and every score of a motor I have ever seen starts from its power draw. Here is what mine measured.

The table I should have built yesterday

The plug reports the line voltage every ten minutes in a heartbeat. I take the median of the idle readings each day, when the pump is off and the plug is just a voltmeter on a basement outlet. The controller runs the pump for two minutes every twelve, 119 pulses a day, and logs the watts at the end of each. Here are the last twelve days, all without rain.

DateIdle line voltage (median)Pulse watts (median)Pulses under 450 WDigest
Oct 17122.74960OK
Oct 18122.54920OK
Oct 19123.45050OK
Oct 20123.95100OK
Oct 21119.746031OK
Oct 22119.345340OK
Oct 23120.046713OK
Oct 24122.85010OK
Oct 25122.74980OK
Oct 26122.74970OK
Oct 27122.74990OK
Oct 28 (to 7:40 am)123.05020OK

The hourly log puts the edges at about 8 am on October 21 and 1 pm on October 23, fifty-three hours. The lowest heartbeat was 117.2 volts. The pump drew a median of 453 watts on the 22nd against 499 on an ordinary October day, down 45 watts, nine percent, for a drop of three and a half volts, under three percent. Eighty-four pulses in those three days came in under 450 watts. In the nine days around them, none did.

Since the plug started reporting voltage in March, only three days have a daily median under 121 volts. They are these three.

What each layer said

Four pieces of software watch this pump. I checked each one against the three days.

Nobody and nothing noticed that the pump's one unconstrained number had moved nine percent and moved back, because every layer judges the watts against a threshold or against the previous hour, and the watts never crossed a threshold or changed within an hour. They changed within a morning, stayed changed for two days, and recovered within an afternoon.

Twelve watts per volt

So I did the thing the three-day sag made obvious and asked the whole record. There are 180 days with both a voltage series and more than fifty pulses. Plotting each day's median pulse watts against its median idle voltage gives a straight line:

watts = 11.79 x volts - 949.5        r = 0.96, n = 180 days
last 30 days:                        r = 0.99, 12.4 watts per volt

The day-to-day standard deviation of the pump's watts is 7.5 watts raw. After subtracting the line, it is 2.1 watts. Ninety-two percent of the variation in the number I have been treating as the pump's vital sign is the voltage at the outlet. The three sag days land on the line like any other: their residuals are -1.2, -3.7 and +1.6 watts. The motor did not change. The supply did.

Then the fit answered a question I have been failing to answer since spring. In August I went looking for a wear trend in the watts and found a sampling artifact instead. In September I tried again with 14,946 readings and got a trend that flipped sign depending on whether I controlled for the plug's temperature or the voltage, and I wrote that the missing variable was an ambient temperature I was not measuring. Here are the monthly medians with the voltage removed.

MonthIdle voltage (median)Pulse watts (median)Residual after fit (W)Plug temp at pulse (C)
March122.5494-3.137.3
April123.0500-1.339.0
June122.4493-0.647.0
July121.9487+0.349.6
August122.0489+0.549.6
September122.3493+0.148.0
October122.7499+1.244.0

The raw watts dip thirteen watts from April to July and come back. So does the voltage, by a volt, and the summer is when the plug runs hot. Across days, idle voltage and plug temperature correlate at -0.53: hot season, low voltage. That is why temperature kept showing up as a covariate and kept flipping the sign. It was standing in for the season, and the season was standing in for the grid. With the voltage out, the motor's monthly residual runs from -3.1 watts in March to +1.2 in October. Four watts on a 493-watt motor, under one percent, in eight months. There is no wear trend. There was never a wear trend. There was a voltmeter.

What a health score is made of

Now back to the week's products. A single machine health score, learned from sensor data, alerting on deviation from baseline. A chip that learns the motor's normal on-device and reports a detected fault. An inspection robot trained on synthetic clips of "changes between facility visits." These are good products and I would like to sell the small-building version of all of them. But every one of them, applied to a motor, begins with the watts or the current, and a score that begins with the watts and does not carry the line voltage as a covariate is a voltmeter with a motor attached.

Run my three days through such a score. A baseline learned in a 122.7-volt month sees a 119-volt week and scores the pump nine percent sicker. A maintenance ticket opens. A technician finds a pump in perfect health and closes it, and the next alert from that score is read a little slower. That is the false positive, and it is a real event in my log. The false negative is the mirror: on a day the grid runs two volts high, which it did on the 20th, a motor that has genuinely lost 24 watts, five percent, reads exactly normal. At twelve watts per volt the grid can hide or invent a five percent change in the motor on any given day, and the utility is allowed to move the voltage five percent in either direction and still be in spec.

The vendor question is short. Does the score carry line voltage, or does it learn a baseline and alert on deviation? If the answer is a baseline, ask what the score did the last time the utility sagged for two days, because it has, and the plant did not have a two-day outbreak of failing motors.

The fix is one subtraction

The plug already reports the voltage. The monitor already logs it, ten minutes apart, in the heartbeat. What it does not do is write the voltage on the same line as the watts, or compute the one number that is actually about the pump:

corrected = watts - 11.8 x (volts - 122.3)

That goes in the pulse log, in the digest subject in place of the instantaneous reading, in the sentence the assessor prints, and in the prompt the language model reads. The alert is on a 20-watt move in the daily median of the corrected number, which is four percent of the motor and ten times the residual's day-to-day noise. None of my existing thresholds would ever fire on the thing this detects. The number that would fire is the one I never computed.

I will say again what I said yesterday, because the three days say it louder. The monitor has been up since September 2 without a restart. It wrote every heartbeat and every digest through the sag. It was running, and running was never the hard part. It was also, for fifty-three hours, reporting a number about the power company and labeling it the pump, and no layer I built, including the one that reads English, could tell. I found it by making a table with one more column.

If you have a motor on a monitor, or a vendor's health score on a motor: pull a month of the power readings and the line voltage, take the daily medians, and plot one against the other. If the points lie on a line, your health number is the slope times the grid plus a small remainder, and the remainder is your motor. Alert on the remainder. The slope on my one-third horsepower pump is twelve watts per volt. Yours will differ. The shape will not.

Is your health score measuring the machine, or the outlet?

I build and audit monitoring for small buildings: sump pumps, boilers, compressors, anything with a motor and a power draw. The audit starts with the raw readings and the question of what each number actually tracks.

See the Physical AI practice