Samsung Wind Free AC doesn't report supported fan oscillation as it should on the API

I recently bought a Samsung Wind Free AC and I’m using the SmartThings API to connect it to Home Assistant.

I noticed that it lists the capability fanOscillationMode, but here’s my status:

            "fanOscillationMode": {
                "supportedFanOscillationModes": {
                    "value": null
                },
                "fanOscillationMode": {
                    "value": "horizontal",
                    "timestamp": "2021-10-25T21:36:47.745Z"
                }
            },

You can see that supportedFanOscillationModes is empty, but it really should contain the supported values.

quering https://api.smartthings.com/v1/capabilities/fanOscillationMode/1 I get the following response:"

{
    "id": "fanOscillationMode",
    "version": 1,
    "status": "proposed",
    "name": "Fan Oscillation Mode",
    "attributes": {
        "supportedFanOscillationModes": {
            "schema": {
                "type": "object",
                "properties": {
                    "value": {
                        "items": {
                            "title": "FanOscillationMode",
                            "type": "string",
                            "enum": [
                                "fixed",
                                "vertical",
                                "horizontal",
                                "all",
                                "indirect",
                                "direct",
                                "fixedCenter",
                                "fixedLeft",
                                "fixedRight",
                                "far",
                                "wide",
                                "mid",
                                "spot",
                                "swing"
                            ]
                        },
                        "type": "array"
                    }
                },
                "additionalProperties": false,
                "required": [
                    "value"
                ]
            },
            "enumCommands": []
        },
        "fanOscillationMode": {
            "schema": {
                "type": "object",
                "properties": {
                    "value": {
                        "title": "FanOscillationMode",
                        "type": "string",
                        "enum": [
                            "fixed",
                            "vertical",
                            "horizontal",
                            "all",
                            "indirect",
                            "direct",
                            "fixedCenter",
                            "fixedLeft",
                            "fixedRight",
                            "far",
                            "wide",
                            "mid",
                            "spot",
                            "swing"
                        ]
                    }
                },
                "additionalProperties": false,
                "required": []
            },
            "enumCommands": []
        }
    },
    "commands": {
        "setFanOscillationMode": {
            "arguments": [
                {
                    "name": "fanOscillationMode",
                    "optional": false,
                    "schema": {
                        "title": "FanOscillationMode",
                        "type": "string",
                        "enum": [
                            "fixed",
                            "vertical",
                            "horizontal",
                            "all",
                            "indirect",
                            "direct",
                            "fixedCenter",
                            "fixedLeft",
                            "fixedRight",
                            "far",
                            "wide",
                            "mid",
                            "spot",
                            "swing"
                        ]
                    }
                }
            ]
        }
    }
}

If I try to send that setFanOscillationMode command, just a few of those arguments work.
But when I query my device’s status after doing that, I see that it does return a list of supported modes inside execute, but its completly different.

            "execute": {
                "data": {
                    "value": {
                        "payload": {
                            "rt": [
                                "x.com.samsung.da.wind.direction"
                            ],
                            "if": [
                                "oic.if.baseline",
                                "oic.if.a"
                            ],
                            "x.com.samsung.da.modes": "Fix",
                            "x.com.samsung.da.supportedModes": [
                                "Fix",
                                "All",
                                "Up_And_Low",
                                "Left_And_Right"
                            ]
                        }
                    },
                    "data": {
                        "href": "/wind/direction/vs/0"
                    },
                    "timestamp": "2021-10-25T22:23:40.564Z"
                }
            },

So… I think it’s a bug in the firmware and/or the documentation…

More about my device:

@automarcio, welcome to the undocumented world of Samsung SmartThings.

Tagging @erickv and @nayelyz for some help.

1 Like

Hey, @automarcio

Welcome to the community! In the future, feel free to post inquiries like this one under the #developer-programs category, it will get higher visibility.

So, about your inquiries… there are two things to highlight:

  1. Since Samsung OCF appliances were integrated based on the legacy model, there are still a few caveats that our team is looking to address as soon as possible to bring back the full support of OCF devices.
  2. Notice that the status of the capability is proposed, which means that even if it has the appropriate capability schema and it owns a capability presentation, there might be a few inconsistencies across the platform to consider.
2 Likes

@erickv I wasn’t aware of the whole OCF thing…
Is there another open local API for it?

If not, it’s really a bummer that this brand new product is not complying with your own API… The main reason I bought it is that it should be easily integrated with Home Assistant.

If there’s anything I could help codewise, please let me know, I would be happy to help.

1 Like