I built an accelerometer-based washing machine sensor which sends a notification to my phone when the washing is done. This is useful because the machine itself has no indication when it's done: http://www.instructables.com/id/Washing-Machine-Notification...
My machine has a time remaining feature which is great in theory but it's completely inaccurate. It might tell you there's 45 minutes left in a cycle, you'll come back an hour later and it'll say 17 minutes. I guess I know where the windows file-copy dialog author went to work after Microsoft
I think modern washers weigh the clothes and change their cycles based off that and other information. Mine is similar but seems to always overestimate the time instead, which is probably the better failure state.
Some industrial laundries do this, but I have heard this over and over again to describe residential HE laundry machines but never actually seen one with a way to measure this. The usual method is to tumble the clothes until the water level in the tub stops dropping. Now they're saturated with water.
What you are probably getting when you start your washer is an estimate considering the steps of the cycle and loaded to capacity. Some machines have turbidity sensors - mine doesn't - this could deliver information that might shorten the cycle. Also the time may go up if it has to deal with suds or stops spinning to rearrange the load if it shakes.
We bought an LG washer and drying last year that tries to be smart and it drives me nuts. When you start it, it takes several minutes moving the tub in very small increments. It starts and stops and reverses over-and-over and I assume it's sensing the load. Then it starts and occasionally the balance is off and I does the thump-thump-thump thing. So I stop it, rearrange the load and restart. Instead of just resuming, it goes through the sensing dance again and I have to stand there three or four minutes before it actually starts to spin again.
If I could turn all the load sensing stuff off, I would. All I really want is two sliders that give me 0-100% for load size and temperature and a switch for delicate.
Most of the variation in how long mine takes is during the spin cycle, which seems like an easy thing to get a sensor on. Drain the water then spin until you stop getting more water to drain.
From what I understand, it has to do with 1) the time displayed is for an "optimal" load (not too full, normal soilage, balanced, etc.) instead of the actual load, and 2) the machines may pause and restart or lengthen parts of the cycle if the weight and/or balance are slightly off.
In any case, the washers at my apartment complex are always off, but it's at least consistent so that I can add about 6 minutes to whatever it shows at the beginning and plan around that.
The semi-old one in my building weighs it when you start the load and gives an accurate minute timer. The odd thing is it is always different, almost no correlation to weight, sometimes 50, sometimes 70.
I did a similar thing, via an esp8266 device and a vibration sensor!
I also automated the display of tram-departures from the tram-stop next to my house with similar hardware.
Otherwise I setup some "wireless buttons" to trigger alerts/actions on my Linux desktop system, and record local temperature/humidity into a time-series database for tracking purposes.
What kind of display did you use for the tram-stop times? I wanted to do something similar but worked out that the cost to update the display every minute was too much in terms of battery life even with an epaper display. Also, it was too inconvenient / ugly to use mains power.
I do have a couple of epaper devices, and they would be ideal but for their terribly slow update-time. I like the clock showing Time & Date (or Time & Temperature), and having epaper update every second just isn't possible. Even if it were then I suspect updating so frequently would negate the potential power-saving of using epaper in the first place.
I do have a nice epaper device for showing weather & weather-forecasts, that works on batteries and updates every 20 minutes. But for trams I update departures every 2 minutes.
Not OP but did a similar project, the display method I used was simply to use 9 led lined up, each representing a stop before mine, to show the current position of the tram.
I was wondering about that as well but I only found the Amazon ones, which either need tricky operations to be usable (the brand-oriented dash ones) or expensive (the Amazon IoT (eom dash button) for 25 eur).
For the buttons I first of all wired a button to an ESP8266 device, made it connect to wifi and publish to MQTT and handled it that way.
But when it came to time to setup a lot more of them I realized that would get expensive quickly. SO I cheated. I bought a bunch of 433Mhz-based radio-buttons:
Then I hooked up an SDR receiver to my PC, and handle it that way. I have a 433Mhz receiver for the arduino, which could also decode those transmissions, but I never used it for anything except to prove I could.
There's a pointer to the software and some overview here:
A plug-through device (or cable mounted) could probably do this based on current draw, similar to the killawatt but with different purpose. Might be able to also do error messaging, or warnings of exceptional current draw.
My solution for this was an ESP8266-based Sonoff POW (wireless smart switch and power monitor), running Tasmota, sending data through MQTT to Home Assistant, scripted to send notifications through Telegram.
Interesting, I didn't know that Sonoff did a power consumption monitor. That makes sense for something like a washing machine. Presumably though you never actually use the relay/off-switch capability of the Sonoff, right?
The only time so far I used both the switch and the power monitor was on the Christmas tree, because I was curious how much it cost to run ($3 or so overall iirc).
My trick is to set a timer on my phone when I start a load. Even if the machine doesn't tell you how long it's going to take on a display, these things tend to be pretty consistent. Low tech but it works.