Maytag Smart Washer/Dryer Integration

I should be able to work on the lib soon, so that we can add this to the official integration later.
Since I don’t have a maytag washer, can someone send me the full attributes json so I can work with that? You can redact the SAID and so on.
I would also need a tester, so if someone is available, please PM me or just contact me on matrix (abmantis on matrix dot org)

I have both the JSON and a washer; also happy to do testing.

I’ll send it over in a bit

@abmantis I sent the JSON payloads to your email
REST endpoint I pulled them from:
https://api.whrcloud.com/api/v1/appliance/{{Dryer SAID}}

It looks like the same integration would work for the Whirlpool branded units as well, albeit with a different OAuth client ID/secret.

I just added initial support for Washer/Dryer to the python lib, along with a simple CLI to test things.
Help and contributions are welcome! :slight_smile:

1 Like

I tried to get this working with a Maytag Top Load Washer Model MVW7232HW0.

I can see the washer sensor and its attributes but they are blank and I’m getting a “Data Update Failed” status for the sensor.

It is connected to the Maytag App no issue. I double checked the SAID they match. Very new to HA and no errors in the general HA logs.

@phrankinstein For now, the washer-dryer part of the integration isn’t yet hooked up to HA, just the CLI for development and testing.

Are you able to PM me a dump of the JSON file you get back from the Postman project I published? You’re fine to redact the serial and SAID along with any other personal data.

We’re finding that the API response varies based on the specific model, and perhaps even the machine/cycle state, so it would really help to have the info! Better yet, a sampling of payloads while the machine is running, paused, delay start, etc.

[EDIT] Added Postman instructions with screenshots

Postman instructions
  1. You’ll have to log in: LINK TO PROJECT
    1.1. in order to save (next step), you’ll need to fork the project

  2. Fill in the highlighted variables and Save

  3. Generate a new token

  4. Select the token and run the API Request

  5. Copy the reponse into a txt file and pm/email me [valor at me dot com]

@valor thank you very much for putting together the Postman info. This has been very beneficial in my trials. I am however having an issue with any POST commands I try and send from Postman. Any GET commands seem to be fine. I am getting back the following errors. If I put the SAID in the url I get the following: “not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9”. If I put the SAID in the headers I get the following error: “code”: “kRBzZL”,
“status”: “FAILURE”,
“message”: “Something went wrong. Please check with your system administrator. Error code: kRBzZL”.
Any ideas on where to go next would be greatly appreciated?

That Postman setup is slick! I set that up and was able to find a bunch of status’ regarding the automatic detergent dispenser in my Whirlpool washer. It’ll be nice having home assistant monitor the level so thanks for that!

I hadn’t tried setting values previously – It looks like the authorization for POST commands is different for some reason.

If you set the authorization on your POST to “Basic auth” you get a more helpful error:
Authorization header requires ‘Credential’ parameter. Authorization header requires ‘Signature’ parameter. Authorization header requires ‘SignedHeaders’ parameter. Authorization header requires existence of either a ‘X-Amz-Date’ or a ‘Date’ header. Authorization=Basic XXXXXXXXXXXXXXXXXX==

Perhaps @jaaem or @hawkeye76 could shed some light – from earlier comments they may already have MITM Proxy already set up and able to provide captures for “set” commands.

Hi all. I’m testing against a MVW7232HW washer and MED7230HW dryer.

I agree that the Postman tooling is sweet, @valor !

I was able to get an auth token. GET requests (like “List appliances”) return valid results, but also the error about “not a valid key=value pair” in reference to the Bearer header. There’s an X-Cache header in the response that says “Error from cloudfront” - could this be on the CDN side rather than from Maytag’s endpoint?

Let me know how else I can help.

According to the AWS documentation this error message means that there is no POST endpoint defined.
So… we’ll need MITM captures for POST / “Set” commands.

AWS API Gateway – Resource path doesn’t exist

Are you getting that error when you’re trying to POST, like @jobu109 is?
For what request are you getting that exactly?

@abmantis and @valor I have a Whirlpool WTW8127 Washer and WED8127 Dryer. I have minimal coding skills, but do have a lot of free time to run tests and hopefully move this integration forward. How can I get started?!

I have updated the Postman Collection to work properly now. Here is how to run this.

  1. Under Variables of the Collection, add your username and password
  2. Run ‘Get AuthToken’
  3. Run ‘Get Auth Token - Refresh’
  4. Run ‘Account - getUserDetails’
  5. Run ‘Account - List appliances’

Running in this order will populate the account id variable, and the SAIDs for the washer and dryer (in my case). Then you can run the ‘Appliance - Washer details’ and ‘Appliance - Dryer details’.

You can import the Collection from this link: here.

1 Like

Hey all. Great thread! So Ive been through the setup numerous times using HACs install and manual install of https://github.com/jdeath/maytag_dryer_homeassistant and no matter what I do I get Data Update Failed when I add them


Ive made a new Maytag account and even tried using a secondary household account with no luck. Any ideas?

I did try the newer linked https://github.com/mkmer/whirlpool_laundry but the readme is empty and I cant even get it installed. HACs says it is malformed and I did try moving it in manually but I got stuck at trying to run the python script manually on my Pi running home assistant (the code sort of looks like it needs to be run in place)

I am very much still a noob on HA so Im probably missing something obvious. Thanks in advance!

It means something went wrong getting the data. Perhaps there is a field your washer/dryer doesn’t support. Could be a million reasons as the code is pretty crappy! Your login could also be incorrect

If have dryer, go into the sensor.py and comment out lines 165-193 (keep 164)
If have washer, go into sensor.py and comment out lines 362-403 (keep 361)
restart home assistant
That should only get the applienceId. If it doesn’t work, then it is probably a password or applienceID issue. Make sure your password and SAID are in quotes.

1 Like

Ahhh I see what you are cooking there now. Went through and commented out all the lines which does look like it should just remove those attributes but it breaks them both and they end up now as entity not available. image

Triple checked my email as user and PW (changed it again to try). Tried email in caps, email in lowercase, SAIDs, user and email are all in quotes.

This is really weird

Added my configuration.yaml
image

Even tried moving the SAIDS up to the line. No dice. They were originally on the line below with -

opps. That is because I never initialized them! Instead of commenting out, set them = None instead of the data.get…

I think SAID needs to be on a separate line as stated in the documentation.

then if that works, we can try to figure out what field is causing issues.

1 Like

BINGO! We have Id’s :slight_smile: You would not believe how much time I wasted on this over the weekend. I am in your debt. I’ll add the few items Ill use and play some more with getting it visible and hopefully being able to make an Alexa notification when cycles are done.

Much thanks