Washing Machine Notifications




About: I am passionate about technology, cycling and art. This would explain why my bike has more computing power than your average office. I'm an editor for pocketables.com and xda-developers.com . Follow me throu...

I have a “dumb” cheapo washing machine for about £150. The size was the biggest constraint, so don’t judge me too harshly. The dumber thing in my household is me.

Washing white underwear with red jumpers is one of my sins. The other one is not remembering that something has been put into the washing machine. In result, I have washed the same batch about 3 times once, leaving it in for days to come. It was time to adjust my behaviours, especially as failure to comply will result in a divorce.

I’m getting old, I cannot have this happen. Time for the washing machine notifications, there is no remedy for pink underwear, I guess I just have to wear it.


  • Google Home integration with (optional) nagging
  • Random nagging notifications every 5 min
  • Android notifications
  • Cost of wash and total time of the wash
  • neat graph (because of big data)
  • absolutely no hardware hacks to the washing machine (full warranty retained)
  • no need to arm or disarm the alarms (Start washing to start, turn off washing machine to stop)

Step 1: Washing Machine Notifications

There is more than one way to skin this cat. I think mine is the most sensible and probably one of the cheapest options to pick. If you try hard, you won’t even have to touch the washing machine, to begin with, and spare its warranty.

I want to have a notification on my mobile/computer/Google Home when the washing is done. I don’t want to remind myself about setting timers, arming anything, just put the washing in and get someone else other than my wife to remind me that the washing needs attending.

So in order to save my marriage from the impending doom, and make some extra bucks from affiliated sales (which also saves my marriage from the impending doom), I found the solution to the problem.

The answer is Sonoff POW R2.

Wait, how are you going to issue washing machine notifications with Sonoff? – Let me tell you all about it!

You will need to get Sonoff POW R2 - I linked few shops for you, but if you find a better deal, it's even more awesome:

(Just don't think I'm so nice, these links give me a tiny kickback if you use it - thank you!)

Sonoff POW R2

None of the required functions is really available in the off-the-shelf version of the device so I’m going to flash Tasmota firmware on it. This way, I can do whatever I want with the data coming from the Sonoff POW R2.

The unique ability of the Sonoff POW R2 is to share information about the power used by the device connected via Sonoff. I’m able to tell when the washing machine is operational, and when is no longer washing. All I have to do at this point is to dress it up with some logic to create the washing machine notifications. No modifications needed to the washing machine!
Just make sure to check the power ratings for your washing machine. This Sonoff POW R2 can handle 15A with 3500W of power – I’m on the safe side as my washing machine is rated for 2000W.

If you are clever enough, you can splice the cable from a short extension instead of cutting the power cord. This way your “dumb” washing machine remains intact and gets all the smart features.

Step 2: Using NodeRED for Washing Machine Notifications

You know by now, I love NodeRED. You can argue how cool is Home Assistant all day, but you won’t come close to what you can achieve with NodeRED. I have a series for beginners if you are ready to make the jump.

I’m actually going to reuse an idea I had for my 3D Printer notifications . I calculated the power consumption before, there is no point in reinventing the wheel. Time to modify it.

I’m trying to make this as user-friendly as possible so you don’t have to change much code yourself, therefore, a lot of things are coded in for you. This means we have to configure the flow to work with your washing machine. There are a couple of things that you have to provide:

  • Cost of electricity (a JSON object that has 2 tariffs. Fill in the price and times the tariff changes, if you only have a single tariff, duplicate your price)
  • Timeout (time in minutes after which the notification will be issued. It’s set to 5 min, but feel free to change it. Increase the timeout if your washing machine notification triggers mid wash)
  • Standby Power (the power draw of your washing machine measured when in standby – powered on, but not in use)
  • Nagging (on/off repeat Google Home notifications every 5min until the washing machine is turned off, nagging has to be enabled each time)

How does it work? I used a clever trick of trimming an array to number of values which equal the timeout in minutes. This means the flow ALWAYS checks the average power draw of the washing machine.

average === 0 (washing machine is off)
average <= x && average > 0 (washing machine in standby)
average > 0 (washing machine in use)

Since I'm checking the power use of the washing machine every 60 sec (the lowest value I recorded was 3W), I can easily tell when the machine is washing, in standby or off. It's time to wrap a working logic around it and add some notifications.

FUNCTION NODE: Calculate the power

var power = msg.payload.StatusSNS.ENERGY.Power;
var timer = flow.get("timeout"); var total = flow.get("Total"); var cost = flow.get("CostArray");

//check if array exists if(!total || !total.length || total === undefined){ total = []; }

//push element total.unshift(power); //remove X elementh if(total[timer] === undefined) { flow.set("Total", total); } else { total.splice(timer, 1); flow.set("Total", total); }

When the washing machine goes into standby after being odd, nothing really happens. The first event is recorded when the power uses exceeds the standby value. The washing has started (plus/minus 60 sec) and the time is noted. At this point, I also start calculating how much each minute costs me and push that value into another array. I’m also arming the notification.

If the washing machine stops, I calculate the cost of power used (sum of all elements of the array ), time taken to complete (minus timeout) and push that as a notification to Google Home or Android via Join. If you never used Join in NodeRED I have a handy tutorial to get you started . I also created loa op that goes on every 5 min, and issues a nagging notification to Google Home. That loop is stopped when the power used by washing machine = 0. I also have to disarm the notifications.

FUNCTION NODE: announce false

function secondsToHms(d) {
d = Number(d); var h = Math.floor(d / 3600); var m = Math.floor(d % 3600 / 60); return ('0' + h).slice(-2) + "h " + ('0' + m).slice(-2)+"min"; }

flow.set("announce", false); var start = flow.get("WashStart"); var timer = flow.get("timeout");

//calculate wash time var date = new Date(); var ms = date.getTime();

var totaltimeinsec = (ms-start)/1000 - 60 *timer; var totalWashTime = secondsToHms(totaltimeinsec);

flow.set("TotalWashTime",totalWashTime); flow.set("WashStart", 0);

// save the wash power session var washtotal = flow.get("WashTotal"); var sum = washtotal;

function add(accumulator, a) { return accumulator + a; }

var average = sum.reduce(add); msg.average = average / washtotal.length; flow.set("WashTotal", null);

//total cost var sum = flow.get("CostArray");

function add(accumulator, a) { return accumulator + a; }

var costofpower = sum.reduce(add); var totalcost = Math.round(costofpower * 100) / 100; flow.set("CostArray", null); flow.set("TotalCost", totalcost);

msg = {};

msg.payload = "Your washing is ready"; msg.ms = ms; msg.totalWashTime = totalWashTime;

return msg;

My notifications are issued to 3 devices (phone, desktop and laptop) I used the credential system to serve the API keys, and I also enabled context storing for my NodeRED .

FUNCTION NODE: reset notification

flow.set("announce", true);
var power = msg.payload; var total = flow.get("WashTotal"); var start = flow.get("WashStart"); // just starting the wash if(start === 0){ var date = new Date(); var sec = date.getTime(); flow.set("WashStart", sec); } //check if array exists if(!total || !total.length || total === undefined){ total = []; } //push element total.unshift(power); flow.set("WashTotal", total); msg.payload = total; return msg;

I created a small nagging generator which picks the random nag each time Google Home needs to remind you. There is a basic function to pick a random number from the range specified by the number of elements from the nagging array.

Step 3: Final Words

For less than $15 you can smart up your washing machine and probably save yourself a lot of nagging! That’s a great deal. I’m looking forward to the reaction of my misses, as she is away. She is not expecting the washing machine to talk back to her with her “favourite” quotes!

In addition, if you want to get informed about the updates to this or other projects - consider following me on the platform of your choice:

and if you feeling like buying me a coffee or supporting me in a more continuous way:

I hope you have enjoyed the project! Check more projects out on notenoughtech.com



    • Arduino Contest 2019

      Arduino Contest 2019
    • Tape Contest

      Tape Contest
    • Trash to Treasure

      Trash to Treasure

    19 Discussions


    Question 1 day ago on Step 1

    When I try to run this Node-Red code I get an error. "The workspace contains some unknown node types:
    • join-message"
    I'm running an uptodate version of Node-Red 0.19.04 on a Windows 7 machine and can't find anything reffering to join-message in my nodes or in the pallette. I'm obviously being stupid but can anyone suggest what I am missing.
    1 answer

    7 days ago

    Hey. Cool project. I'm just wondering, but it appears to me, that the electricity is actually the smallest part of the total cost. Have you considered adding the cost for water and detergent? Probably just as an offset... 0.11$/EUR/Pounds wouldn't make me too excited to empty the machine...

    1 reply

    Reply 7 days ago

    I'm not sure how I'm going to explain this to the sonoff :) hahaha in theory you could add the default offset for detergent used. That's not a problem. I just didn't want to make an interface for this at all. I'm forgetful, no way I would add each time "cup of powder & and a cup of softener"
    But if you link this to a barcode scanner in your phone, you could introduce the cost of washing powder devided by the number of washes done.


    8 days ago

    Hey there, I read somewhere (cannot find now) that Itead "closed" somehow the possibility to flash new firmware to their Sonoff products.
    Have you faced any challenges in this regard?

    1 reply

    Reply 8 days ago

    I think it's quite the opposite. In May they will release the DIY mode that opens up REST API without flash. So you would be able to keep original firmware and have the offline 3rd party access on your terms. It wont replace MQTT etc.. but it's an option for all who dont feel comfortable modding hardware


    12 days ago

    Very ingenious! I'm using a couple of the Sonoff smart switches for the power monitoring myself. I wondered if it was possible to tie in or redirect that information... wow! Thank you!

    3 replies

    Reply 11 days ago

    Trust me, no one is happier than my wife... Constant nagging is the mother of all inventions :) haha
    Thank you! Let me know how you get along!


    Reply 11 days ago

    "Constant nagging is the mother of all inventions :) "
    that is priceless!!!


    Reply 10 days ago

    I'm sure we can come up with a reasonable price to quote me :)


    Question 11 days ago

    While I am familiar with remote control of AC using X-10 modules, I am lost when it comes to this new approach. If I have a wifi router in my house, will that be sufficient to allow me to use the Sonoff device?

    Or, will I need a wireless phone and contract? Or must I have an active internet connection to use these Sonoff devices?

    Google Chromecast works great - but not if you lose your Internet connection.

    I like your idea of monitoring the Washing Machine. And, wld like to do smething similar to monitor our well pump*, well pump heater lamps, water heater and electric baseboard heaters.


    * We had a break in the line and never noticed until the second electric bill was opened!

    2 answers

    Reply 11 days ago

    You will need a NodeRED server or something that will do the thinking part. NodeRED on RPI will set you back about $10 + Sonoff POW r2. You don't actually need the internet as long as you don't care for voice notifications. Join can be replaced with AutoRemote which has the local mode. I have plenty of write-ups about that on my page.

    How you want to get notified is down to you. You could use flashing connected lightbulbs, Google Home, Phone, a tone streamed to an audio device or an email.
    For obvious reasons, I went with what works for me - phone, desktop and Google Home

    The solution can be used "as is" with any appliance that has 3 states: off, standby(low power) and operation (high power).


    Reply 11 days ago

    Thank you for the detailed response. You have given me lots to look up!
    While we do have Internet Access here (no cell phone, however), I don't want to build (invest in) a system that is dependant upon access to the net!
    I use computers from the Good Will Store to save money and had Dial-up for years (NetZero).
    Frankly, I do not understand Google Home and have yet to find a Google Home for Dummies.
    I have X-10 controls that regulate my water heater in the basement and a red lamp upstairs so 1. I use less electricity 2. have a visual indication when it is heating water, and 3. Am able t switch it on at will sing a small remote.
    It seems to me that these Sonoff devices are similar - save they are controlled via Wi-Fi signals while X-10 transmit over the electric lines in the home (They (X-10) also have a proprietary radio signal control - as I understand it).
    Again, thanks for the response.
    Gotta run - clothes are done.


    12 days ago

    Looks very cool. I have a simpler method - when I put the washing on, I put the washing basket in the hall where I see it regularly. Not nearly as technically refined I will admit.

    1 reply

    Reply 11 days ago

    I wonder if this triggers new nagging mode "what is this washing basket doing in the middle of the hall?"
    But fair play to you! :)


    12 days ago

    "The dumber thing in my household is me."
    I don't buy that.

    Cheers for a great, well-documented project! I did not know that Sonoff had (high) power versions. Thank you

    1 reply

    Reply 11 days ago

    I may come up with smart ideas once a year, but for the most of the time I'm prone to really bad ideas :)
    Enjoy and good luck :)
    (and thank you for believeing in me)


    Tip 12 days ago

    If you want to prevent pink clothes due to colors running out and staining others, use "Shout Color Catcher" sheets (one per wash): https://www.shoutitout.com/en-us/products/color-ca...

    It saved my marriage!

    BTW, most washing machines have a audio warning when the cycle is done. The simplest models use a timer motor moving a set of cams and switches. It is easy to find the switch related to the audio buzzer and wire a new circuit to it.

    1 reply

    Reply 11 days ago

    Thanks for the tip :) I might give the colour catchers a go. I know for sure this is not the last time I made this mistake!
    I know about the audio warning, the problem is, according to my friends, all of them turned the feature off very quickly :) and in all honesty, I would do the same. Having a notification (that could be turned into a permanent until washing is taken away) is much subtle but equally annoying solution I think :)
    Plus you don't have to open the washing machine, which does not void the warranty :)