How i made my dishwasher and washingmachine smart

Hey Homeys! :wave:

I’ve been working hard on making my larger appliances run cheaper on solar energy without sacrificing convenience. I’d love to share what I’ve done so far and hear your tips on how to improve it!

How I Made My Appliances Smart

The setup is similar for both my dishwasher and washing machine. Here’s what I used:

Fibaro Smart Plug: To monitor the power usage of each appliance.

Door/Window Sensor: On the washing machine to detect if the door has been opened (still looking for a clean solution for the dishwasher).

HomeWizard P1 Dongle: To track if I’m delivering energy back to the grid.

Appliance Statuses

I created variables to track the status of my appliances:

Leeg: The appliance is empty.

Klaargezet: The appliance is loaded and ready to go.

Bezig: The appliance is currently running.

Vol, Vies: The appliance is full, but the contents are still dirty.

Vol, Schoon: The appliance is full, and the contents are clean.

How I Detect Energy Backfeed


I created a logic flow that detects when I’m delivering power back to the grid. Once the backfeed reaches -50 W, the variable Delivering Back? is set to “Yes.” The flow then checks if there’s enough energy available to start the washing machine first and the dishwasher afterward.

Failsafe: To avoid delays (and bad smells), I set a backup time of 14:00 to ensure the appliances start even if solar energy isn’t sufficient.


How the Flow Works

1. Preparing the Appliance

When I load an appliance and it’s ready to start, it automatically powers off, and the status is set to Ready to Start. The flow then waits for the best time to start using solar energy.

Example Flow:

When: Current power usage changes.

And: Power usage is above 10 W.

And: Delivering Back? equals “No.”

And: Dishwasher Ready to Start equals “No.”

Then: Turn off the device and set Dishwasher Ready to Start to “Yes.”

2. Starting with Solar Energy

When enough solar energy is available, the flow turns the appliance on, and the status is updated to Busy.

Example Flow:

When: The appliance is turned on.

And: Dishwasher Ready to Start equals “Yes.”

Then: Set the status to Busy and set Dishwasher Ready to Start to “No.”

Problem Solved: I noticed the system kept turning the appliances on and off when backfeeding stopped. Splitting the flows fixed this issue.


3. When the Appliance is Done

When the appliance finishes, the flow detects it by monitoring power usage. After a 5-minute timer (to avoid false positives from power spikes), the status is updated to Full, Clean. A notification is sent, and a task is added to my Todoist to empty the appliance.

Example Flow:

When: Power usage changes and drops below 10 W.

Then: Start a 5-minute timer.

When: The timer ends.

Then: Set the status to Full, Clean, send a notification, and add a Todoist task to empty the device.

Resetting the Timer

To ensure the timer doesn’t finish prematurely during short power fluctuations, I added a reset mechanism:

Example Flow:

When: Power usage changes.

And: Timer is running.

And: Power usage is above 10 W.

Then: Stop the timer.

Here i putted the different flow
When Device is turned on
And the Logic Vaatwasser klaargezet eqauls Yes
Then set Status Vaatwasser to Busy
Then set Vaatwasser klaar gezet to No

I found out when i had this as one flow the system was continuesly turning on and of my device when i stopped delevring back to the grid.

4. Emptying the Appliance

When I open the washing machine door and the status is Full, Clean, the status is reset to Empty, and the Todoist task is removed.

Fun Additions

• When someone comes home and the washing machine or dishwasher is done, my Google Home at the front door says:

“The washing machine is done. Time to empty it!”

I’m currently working on a way that Homey greets us when we get home, and sums up some fun things about the day and events that are comming up.

I hope this is interesting for others! If you have any feedback or tips for improving my setup, I’d love to hear them. :blush:

3 Likes

I can help you with the last one. Here’s my script for it:

const variables = Object.values(await Homey.logic.getVariables())
const hallwayMessageVariable = variables.find(({name}) => name === 'Hallway Message')
const laundryAcknowledgedVariable = variables.find(({name}) => name === 'Was Laundry Acknowledged')
const dishesAcknowledgedVariable = variables.find(({name}) => name === 'Were Dishes Acknowledged')

const greetingLookupTable = {
  'asleep': 'Good Morning!',
  'away': 'Welcome home!'
};

const acknowledgeLaundryMessage = laundryAcknowledgedVariable.value ? '' : `The laundry machine finished while you were ${args[0]}. Please remember to take it out!`;

const acknowledgeDishesMessage = dishesAcknowledgedVariable.value ? '' : `The dishwasher finished while you were ${args[0]}. Please remember to take it out!`;

const connection = acknowledgeDishesMessage !== '' && acknowledgeLaundryMessage !== '' ? 'and' : '';

await Promise.all([
  Homey.logic.updateVariable({
  id: hallwayMessageVariable.id, 
  variable: {
    value: `${greetingLookupTable[args[0]] || ''} ${acknowledgeLaundryMessage} ${connection}  ${acknowledgeDishesMessage}`
    }
  }),
    Homey.logic.updateVariable({
  id: laundryAcknowledgedVariable.id, 
  variable: {
    value: true
    }
  }),
    Homey.logic.updateVariable({
  id: dishesAcknowledgedVariable.id, 
  variable: {
    value: true
    }
  }),
])

And here are the three flows you need to use it. One for when someone comes home, one for when someone wakes up, and one for when the hallway motion sensor is triggered:

And maybe it’s also nice to share these:


I think you better remove the flowcards “als terugleveren is Ja”.

When “huidig vermogen is kleiner dan -50” it is per definition also smaller than -30…

So on power -50 both flows will start running.

3 things can happen:

1 the power was <-30 before it came <-50, in that case the -50 flow will pass the flowcard “als terugleveren is Ja”

2 the power was not <-30 before it turned <-50 AND the variable from the flow <-30 was set earlier than the card in the flow of <-50 is checked. in that case the -50 flow will pass the flowcard “als terugleveren is Ja” (so that card is no use)

3 the power was not <-30 before it turned <-50 AND the variable from the flow <-30 was set later than the card in the flow of <-50 is checked. in that case the -50 flow will NOT pass the flowcard “als terugleveren is Ja” AND stop.
Is that behaviour you want?

There you make a good point!

As we will be getting the new “smart meter” soon, i have thought about a similar system that automates my dryer, dish washer, washing machine, airconditioning and irrigation system during the hours when there is a possibility that due to our solar panels, energy will be delivered back to the grid. Delivering electricity back to the grid must be avoided at all times as the fee we will get, is extremely low.
But, as i see it, it’s quiet more complicated.
First of all , the devices should have a priority in which they can be started. Priorities can change during the week when some devices already ran or not. It’s possible that my irrigation already ran , so it shouldn’t run anymore for the rest of the week ( or for a specified number of days).

Secondly, it should be possible at all times to overrule the flow for whatever reason ,eg when my wife is at home and wants to start the dryer instead of the automatic start of the dish washer. Well…she doesn’t know that the dishwasher could start any minute.

One should also take into account the “gauss curve” from your solar system, so you know if it still makes sense to start a device.

I want to do all of this together with the new homey energy dongle, but as i already mentioned…it’s complicated.
At the end i think this can only be done using homeyscript as this allows more flexibility.

Thats a good one! I thought this was easily done with Advanced flows by this is not yet automatic but i will continue to play with this

As you can see in the part in the bottom i tried to automaticly sort the devices and when they run they go to the next one in line.

I made this work with a Notification, That send the question to the person thats at home, do you need this…? I am looking for a way to intergrate maybe a Dashboard in the rooms with these devices so i can start them from there.

You can see that in the bottom part as well in the picture

The only problem is when you go with enough devices the flow will become very big

question: How do you guys made it possible to start the appliances? I also use a Fibaro smart plug on my laundry machine and my dishwasher. But with that, I won’t be able to actually start the program. Am I missing something?

When you cut the power of a dishwasher/laundymachine etc. After you started a program. Then when you apply the power afterwards then it resumes its old program.

Good question…you’ll need smart devices. My dishwasher, dryer and laundry washer are smart.

No you dont actually, the dummer the better, if you look at my flow on top, i preset the program and then the Fibaro switch knows when that is, (if its above 10 watts) then it automatically turns of

When i power back to the grid, then the Fibaro switch turns on. And the program automatically resumes

I have the dishwasher just as I want. I also made it smart with a Fibaro smart plug like @Rik_Elsenaar . The flow works perfect for us. And it is +20 years old.

Thank you for the tips. That is amazing, I will try it out on my dishwasher. I don’t have solar panels (yet) but I wan tot see if I can have it run on the 3 cheapest hours.
This does work only on the dishwasher of course, the washing machine doesn’t do this right?

Youre welcome​:grin::innocent:

This also works on a laundymachine and dryer. At least with the devices that i currently have!