Dishwasher - Candy simply FI - CDI 6015 WiFi

I found the key today with the tool, but when I put the ip address in HA integration, HA crashes and I need to force restart the docker container.
I tried older release but nothing changed.

I have made e custom package to integrate my candy Bianca (BWD 596PH3/5-S).
Now I am able to know the status of my washing machine (program, status of washing, rem time, temperature, spin speed, ecc…) and I am able to start and stop a 6-7 wash program (the program that i use more frequently).

Then i use banner custom components to show a part of this information:
image

1 Like

Do you want to share with us?

1 Like

of course!!! this is the github repo:

https://github.com/wariat85/hm_candy_bianca/blob/588becede6f7d2deaf0444e4a21f89d5d67fb7c2/README.md

1 Like

i have only 3 entities
Wash cycle remaining time
Wash cycle status
Washing machine

also i did not enter the key…how does this works?

1 Like

For anybody else having trouble getting the integration working. I have written a python script for Hoover WDWOA596H WIFI Washer Dryer which uses the Candy API.

The yaml approach above from _Paolinho looks great though. Wish I had seen that before I started my project.

If anybody is curious here is my approach: GitHub - Eikkargh/Candy-API-to-JSON: Communicates with Candy/Hoover washer dryers to produce a JSON readable by Home Assistant

It may need modifying if you are using a different machine.

image

2 Likes

Hello,

I have a Candy Pro (RPW4966BWMR) working with the hOn app.

Is there a way to make it works with HA?

Have you tried the Candy integration from HACS? It doesnt seem to work with all devices including mine.

If the integrations doesnt work you could see if you can get a response from the API. In console try:
curl -s http://<CANDY_IP_HERE>/http-read.json?encrypted=1 | xxd -r -p

The response should be an encrypted plaintext. If this works you could try the solution from my github link in the post above. The readme outlines how to get the key, update the python script and set up sensors in Home Assistant.

If anyone else has the same problem as I do, that the device was already registered to another account, then the solution is to replace the microprocessor in the unit (ESP32) and transfer the software onto it. The server only checks the MAC Address, so any serial number can be entered into the app.

1 Like

I solved using the hOn integration here: GitHub - ofalvai/home-assistant-candy: Unofficial Candy/Haier appliance integration for Home Assistant

Could someone who’s successfully controlling their device please give me a quick sanity check and a steer on next steps?

I have a Hoover H-Wash&Dry 500 and I want to be able to start a cycle via an HA automation and monitor its status. I’m running HA in a Docker container.

I have the encryption key for my washing machine so can decrypt the requests and figure out the commands to send.

I’m a bit blurry on the next steps. It sounds like pyscript or Appdaemon are going to be the best ways of sending the commands to the machine. I have no experience with either but will figure it out; is one objectively better for this task than the other or is just personal preference?

Also do I still need to install xortool-xor in the HA Docker container, or does using pyscript / Appdaemon avoid this because I can use various other python libraries instead?

I have not attempted to send commands to my machine. I just grab the data with command_line calling a python script that does all the decoding. I could never get my machine to work with the integration. Subtle differences in home my machine responds maybe.

I have not seen any solutions for this but it should be possible to work this out with something like packet capture running on android. Then fire off the command from the hOn/simply-fi phone app and see what packet capture sees. Set up a button in home assistant to post the same command to your machine.

Ill have a look at doing this when I next run my machine see what I find.

Wouldn’t be the other way around?
You need to see what packet is send to your machine from internet? From hOn server to machine.
From phone app to hOn server packet is probably not relevant if you want direct control. Just my thoughts though, I have really not much knowledge about any of this.

Hi.
What is wrong?

You are correct. On my phone I only captured packets to the server.

To control locally it would need extra steps to capture the packets from the server to the machine, rather than the outbound packets from the mobile app. Something like Kismet or wireshark could be used to intercept these packets.

I am not sure where it is going wrong beyond it being line 25 giving an error. We would need to see a copy of the full code to work it out.

It looks like you are trying to find your encryption key from the hex data, if this is the case you could try the CandySimplyFi-tool from the integration documentation.

Alternatively you could use xorknown.py from: @Alamot.. This can help guess the key and then can be used to decrypt with a known key.

Following up on my post from 18 months ago in case there are any new developers looking at this thread.

Im amazed that nothing further has happened with the automation of these integrations.

All you need is to take the command in an encrypted format such as

Selettore=2&Program=3&TimeProgr=60&RecipeId=NULL&RecipeStep=0&StartStop=1

Then encrypt it using the encryption key and Xor which gives you a value such as

2b1d141d0c0c170a1d454a5e280a171f0a1915454b5e2c11151d280a171f0a454e485e2a1d1b11081d311c45362d34345e2a1d1b11081d2b0c1d0845485e2b0c190a0c2b0c17084549
(I used xxxxxxxxxx as the encryption key)

This just needs calling then via a shell command such as;

shell_command:
    oven_top_grill_60: /usr/bin/curl 'http://192.168.1.90/http-write.json?encrypted=1&data=2b1d141d0c0c170a1d454a5e280a171f0a1915454b5e2c11151d280a171f0a454e485e2a1d1b11081d311c45362d34345e2a1d1b11081d2b0c1d0845485e2b0c190a0c2b0c17084549'

Im currently doing this manually using https://md5decrypt.net/en/Xor/ (Type is Text/Hexadecimal) but amazed someone hasnt bundled this up into an integration where we can select the TimeProgr (Length of program) and Selettore (program) to control devices remotely.

Thanks

1 Like

Hello,
Someone can explain all this fileds what means?

{ “statusLavatrice”:{ “WiFiStatus”:“0”, “Err”:“0”, “MachMd”:“5”, “Pr”:“3”, “PrPh”:“0”, “PrCode”:“8”, “SLevel”:“0”, “Temp”:“40”, “SpinSp”:“14”, “Opt1”:“0”, “Opt2”:“0”, “Opt3”:“0”, “Opt4”:“0”, “Opt5”:“0”, “Opt6”:“0”, “Opt7”:“0”, “Opt8”:“0”, “Opt9”:“0”, “Steam”:“0”, “DryT”:“0”, “DelVal”:“435”, “RemTime”:“3540”, “RecipeId”:“0”, “Lang”:“0”, “FillR”:“0”, “DisTestOn”:“0”, “DisTestRes”:“0”, “CheckUpState”:“0”, “T0W”:“0”, “TIW”:“0”, “T0R”:“0”, “numF”:“0”, “unbF”:“0”, “unbC”:“0”, “NtcW”:“179”, “NtcD”:“9”, “motS”:“0”, “APSoff”:“0”, “APSfreq”:“62500”, “chartL”:“157242” } }

In particolar i need to know if i can extract the time remaining for clean filter like this image from the app

I don’t think machine keeps track of this information, it’s most likely calculated by the app itself based on statistics from the /http-getStatistics.json?encrypted=1 endpoint

Anyway here is a bit more information about the fields from what I gathered on my washing machine.

Pr = Selected program
WiFiStatus = Remote control enabled
Temp = Temperature
SpinSp = Spin Speed
FillR = Fill percent
PrCode = Program code
MachMd = Machine state

  • Idle = 1,
  • Running = 2,
  • Paused,
  • DelayedStartSelection,
  • DelayedStartProgrammed,
  • Error,
  • Finished1,
  • Finished2

PrPh = Wash program state

  • Stopped,
  • PreWash,
  • Wash,
  • Rinse,
  • LastRinse,
  • End,
  • Drying,
  • Error,
  • Steam,
  • Good_Night,
  • Spin

RemTime = Remaining time
SLevel = Soiling level setting 1-3
Opt1 = Prewash setting
Opt2 = Hygiene Plus setting
Opt5 = Extra rinse setting
Steam = Steam setting
Lang = Language
CheckUpState = Self-test

  • Idle = 0,
  • InProgress = 1,
  • Healthy = 2

NtcD = Door state

1 Like

Has anyone had any luck remote starting a Hoover H-Dish 300 dishwasher ?

I was able to sniff and decode the packets that the Wizard app sends to the machine but when I send the exact same encrypted requests using my browser/curl the machine does nothing even though it returns a “successful” message.