Can smart Samsung washing machines be started with the SmartThings integration?

the 2 templates, where do you put them ? When a make that in a script a get an error : Message malformed: extra keys not allowed @ data[‘template’].

@Frank6 Can you post your script?

Apologies for the late reply. You were replying to my comment, but I didn’t use the API. It appears though that de device ID in the curl command is simply the device ID you’d use for any call to the SmartThings API.

So you’re not limited to Home Assistant specific documentation in relation to the API, but any documentation on the SmartThings API will do.

Here I read something about obtaining the device ID: SmartThings My Device | Samsung Developers

1 Like

Hoi Teun,

I try to use your script in HA.

template:

  • button:
    • name: “Start wasprogramma”
      icon: mdi:washing-machine
      press:
      • service: script.washer_services
        data:
        command: start_cycle
    • name: “Pauzeer wasprogramma”
      icon: mdi:pause
      press:
      • service: script.washer_services
        data:
        command: pause
    • name: “Cancel wasprogramma”
      icon: mdi:washing-machine-off
      press:
      • service: script.washer_services
        data:
        command: cancel

This is nice! Is it also possible to start a specific program? Like wool, cotton, express?

I am trying to create those routines and it does not work. The washing machine is integrated with smartthings and all works as expected. But when I create a routine triggered by the washing status Ready it does not work, not the virtual switch or anything else. I tried to make that the status ready would turn on a light and it does not work either, so it is not about the virtual switch. I link the virtual switch to the light and it works.
When turning on the machine I can see the machine’s card changes from Off to Ready, but the switches do not react.
Any ideas? Thanks

We can’t help you if we can’t see what you have done


Actually my problem does not seem to be related to HA but to Smartthings. And now the problem got even worst. Initially I paired the washer to smartthings and all the basics were just working perfect. I would turn on and off the washer and the card inside smarthings would update right away. I would turn on the Smart Control and the app would notify me and give me the option to start the washing. Then I tried to set the routines to be able to control the washer through HA and the routines would not work. I deleted and repaired the washer, reseted the washer, unplug the washer but routines would not work, but inside Smartthings all look fine. Next day I tried to start a wash from Smartthings for the firs time and I notice that the status in Smartthings would not update properly, I press the Smart Control and nothing changed in Smartthings. I went through all reseting, deleting again, but I get always to the same point where the status in Smartthings would not update. The card says something and when opening it says something different. I did a washing manually and Smarthings would tell me random things, now it is washing, now it is not, now it is 3h left, now 3:30. The pause button in the app sometimes would work and sometimes would not. At some point I restarted the router and I notice that in the app the Smartthings hub was offline, but I clicked in the card and it said it was online, back out the card and the card says offline, only after 15 or 20 min the card showed online.


Sorry, it only lets me to post one image per post and only three reply as I am new. The washer in this example was really off. Thanks in advance

@samolo75 This does indeed appear to be an issue that is related to SmartThings, your washing machine, or potentially your WiFi network or internet access.

Is your WiFi signal strength for your 2.4ghz network good near the washing machine? Additionally, do you have many other smart devices that do work well?

I have had an Asus router in the past that initially connected succesfully with ESP8266 based smart devices (in other words, about 95%) but would consistently stop communicating with them after a few minutes. Perhaps a scenario like this explains your issues. You can try to ping your washing machine if you know its IP address to see if it’s connected to the network when SmartThings is reporting an incorrect status.

Yes, other devices work fine and the WIFI 2.4 ghz to the washer is pretty acceptable, 3 or more bars out of 5. The router is Asus. So, you find it is something relate to the router? any specific setting? My other devices are z-wave, but the Smartthigns hub (V2 wired to the router) and the washer. What I find strange is also this thing about the card behaving different from what you see after opening the card. If it was consistent I would understand that the router is the root cause. I have a lock, also z-wave, and that works perfect, as soon as I close it manually the status of the lock changes, both places, the card preview and inside the card. Thanks for the reply
EDIT: Also I have the weird behavior where I do get a pop up notification on the phone saying that I did enabled the Smart Control (so the washer did successfully communicate that) but the app does not change and I cannot start the washing, just send the program.
I just tried again. Now the card is changes pretty quick when turning on/off the washing, but inside the card the status does not change, I need to get out and in again. I get the notification right away when turning on Smart Control, and I guess the Start option only when sending the program to the washer, and it takes around 1 min to finalize the sending of the program. I am pretty sure I would get the Start button right away when pressing the Smart Control. Also sending a program would take less than a second.

Update. Now it works fine for no reason. I guess it was Smartthings. I did not have time to try the routines.

My use case is to have the machine in a ‘pause’ state and then ‘run’ it when electricity prices are low. The ‘run’ argument gives no error, but the machine remains paused. If I change it to ‘stop’ however, that works and the cycle get’s canceled. Strange right, I gave all the possible rights to my token. Any clue what I’m supposed to try next?

Update: I figured it out, I have to press the ‘wifi button’ shortly to activate ‘remote control’. Then it just works fine.

1 Like

This is excellent. In addition to this I found a way to change the cycle and probably many more settings.

This curl command changes the washing machine cycle to a different one.

curl --location --request POST 'https://api.smartthings.com/v1/devices/<DEVICE ID>/commands' \
--header 'Authorization: Bearer <AUTH TOKEN>' \
--header 'Content-Type: text/plain' \
--data-raw '[
    {
    "capability": "samsungce.washerCycle",
    "command": "setWasherCycle",
    "arguments": ["Course_1C"]
    }
]'

The argument is the specific cycle that the washing machine is set to. This name unfortunately does not correspond to what it says on the screen, and as far as I know there is no way to generate a simple list of all the options that you’re used to seeing on the screen.

I’ll mention some steps I tool to discover how to set the cycle and change other variables.

Getting your device ID

Using Postman you can run the following to get the device ID of your washer (api docs):

Make sure you have your bearer token set in Postman

https://api.smartthings.com/v1/devices/

Part of the response is the deviceId. Note this down. If this is confusing to you, check this page where it’s explained how to use postman for this exact purpose.

Alternatively, if you do not want to install postman you can run the following in a Linux command prompt

curl --location 'https://api.smartthings.com/v1/devices/' \
--header 'Authorization: Bearer <AUTH TOKEN>'

Identifying the cycle name

Using another GET command in postman we can get the name of the currently selected cycle (api docs). Make sure your washing machine is on with smart control switched on.

https://api.smartthings.com/v1/devices/<DEVICE ID>/components/main/capabilities/samsungce.washerCycle/status

The output is a long json of cycles with their supported settings. You’ll notice that the names are 1B, 1E etc. Whatever they might be for your washer. The currently selected cycle is found under the washerCycle. In my case it is currently at Table_02_Course_1C.

image
This is not the exact value that you’d use when changing the cycle. See the referenceTable ID below, this needs to be removed from the value name first, which leaves you with “Course_1C”

So now is a good time to switch your washer to the cycles you use and issue the request in postman every time you changed the cycle.

Changing the cycle is only one of many possible commands you can issue to change settings on your washer.

Finding out which command to issue to use capabilities

I used the excellent smartthings command line tool on windows to find out which commands I can issue. Install the msi if you’re on windows or do your magic if you’re on Linux. Then open a terminal window and issue the following:

smartthings capabilities samsungce.washerCycle 1

You’ll be prompted to log in.

Then you'll see this output
PS C:\Users\beetle> smartthings capabilities samsungce.washerCycle 1
Capability: Washer Cycle (samsungce.washerCycle)


Attributes:
────────────────────────────────────────────────
 Name             Type           Setter
────────────────────────────────────────────────
 supportedCycles  array<object>
 washerCycle      string         setWasherCycle
 referenceTable   {
                    id: string
                  }
────────────────────────────────────────────────


Commands:
─────────────────────────────────────
 Name            Arguments
─────────────────────────────────────
 setWasherCycle  washerCycle: string
─────────────────────────────────────
PS C:\Users\beetle>
You can do the same with Postman, but the result is more difficult to interpret
https://api.smartthings.com/v1/capabilities/samsungce.washerCycle/1

Which other factors can I control?

I don’t know. It’s easy to find out.

Get a full overview of your washing machine

https://api.smartthings.com/v1/devices/<DEVICE ID>

Notice that samsungce.washerCycle is in there, but so is samsungce.washerOperatingState. These are capabilities. Each capability should have commands to change it. You’ll simply need to follow the routine above to change settings under capabilities.

6 Likes

Thank you, this contribution has been extremely helpful. I’ve got the auto start setup for both my washer and dryer now based on solar production.

Interestingly, the “run” state for the washer stays right now while I expected it to be “stop”. so I’ve done the condition based on “job state” equals none , but if remote control still equals true I’m wondering if it could start another cycle again unintentionally. It should be simple to test over the next few days when I have some time.

I was also able to toggle the washing cycles, but not the dryer’s programs or how dry it needs to be ( dryerCycle / dryerDryLevel while testing with postman. Has anyone found a commands list for these appliances (some trial and error with setdrylevel or similar weren’t accepted by the API). I can’t find this in the API docs from Samsung or anywhere else.

image

This is a very good and informative thread, but folks, look at the logic needed to automate things!
When my wife fills the washing machine with dirty laundry, adds detergents, selects the desired program … and then what?
The whole situation needs a way to signal to Home Assistant that the machine is ready and then let Home Assistant decide when to start the machine based on some external criteria.

In my case, the external criteria is when the energy price is at its lowest in a 12hour period looking ahead in time. This is fully possible. The problem is; How can Home Assistant know for sure that the washer is ready for action?

The situation is identical for the dish-washer as well as the dryer.
I thought I could tell my wife to prepare everything and then switch the appliance on, select the program - but not press start, leaving the machine idle. Home Assistant can see that the device has been powered on, and use that as trigger or condition for sending the start command on a later stage.
However, as it turns out - all these stupid machines times out and turns themselves off again after a while, if nothing happens. None of them stays on (idle) forever, waiting to be started.

So another user-friendly and logical (easy to remember) method is needed, that my wife can use to signal that a machine is ready for action. (she refuses to open her SmartPhone, launching an app and press a button or set a delayed start based on some price forecast. It is just too much hassle, and it is too complicated).

Does anyone have some good ideas how to do this?

Why don’t you use ST app to add routine like example above?

You may use ST app to start the cycle all by itself or just to activate a virtual switch that would notify HA to do something more advanced.
Also, you may add a routine to remember someone to turn on the Smart Control.

The ST App has no knowledge of when the electricity price reaches its lowest value, so it doesn’t know when to start the machine.

ST app doesn’t know but you know when price is the lowest and you can inform it in the routine.
That is the reason I added 10:00 as an example.

Or is it a dynamic value that changes every day and doesn’t repeat even between weekdays ?
If that is the case, how do YOU know when it reached the lowest price? How is it calculated ?