It's apparently possible to track a washing machine's progress with a smart switch that monitors power draw; I've got one lying around so might try to implement that soon, to complement my hacky RPi-Ring-doorbell-announcer :)
It's apparently possible to track a washing machine's progress with a smart switch that monitors power draw; I've got one lying around so might try to implement that soon, to complement my hacky RPi-Ring-doorbell-announcer :)
Yes, it's not hard to set an alarm, except the timing on the washing machine is unreliable (I've lost count of how many times I've set an alarn with a few minutes extra and still had to wait longer.) It would just be nice to have a little notification - making that chore 1% pleasanter. :)
Fast fourier transform on the audio would give you volume for each frequency range. That probably requires some DIY hardware & programming.
But a power metering plug would be a cheap off-the-shelf solution. Find the ones pre-flashed with ESPhome for ~$15-20, find thresholds for ON/OFF with a bit of trial and error, and you're done.
I have one in my kitchen, near the laundry room, and one in my home office. When things beep in that area, the one in the office says "Beep, beep." (I could have it do other stuff, but this was simple.)
It works for laundry. And the dishwasher. And the Instant Pot. And any other beepin' thing. It's just a remote beep detector.
(And if it detects beeping for 2 or more minutes, it notifies my phone, since that presumably means that my house is on fire.)
Can confirm, it's what I do. I can even detect which part of the cycle it is in using plain Home Assistant template sensors.
It's crude but it works. Detecting washing vs not is trivial, but I went the extra mile, looking at the power history and analysed the thing visually to get the general profile of each part, taking into account peaks, throughs, noise to have some unambiguous rules. Some are wrong if taken in isolation but taking the order of priority into account, flattening the result with if/elif in a single state sensor it becomes correct. That strategy is also very easy to debug visually with a entity history list in the dashboard.
I could probably also detect error states (which I had a few, like filter clogged with lint preventing water drain) as in this case the panel stays lit with the error code basically forever VS a normal cycle has it lit but ultimately it shuts down to deeper sleep states once it's done.
I really enjoy making dumb devices smart, it's a nice decoupling too and means I can just change e.g washing machine if it dies, adjust a few values below, and be all the merrier.
(nixos config, but it's a 1:1 to YAML and you get the idea)
services.home-assistant = {
#...
config = {
#...
template = [
# washing machine
# 5-6W: on (idle, panel lit)
# 4-5W: off (sleep after on, panel unlit)
# 0.1-1W: off (deep sleep)
# 2100-2200W: water heating
# noisy 8-100W, trough 10W: washing
# ramp-up 15-500W, plateau 300-500W, noisy 100W: spin dry
# 1300-1500W, trough 40W-150W: tumble dry
# 7.5-8W 240s, peak 95-105W, 20-25W 30s: cooldown
{
sensor = [
{
name = "washing_machine_power";
unit_of_measurement = "W";
state_class = "measurement";
state = "{{ states('sensor.shellyplusplugs_80646fc7bb4c_switch_0_power') }}";
}
{
name = "washing_machine_state";
state = ''
{% if is_state('binary_sensor.washing_machine_heating', 'on') %}
heating
{% elif is_state('binary_sensor.washing_machine_drying', 'on') %}
drying
{% elif is_state('binary_sensor.washing_machine_spinning', 'on') %}
spinning
{% elif is_state('binary_sensor.washing_machine_cooling', 'on') %}
cooling
{% elif is_state('binary_sensor.washing_machine_washing', 'on') %}
washing
{% elif is_state('binary_sensor.washing_machine_idle', 'on') %}
idle
{% elif is_state('binary_sensor.washing_machine_sleeping', 'on') %}
sleeping
{% elif states('sensor.washing_machine_power') | float(default=0) < 0.01 %}
off
{% endif %}
'';
}
];
binary_sensor = [
{
name = "washing_machine_active";
state = ''
{{ states('sensor.washing_machine_power') | int(default=0) > 30 }}
'';
delay_on = { minutes = 2; };
delay_off = { minutes = 2; };
}
{
name = "washing_machine_heating";
state = ''
{{ states('sensor.washing_machine_power') | int(default=0) > 1900 }}
'';
delay_on = { seconds = 5; };
delay_off = { seconds = 10; };
}
{
name = "washing_machine_drying";
state = ''
{{ states('sensor.washing_machine_power') | int(default=0) > 1000 and states('sensor.washing_machine_power') | int(default=0) < 1600 }}
'';
delay_on = { seconds = 5; };
delay_off = { seconds = 120; };
}
{
name = "washing_machine_washing";
state = ''
{{ states('sensor.washing_machine_power') | int(default=0) > 30 and states('sensor.washing_machine_power') | int(default=0) < 150 }}
'';
delay_on = { seconds = 120; };
delay_off = { seconds = 45; };
}
{
name = "washing_machine_spinning";
state = ''
{{ states('sensor.washing_machine_power') | int(default=0) > 150 and states('sensor.washing_machine_power') | int(default=0) < 500 }}
'';
delay_on = { seconds = 5; };
delay_off = { seconds = 5; };
}
{
name = "washing_machine_cooling";
state = ''
{{ states('sensor.washing_machine_power') | int(default=0) > 6 and states('sensor.washing_machine_power') | int(default=0) < 30 }}
'';
delay_on = { seconds = 90; };
delay_off = { seconds = 60; };
}
{
name = "washing_machine_idle";
state = ''
{{ states('sensor.washing_machine_power') | int(default=0) > 1 and states('sensor.washing_machine_power') | int(default=0) < 6 }}
'';
delay_on = { seconds = 1; };
delay_off = { seconds = 1; };
}
{
name = "washing_machine_sleeping";
state = ''
{{ states('sensor.washing_machine_power') | float(default=0) > 0.01 and states('sensor.washing_machine_power') | int(default=0) < 1 }}
'';
delay_on = { seconds = 1; };
delay_off = { seconds = 1; };
}
];
}
];Now is time to add "flamethrower_mode", lock online and send mail offering the regain_access_to_your_precious_cozy_pajamas code for a fair fee, and became the hidden kings of the undieworld with our "pay_per_brief" program. Muahahah!
I guess another use case would be measuring water and energy consumption but I doubt that people paying top dollar for these appliances are the type to keep an eye on such things.
Some people do - to brag in their circles (and to their own consciousness) how green they are. So then you can go flying around the world for fun with a clear consciousness ...
I'd see the internet connected route as useful for anyone in the household to be able to check notification without having to pair all the phones (and then what if you don't want it on a phone), and getting the notification when outside. Now it would better with a home server dealing with the data, but we're so far from that.
In general I see bluetooth as fine for personal wearables (headphones) and not great when a device is shared (bathroom scales, smart plugs, switches etc)
Simple as that, no wireless components required. I simply leave the door open when the machine isn't running.
Siri set a timer for *looks at washer screen* minutes
That's it. But tbh wish my smart speakers would learn all the appliance chimes instead.And having written that out, now I want a notification from my dryer when it’s not making progress as fast as it expects…
You can exfiltrate encryption keys if you can monitor power usage.
https://www.securityweek.com/platypus-hackers-can-obtain-cry...
Someone might be able to do that if they're monitoring power usage directly on the CPU with >microsecond precision for an extended period of time, not with a power metering plug that gives a fairly inaccurate reading at the wall every second or two, after having gone through the power supply transformers, rectifiers, capacitors, and containing noise from every other component in your device.