Something has changed sometime in the last year. I’m now able to successfully start a timed oven cooking session (as in the official SmartThings app), via the SmartThings CLI as well as via direct REST calls to the smartthings api server. I haven’t explored too deeply yet, but I have been able to start various timed cooking modes (Bake, Broil, ConvectionBake, etc.), which I definitely wasn’t able to do before, and also stop cooking (which I believe already worked).
I noticed that the ovenOperatingState capability moved from proposed to production in SmartThings’ documentation at some point in the past year, so that may be when/why this started working.
I use Home Assistant, and have implemented these* as Home Assistant Restful Command actions, but it should be fairly easy for someone to adapt these to curl or any programming language that supports POST requests
rest_command:
oven_start:
url: "https://api.smartthings.com/v1/devices/YOUR_DEVICE_ID_HERE/commands"
content_type: "application/json; charset=utf-8"
method: POST
headers:
authorization: "Bearer AUTH_TOKEN_HERE_ABC_DEF_WXYZ"
payload: |
[{"component":"main",
"capability":"ovenOperatingState",
"command":"start",
"arguments":["{{ mode }}",{{ time }},{{ temp }}]
}]
oven_stop:
url: "https://api.smartthings.com/v1/devices/YOUR_DEVICE_ID_HERE/commands"
content_type: "application/json; charset=utf-8"
method: POST
headers:
authorization: "Bearer AUTH_TOKEN_HERE_ABC_DEF_WXYZ"
payload: |
[{"component":"main",
"capability":"ovenOperatingState",
"command":"stop"
}]
oven_set_time:
url: "https://api.smartthings.com/v1/devices/YOUR_DEVICE_ID_HERE/commands"
content_type: "application/json; charset=utf-8"
method: POST
headers:
authorization: "Bearer AUTH_TOKEN_HERE_ABC_DEF_WXYZ"
payload: |
[{"component":"main",
"capability":"execute",
"command":"execute",
"arguments":["/configuration/vs/0",{"x.com.samsung.da.currentTime":"{{ now() | as_timestamp | timestamp_custom('%Y-%m-%dT%H:%M:%S') }}" }]
}]
Add these to the Home Assistant configuration.yaml file, then use the Developer Tools>YAML> and click the reload button for “RESTFUL COMMAND” to make Home Assistant aware of them. Then you can call these actions from anywhere Home Assistant supports Actions (automations, scripts, buttons, etc).
action: rest_command.oven_start
data:
temp: 350
mode: Bake
time: 300
Usable modes will depend on the appliance in question supporting them (e.g. my electric range doesn’t have microwave features). I think you can find what your appliance supports using the https://my.smartthings.com/advanced/ site, by browsing the device attributes and looking for supportedOvenModes (e.g. mine are [“Bake”, “Broil”, “ConvectionBake”, “ConvectionRoast”, “warming”, “Others”, “Dehydrate”] ).
Time is in seconds, and temperature is in Fahrenheit because that’s the chosen setting in the SmartThings app. My oven has device profile ‘DA-KS-RANGE-0101X’ and model code ‘NE6516A-/AA0’. I’m currently running Home Assistant 2024.10.4
YMMV!
*In addition to start and stop, I also included a set time action in the above actions, just as a nice-to-have feature. The time set action was adapted from this github repo: GitHub - nomis/samsung-oven-sync-time: Sync time on Samsung ovens