Can't select airConditionerMode to set in Routine

I have a device with the following profile:

{
    "mnmn": "f2sv",
    "vid": "<id>",
    "version": "0.0.1",
    "type": "profile",
    "dashboard": {
        "states": [{
                "component": "main",
                "capability": "airConditionerMode",
                "version": 1,
                "idx": 0,
                "group": "FlexFit Base",
                "values": [{
                        "key": "airConditionerMode.value",
                        "enabledValues": [
                            "Favorite",
                            "Read",
                            "Watch TV",
                            "Flat",
                            "Zero G",
                            "Snore"
                        ]
                    }
                ],
                "composite": false
            }, {
                "component": "main",
                "capability": "switchLevel",
                "version": 1,
                "values": [{
                        "key": "level.value",
                        "range": [
                            5,
                            100
                        ],
                        "step": 5
                    }
                ],
                "group": "SleepNumber"
            }
        ],
        "actions": [{
                "component": "main",
                "capability": "airConditionerMode",
                "version": 1,
                "idx": 0,
                "group": "FlexFit Base",
                "values": [{
                        "key": "airConditionerMode.value",
                        "enabledValues": [
                            "Favorite",
                            "Read",
                            "Watch TV",
                            "Flat",
                            "Zero G",
                            "Snore"
                        ]
                    }
                ],
                "composite": false
            }, {
                "component": "main",
                "capability": "switchLevel",
                "version": 1,
                "values": [{
                        "key": "level.value",
                        "range": [
                            5,
                            100
                        ],
                        "step": 5
                    }
                ],
                "group": "SleepNumber"
            }
        ],
        "basicPlus": []
    },
    "detailView": [{
            "component": "main",
            "capability": "airConditionerMode",
            "version": 1,
            "idx": 0,
            "group": "FlexFit Base",
            "values": [{
                    "key": "airConditionerMode.value",
                    "enabledValues": [
                        "Favorite",
                        "Read",
                        "Watch TV",
                        "Flat",
                        "Zero G",
                        "Snore"
                    ]
                }
            ],
            "composite": false
        }, {
            "component": "main",
            "capability": "switchLevel",
            "version": 1,
            "values": [{
                    "key": "level.value",
                    "range": [
                        5,
                        100
                    ],
                    "step": 5
                }
            ],
            "group": "SleepNumber"
        }
    ],
    "automation": {
        "conditions": [{
            "component": "main",
            "capability": "airConditionerMode",
            "version": 1,
            "idx": 0,
            "group": "FlexFit Base",
            "values": [{
                    "key": "airConditionerMode.value",
                    "enabledValues": [
                        "Favorite",
                        "Read",
                        "Watch TV",
                        "Flat",
                        "Zero G",
                        "Snore"
                    ]
                }
            ],
            "composite": false
        }, {
            "component": "main",
            "capability": "switchLevel",
            "version": 1,
            "values": [{
                    "key": "level.value",
                    "range": [
                        5,
                        100
                    ],
                    "step": 5
                }
            ],
            "group": "SleepNumber"
        }
        ],
        "actions": [{
            "component": "main",
            "capability": "airConditionerMode",
            "version": 1,
            "idx": 0,
            "group": "FlexFit Base",
            "values": [{
                    "key": "airConditionerMode.value",
                    "enabledValues": [
                        "Favorite",
                        "Read",
                        "Watch TV",
                        "Flat",
                        "Zero G",
                        "Snore"
                    ]
                }
            ],
            "composite": false
        }, {
            "component": "main",
            "capability": "switchLevel",
            "version": 1,
            "values": [{
                    "key": "level.value",
                    "range": [
                        5,
                        100
                    ],
                    "step": 5
                }
            ],
            "group": "SleepNumber"
        }
        ]
    },
    "migration": true,
    "isAutoUpdateRequired": true
}

When I try to add the device to a routine, I can select and set the switchLevel capability, but I cannot enable/set the airConditionerMode. See the screenshot

I also notice that when trying to select two of the same devices for a routine, it basically doesn’t select any after hitting the Next button. Adding each device one at a time does add, though.

Any ideas why the Mode capability can’t be enabled and selected?

Hi @smrtdrmmr, I was trying to replicate your issue but I was not able to do it. Could you please give more details? For instance, your profile structure, app version. You are using Android, right?
And, what do you mean by β€œselect two of the same devices”? Any device in general or this one in the post?
Thank you.

Hi @Ivan_Luis_Falleau . Thanks for responding. I’ll try to provide the info you requested (let me know if you’d like more):

  1. Your Profile Structure


    I have the switch, AC Mode, and a Switch Level. Nothing fancy.

  2. App Version? Android? - Currently running 1.8.10.21 on Android :+1:

  3. And, what do you mean by β€œselect two of the same devices”? Any device in general or this one in the post? - You can disregard this. It seems like I can add two of these specific devices to a routine now. Initially, I also meant two of these specific devices, as well. Sorry to add confusion.

Hi @smrtdrmmr, sorry for the delay. I’m still not able to reproduce the issue. Could you provide me with the profileId? (you can send me this by DM if you want)
Thank you.

I’ll DM it to you. Thanks!

Still having the same issue, so I know it’s not fixed. Also noting that the same problem occurs for airConditionerFanMode capabilities as well.

Not sure why mode capabilities are not modifiable in a routine, but would really like to get past this.

@smrtdrmmr sorry for the delay let me try it, as far as I know, the values you are using do not allow all sections, as it will not translate with the different languages there is an option to replace these values but this will generate that the value is always the same no matter the language.

If you check the presentation of your device with using the smartthings cli

st devices:presentation deviceId -j

Some recommendations
1- Verify that the device profile has already received the latest device configurations, some times this value is not always updated

Hey @AlejandroPadilla ,

Thanks for your response. I am not sure what you mean about the values I am using not allowing all sections. Can you clarify?

If you think that the latest profile hasn’t received the latest device configuration, what are the steps to perform to ensure that that has happened?

Also, would you like me to DM (or post here) the results of the st command?

Thanks,
Jason

Out of curiosity I created a VIRTUAL device with airConditionerFanMode and switchLevel as capabilities. The VIRTUAL devices created via the API have their attributes set to random values so I tried to make them less ridiculous by setting the supportedAcFanModes to stop and go and the fanMode to go.

When I tested it in a routine the fanMode action was indeed disabled. Then I read the airConditionerFanMode presentation and noted it was using internationalisation and took a look at the translations. Unsurprisingly stop and go were not included so I replaced them with auto and off. Now the fanMode action is enabled when creating Routines.

I note that none of Favorite, Read, Watch TV, Flat, Zero G and Snore that were shown earlier are air conditioner modes that are recognised in the translations. Maybe that is the issue.

For info, these are the modes that are included in the English translations for the airConditionerFanMode and airConditionerMode capabilties.

 fanMode.1            1
 fanMode.2            2
 fanMode.3            3
 fanMode.4            4
 fanMode.5            5
 fanMode.auto         Auto
 fanMode.max          max
 fanMode.turbo        turbo
 fanMode.medium       Medium
 fanMode.off          Off
 fanMode.smart        smart
 fanMode.sleep        sleep
 fanMode.high         High
 fanMode.windfree     windfree
 fanMode.low          Low
 fanMode.quite        quite
 fanMode.quiet        quiet
 fanMode.pet          pet
 airConditionerMode.heat              Heat
 airConditionerMode.auto              Auto
 airConditionerMode.ventilation       ventilation
 airConditionerMode.aicomfort         AI Comfort Cooling
 airConditionerMode.eco               eco
 airConditionerMode.sleep             sleep
 airConditionerMode.fan               Fan
 airConditionerMode.purification      Purify
 airConditionerMode.heatex            heatEx
 airConditionerMode.power             power
 airConditionerMode.smartventilation  smartVentilation
 airConditionerMode.comfortcooling    comfortCooling
 airConditionerMode.heatclean         Heat, Purify
 airConditionerMode.std               std
 airConditionerMode.dryclean          Dry, Purify
 airConditionerMode.cool              Cool
 airConditionerMode.ai                AI
 airConditionerMode.dry               Dry
 airConditionerMode.notsupported      Not Supported
 airConditionerMode.clean             Purify
 airConditionerMode.bypass            bypass
 airConditionerMode.force             force
 airConditionerMode.fanonly           Fan only
 airConditionerMode.coolclean         Cool, Purify
 airConditionerMode.wind              Purify

I would also comment that neither of the airConditionerFanMode or airConditionerMode capabilities define a range of accepted values for modes. I can see no reason why using ones that don’t appear in the translations should be a problem, but I rather suspect that it may well be. Unless there is some extra step that needs to be performed to handle default translations, I would suggest this is a bug.

1 Like

Thanks for the suggestion @orangebucket ! This was confirmed as a bug by @AlejandroPadilla , but no ETA on fix. Can you provide the link to the documentation with wherever you got these values from?

Also, do you think if I use alternatives with these examples as keys and my own custom values for value that it would work? E.g.

"alternatives": [
                    {
                        "key": "aicomfort",
                        "value": "Flat",
                        "type": "aicomfort"
                    },
                    {
                        "key": "ventilation",
                        "value": "Zero G",
                        "type": "ventilation"
                    }
                ]

If not, the β€œsupported” values aren’t going to make much sense for my usecase. Wonder if there is a way to skip localization or something…

It is all in the SmartThings API. In this case I was accessing it using the CLI as that dresses up the output a bit. So I’d have been using:

> smartthings capabilities airConditionerMode
Capability: Air Conditioner Mode (airConditionerMode)


Attributes:
──────────────────────────────────────────────────────────
 Name                Type           Setter
──────────────────────────────────────────────────────────
 supportedAcModes    array<string>
 airConditionerMode  string         setAirConditionerMode
──────────────────────────────────────────────────────────


Commands:
─────────────────────────────────────
 Name                   Arguments
─────────────────────────────────────
 setAirConditionerMode  mode: string
─────────────────────────────────────

> smartthings capabilities:presentation airConditionerMode
Basic Information
─────────────────────────────
 Id       airConditionerMode
 Version  1
─────────────────────────────


Dashboard States
───────────────────────────────────────────────────
 Label                         Alternatives  Group
───────────────────────────────────────────────────
 {{airConditionerMode.value}}  22
───────────────────────────────────────────────────


No dashboard actions

No dashboard basic plus items

Detail View Items
──────────────────────────────
 Label           Display Type
──────────────────────────────
 {{i18n.label}}  list
──────────────────────────────


Automation Conditions
──────────────────────────────
 Label           Display Type
 {{i18n.label}}  list
──────────────────────────────


Automation Actions
─────────────────────────────────────────────────────────────
 Label                                          Display Type
 {{i18n.commands.setAirConditionerMode.label}}  list
─────────────────────────────────────────────────────────────

> smartthings capabilities:translations airConditionerMode en
Tag: en

Attributes:
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 Name                                 Label               Description                                         Template
 supportedAcModes                     supported ac modes  Supported states for this air conditioner to be in  {{device.label}} {{attribute}} are {{value}}
 airConditionerMode                   Mode                Current mode of the air conditioner                 {{device.label}} {{attribute}} was {{value}}
 airConditionerMode.heat              Heat
 airConditionerMode.auto              Auto
 airConditionerMode.ventilation       ventilation
 airConditionerMode.aicomfort         AI Comfort Cooling
 airConditionerMode.eco               eco
 airConditionerMode.sleep             sleep
 airConditionerMode.fan               Fan
 airConditionerMode.purification      Purify
 airConditionerMode.heatex            heatEx
 airConditionerMode.power             power
 airConditionerMode.smartventilation  smartVentilation
 airConditionerMode.comfortcooling    comfortCooling
 airConditionerMode.heatclean         Heat, Purify
 airConditionerMode.std               std
 airConditionerMode.dryclean          Dry, Purify
 airConditionerMode.cool              Cool
 airConditionerMode.ai                AI
 airConditionerMode.dry               Dry
 airConditionerMode.notsupported      Not Supported
 airConditionerMode.clean             Purify
 airConditionerMode.bypass            bypass
 airConditionerMode.force             force
 airConditionerMode.fanonly           Fan only
 airConditionerMode.coolclean         Cool, Purify
 airConditionerMode.wind              Purify
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────


Commands:
─────────────────────────────────────────────────────────────────────
 Name                        Label      Description
 setAirConditionerMode       Mode       Set the air conditioner mode
 setAirConditionerMode.mode  undefined  Set the air conditioner mode
─────────────────────────────────────────────────────────────────────

>

Behind the scenes those three commands are simply the CLI accessing these three URLs with a suitable access token:

https://api.smartthings.com/capabilities/airConditionerMode/1
https://api.smartthings.com/capabilities/airConditionerMode/1/presentation
https://api.smartthings.com/capabilities/airConditionerMode/1/i18n/en

I shall defer to others when it comes to alternatives as I am just too rusty in that area and I never felt I was in control to start with.

Hi, everyone.

This case caught my eye so I wanted to give it a go and understand if what I’m thinking might help.
Indeed, as mentioned above, the values of β€œFavorite”, β€œRead”, etc. are not included in the capability’s presentation of airConditionerMode, therefore, if you’re adding a filter (enabledValues) to have only those values available in the UI, they won’t appear (disabling the option) as they don’t exist in the first place.

The good news is that the airConditionerMode capability doesn’t limit the possible value to a specific list on its definition which would make sending commands or setting a custom value for it impossible. So, we can play with the presentation a little (remember we cannot change too much of a standard capability).

So, in the device config, there’s a property called β€œpatch” which I mostly use to add, replace or remove enums of list display types. In this case, we can add those enums but they would have a static label since we cannot modify the original translation of standard capabilities.
After adding those custom enums, we can filter them as you did with β€œenabledValues” (it should be possible with supportedAcModes but I haven’t tested that).

So, the device-config would look like:

{
    "type": "profile",
    "dashboard": {
        "states": [...],
        "actions": [],
        "basicPlus": []
    },
    "detailView": [
        {
            "component": "main",
            "capability": "airConditionerMode",
            "version": 1,
            "values": [
                {
                    "key": "airConditionerMode.value",
                    "enabledValues": [
                        "Favorite",
                        "Read",
                        "Watch TV",
                        "Flat",
                        "Zero G",
                        "Snore"
                    ]
                }
            ],
            "patch": [
                {
                    "op": "add",
                    "path": "/0/list/state/alternatives",
                    "value": [
                        {
                            "key": "favorite",
                            "value": "Favorite",
                            "type": "inactive"
                        },
                        {
                            "key": "read",
                            "value": "Read",
                            "type": "active"
                        },
                        {
                            "key": "watchtv",
                            "value": "Watch TV",
                            "type": "active"
                        },
                        {
                            "key": "flat",
                            "value": "Flat",
                            "type": "active"
                        },
                        {
                            "key": "zerog",
                            "value": "Zero G",
                            "type": "active"
                        },
                        {
                            "key": "snore",
                            "value": "Snore",
                            "type": "active"
                        }
                    ]
                },
                {
                    "op": "add",
                    "path": "/0/list/command/alternatives",
                    "value": [
                        {
                            "key": "favorite",
                            "value": "Favorite",
                            "type": "inactive"
                        },
                        {
                            "key": "read",
                            "value": "Read",
                            "type": "active"
                        },
                        {
                            "key": "watchtv",
                            "value": "Watch TV",
                            "type": "active"
                        },
                        {
                            "key": "flat",
                            "value": "Flat",
                            "type": "active"
                        },
                        {
                            "key": "zerog",
                            "value": "Zero G",
                            "type": "active"
                        },
                        {
                            "key": "snore",
                            "value": "Snore",
                            "type": "active"
                        }
                    ]
                }
            ],
            "exclusion": []
        }
    ],
    "automation": {
        "conditions": [
            {
                "component": "main",
                "capability": "airConditionerMode",
                "version": 1,
                "values": [
                    {
                        "key": "airConditionerMode.value",
                        "enabledValues": [
                            "Favorite",
                            "Read",
                            "Watch TV",
                            "Flat",
                            "Zero G",
                            "Snore"
                        ]
                    }
                ],
                "patch": [
                    {
                        "op": "add",
                        "path": "/0/list/alternatives",
                        "value": [
                            {
                                "key": "favorite",
                                "value": "Favorite",
                                "type": "inactive"
                            },
                            {
                                "key": "read",
                                "value": "Read",
                                "type": "active"
                            },
                            {
                                "key": "watchtv",
                                "value": "Watch TV",
                                "type": "active"
                            },
                            {
                                "key": "flat",
                                "value": "Flat",
                                "type": "active"
                            },
                            {
                                "key": "zerog",
                                "value": "Zero G",
                                "type": "active"
                            },
                            {
                                "key": "snore",
                                "value": "Snore",
                                "type": "active"
                            }
                        ]
                    }
                ],
                "exclusion": []
            }
        ],
        "actions": [
            {
                "component": "main",
                "capability": "airConditionerMode",
                "version": 1,
                "values": [
                    {
                        "key": "setAirConditionerMode",
                        "enabledValues": [
                            "Favorite",
                            "Read",
                            "Watch TV",
                            "Flat",
                            "Zero G",
                            "Snore"
                        ]
                    }
                ],
                "patch": [
                    {
                        "op": "add",
                        "path": "/0/list/alternatives",
                        "value": [
                            {
                                "key": "favorite",
                                "value": "Favorite",
                                "type": "inactive"
                            },
                            {
                                "key": "read",
                                "value": "Read",
                                "type": "active"
                            },
                            {
                                "key": "watchtv",
                                "value": "Watch TV",
                                "type": "active"
                            },
                            {
                                "key": "flat",
                                "value": "Flat",
                                "type": "active"
                            },
                            {
                                "key": "zerog",
                                "value": "Zero G",
                                "type": "active"
                            },
                            {
                                "key": "snore",
                                "value": "Snore",
                                "type": "active"
                            }
                        ]
                    }
                ],
                "exclusion": []
            }
        ]
    }
}

Reference VID: a9ce1990-65e3-32f1-ab9f-3a2b227fab1f

And the result is:

Was it the expected result, @smrtdrmmr? Please let me know if you have any questions.

Thank you @nayelyz ! I had no idea there was a patch capability. I will test with this and report back, but it looks like it should work.

Out of curiosity, is there documentation about the patch section and these specific path values?

  • /0/list/state/alternatives
  • /0/list/command/alternatives
  • /0/list/alternatives

It seems like there are a lot of customizations that can be applied to device profiles that I am struggling to find good references and examples for :sweat_smile:

Hi, @smrtdrmmr
Those changes are meant for the device configuration (resulting in device presentation), in the API reference, there’s more info about its properties and some examples:

The path you can use depends on the capability’s presentation you’re referring to, for example, in the case of β€œairConditionerMode” (I removed the alternatives to shorten the JSON):

{
    "dashboard": {...},
    "detailView": [
        {//----Element 0 of the array (/0)
            "label": "{{i18n.label}}",
            "displayType": "list",
            "list": {//---first key of the JSON (/0/list/)
                "command": { //---sub-key of list (/0/list/command/)
                    "name": "setAirConditionerMode",
                    "alternatives": [ //---sub-key of command(/0/list/command/alternatives)
                        ... // this is where the element will be added/replaced/removed
                    ],
                    "argumentType": "string",
                    "supportedValues": "supportedAcModes.value"
                },
                "state": {//---sub-key of list (/0/list/state/)
                    "value": "airConditionerMode.value",
                    "valueType": "string",
                    "alternatives": [ //---sub-key of state(/0/list/state/alternatives)
                        ... // this is where the element will be added/replaced/removed
                    ]
                }
            }
        }
    ],
    "automation": {
        "conditions": [
            {//----Element 0 of the array (/0)
                "label": "{{i18n.label}}",
                "displayType": "list",
                "list": {//---first key of the JSON (/0/list/)
                    "alternatives": [//---sub-key of list(/0/list/alternatives)
                        ... // this is where the element will be added/replaced/removed
                    ],
                    "supportedValues": "supportedAcModes.value",
                    "value": "airConditionerMode.value",
                    "valueType": "string",
                    "multiSelectable": false
                }
            }
        ],
        "actions": [
            {//----Element 0 of the array (/0)
                "label": "{{i18n.commands.setAirConditionerMode.label}}",
                "displayType": "list",
                "list": {//---first key of the JSON (/0/list/)
                    "alternatives": [//---sub-key of list(/0/list/alternatives)
                        ... // this is where the element will be added/replaced/removed
                    ],
                    "supportedValues": "supportedAcModes.value",
                    "command": "setAirConditionerMode",
                    "argumentType": "string"
                }
            }
        ]
    },
    "id": "airConditionerMode",
    "version": 1
}

Please, let me know if you have any questions.

1 Like

@nayelyz thank you again for the info, and apologies for my delay in getting back to you. I made the updates that you advised, but it stll doesn’t seem to allow me to select a mode as part of a routine. Here is my latest device profile with patch additions:

{
    "mnmn": "f2sv",
    "vid": "<removed>",
    "version": "0.0.1",
    "type": "profile",
    "dashboard": {
        "states": [
            {
                "component": "main",
                "capability": "switch",
                "version": 1,
                "group": "Set to Fave",
                "values": [
                    {
                        "key": "switch.value",
                        "enabledValues": [
                            "on",
                            "off"
                        ]
                    }
                ]
            },
            {
                "component": "main",
                "capability": "airConditionerMode",
                "version": 1,
                "idx": 0,
                "group": "FlexFit Base",
                "values": [
                    {
                        "key": "airConditionerMode.value",
                        "enabledValues": [
                            "Favorite",
                            "Read",
                            "Watch TV",
                            "Flat",
                            "Zero G",
                            "Snore"
                        ]
                    }
                ],
                "composite": false
            },
            {
                "component": "main",
                "capability": "switchLevel",
                "version": 1,
                "values": [
                    {
                        "key": "level.value",
                        "range": [
                            5,
                            100
                        ],
                        "step": 5
                    }
                ],
                "group": "SleepNumber"
            },
            {
                "component": "footwarming",
                "capability": "presenceSensor",
                "version": 1,
                "group": "Footwarming Available?",
                "label": "Footwarming",
                "alternatives": [
                    {
                        "key": "present",
                        "value": "Yes",
                        "type": "present"
                    },
                    {
                        "key": "not present",
                        "value": "No",
                        "type": "not present"
                    }
                ]
            },
            {
                "component": "footwarming",
                "capability": "airConditionerFanMode",
                "version": 1,
                "visibleCondition": {
                    "capability": "presenceSensor",
                    "version": 1,
                    "component": "footwarming",
                    "value": "presence.value",
                    "operator": "EQUALS",
                    "operand": "present"
                },
                "idx": 0,
                "group": "Footwarming",
                "values": [
                    {
                        "key": "fanMode.value",
                        "enabledValues": [
                            "Off",
                            "Low - 30 min",
                            "Low - 1 hr",
                            "Low - 2 hrs",
                            "Low - 3 hrs",
                            "Low - 4 hrs",
                            "Low - 5 hrs",
                            "Low - 6 hrs",
                            "Medium - 30 min",
                            "Medium - 1 hr",
                            "Medium - 2 hrs",
                            "Medium - 3 hrs",
                            "Medium - 4 hrs",
                            "Medium - 5 hrs",
                            "Medium - 6 hrs",
                            "High - 30 min",
                            "High - 1 hr",
                            "High - 2 hrs",
                            "High - 3 hrs",
                            "High - 4 hrs",
                            "High - 5 hrs",
                            "High - 6 hrs"
                        ]
                    }
                ],
                "composite": false
            }
        ],
        "actions": [
            {
                "component": "main",
                "capability": "switch",
                "version": 1,
                "group": "Set to Fave",
                "values": [
                    {
                        "key": "switch.value",
                        "enabledValues": [
                            "on",
                            "off"
                        ]
                    }
                ]
            },
            {
                "component": "main",
                "capability": "airConditionerMode",
                "version": 1,
                "idx": 0,
                "group": "FlexFit Base",
                "values": [
                    {
                        "key": "airConditionerMode.value",
                        "enabledValues": [
                            "Favorite",
                            "Read",
                            "Watch TV",
                            "Flat",
                            "Zero G",
                            "Snore"
                        ]
                    }
                ],
                "composite": false
            },
            {
                "label": "SleepNumber",
                "component": "main",
                "capability": "switchLevel",
                "version": 1,
                "values": [
                    {
                        "key": "level.value",
                        "range": [
                            5,
                            100
                        ],
                        "step": 5
                    }
                ],
                "group": "SleepNumber"
            },
            {
                "component": "footwarming",
                "capability": "presenceSensor",
                "version": 1,
                "group": "Footwarming Available?",
                "label": "Footwarming",
                "alternatives": [
                    {
                        "key": "present",
                        "value": "Yes",
                        "type": "present"
                    },
                    {
                        "key": "not present",
                        "value": "No",
                        "type": "not present"
                    }
                ]
            },
            {
                "component": "footwarming",
                "capability": "airConditionerFanMode",
                "version": 1,
                "visibleCondition": {
                    "capability": "presenceSensor",
                    "version": 1,
                    "component": "footwarming",
                    "value": "presence.value",
                    "operator": "EQUALS",
                    "operand": "present"
                },
                "idx": 0,
                "group": "Footwarming",
                "values": [
                    {
                        "key": "fanMode.value",
                        "enabledValues": [
                            "Off",
                            "Low - 30 min",
                            "Low - 1 hr",
                            "Low - 2 hrs",
                            "Low - 3 hrs",
                            "Low - 4 hrs",
                            "Low - 5 hrs",
                            "Low - 6 hrs",
                            "Medium - 30 min",
                            "Medium - 1 hr",
                            "Medium - 2 hrs",
                            "Medium - 3 hrs",
                            "Medium - 4 hrs",
                            "Medium - 5 hrs",
                            "Medium - 6 hrs",
                            "High - 30 min",
                            "High - 1 hr",
                            "High - 2 hrs",
                            "High - 3 hrs",
                            "High - 4 hrs",
                            "High - 5 hrs",
                            "High - 6 hrs"
                        ]
                    }
                ],
                "composite": false
            }
        ],
        "basicPlus": []
    },
    "detailView": [
        {
            "component": "main",
            "capability": "switch",
            "version": 1,
            "group": "Set to Fave",
            "values": [
                {
                    "key": "switch.value",
                    "enabledValues": [
                        "on",
                        "off"
                    ]
                }
            ]
        },
        {
            "component": "main",
            "capability": "airConditionerMode",
            "version": 1,
            "idx": 0,
            "group": "FlexFit Base",
            "values": [
                {
                    "key": "airConditionerMode.value",
                    "enabledValues": [
                        "Favorite",
                        "Read",
                        "Watch TV",
                        "Flat",
                        "Zero G",
                        "Snore"
                    ]
                }
            ],
            "patch": [
                {
                    "op": "add",
                    "path": "/0/list/state/alternatives",
                    "value": [
                        {
                            "key": "favorite",
                            "value": "Favorite",
                            "type": "inactive"
                        },
                        {
                            "key": "read",
                            "value": "Read",
                            "type": "active"
                        },
                        {
                            "key": "watchtv",
                            "value": "Watch TV",
                            "type": "active"
                        },
                        {
                            "key": "flat",
                            "value": "Flat",
                            "type": "active"
                        },
                        {
                            "key": "zerog",
                            "value": "Zero G",
                            "type": "active"
                        },
                        {
                            "key": "snore",
                            "value": "Snore",
                            "type": "active"
                        }
                    ]
                },
                {
                    "op": "add",
                    "path": "/0/list/command/alternatives",
                    "value": [
                        {
                            "key": "favorite",
                            "value": "Favorite",
                            "type": "inactive"
                        },
                        {
                            "key": "read",
                            "value": "Read",
                            "type": "active"
                        },
                        {
                            "key": "watchtv",
                            "value": "Watch TV",
                            "type": "active"
                        },
                        {
                            "key": "flat",
                            "value": "Flat",
                            "type": "active"
                        },
                        {
                            "key": "zerog",
                            "value": "Zero G",
                            "type": "active"
                        },
                        {
                            "key": "snore",
                            "value": "Snore",
                            "type": "active"
                        }
                    ]
                }
            ],
            "exclusion": [],
            "composite": false
        },
        {
            "component": "main",
            "capability": "switchLevel",
            "version": 1,
            "values": [
                {
                    "key": "level.value",
                    "range": [
                        5,
                        100
                    ],
                    "step": 5
                }
            ],
            "group": "SleepNumber"
        },
        {
            "component": "footwarming",
            "capability": "airConditionerFanMode",
            "version": 1,
            "visibleCondition": {
                "capability": "presenceSensor",
                "version": 1,
                "component": "footwarming",
                "value": "presence.value",
                "operator": "EQUALS",
                "operand": "present"
            },
            "idx": 0,
            "group": "Footwarming",
            "values": [
                {
                    "key": "fanMode.value",
                    "enabledValues": [
                        "Off",
                        "Low - 30 min",
                        "Low - 1 hr",
                        "Low - 2 hrs",
                        "Low - 3 hrs",
                        "Low - 4 hrs",
                        "Low - 5 hrs",
                        "Low - 6 hrs",
                        "Medium - 30 min",
                        "Medium - 1 hr",
                        "Medium - 2 hrs",
                        "Medium - 3 hrs",
                        "Medium - 4 hrs",
                        "Medium - 5 hrs",
                        "Medium - 6 hrs",
                        "High - 30 min",
                        "High - 1 hr",
                        "High - 2 hrs",
                        "High - 3 hrs",
                        "High - 4 hrs",
                        "High - 5 hrs",
                        "High - 6 hrs"
                    ]
                }
            ],
            "composite": false
        }
    ],
    "automation": {
        "conditions": [
            {
                "component": "main",
                "capability": "switch",
                "version": 1,
                "group": "Set to Fave",
                "values": [
                    {
                        "key": "switch.value",
                        "enabledValues": [
                            "on",
                            "off"
                        ]
                    }
                ]
            },
            {
                "component": "main",
                "capability": "airConditionerMode",
                "version": 1,
                "idx": 0,
                "group": "FlexFit Base",
                "values": [
                    {
                        "key": "airConditionerMode.value",
                        "enabledValues": [
                            "Favorite",
                            "Read",
                            "Watch TV",
                            "Flat",
                            "Zero G",
                            "Snore"
                        ]
                    }
                ],
                "patch": [
                    {
                        "op": "add",
                        "path": "/0/list/alternatives",
                        "value": [
                            {
                                "key": "favorite",
                                "value": "Favorite",
                                "type": "inactive"
                            },
                            {
                                "key": "read",
                                "value": "Read",
                                "type": "active"
                            },
                            {
                                "key": "watchtv",
                                "value": "Watch TV",
                                "type": "active"
                            },
                            {
                                "key": "flat",
                                "value": "Flat",
                                "type": "active"
                            },
                            {
                                "key": "zerog",
                                "value": "Zero G",
                                "type": "active"
                            },
                            {
                                "key": "snore",
                                "value": "Snore",
                                "type": "active"
                            }
                        ]
                    }
                ],
                "exclusion": [],
                "composite": false
            },
            {
                "component": "main",
                "capability": "switchLevel",
                "version": 1,
                "values": [
                    {
                        "key": "level.value",
                        "range": [
                            5,
                            100
                        ],
                        "step": 5
                    }
                ],
                "group": "SleepNumber"
            },
            {
                "component": "footwarming",
                "capability": "airConditionerFanMode",
                "version": 1,
                "visibleCondition": {
                    "capability": "presenceSensor",
                    "version": 1,
                    "component": "footwarming",
                    "value": "presence.value",
                    "operator": "EQUALS",
                    "operand": "present"
                },
                "idx": 0,
                "group": "Footwarming",
                "values": [
                    {
                        "key": "fanMode.value",
                        "enabledValues": [
                            "Off",
                            "Low - 30 min",
                            "Low - 1 hr",
                            "Low - 2 hrs",
                            "Low - 3 hrs",
                            "Low - 4 hrs",
                            "Low - 5 hrs",
                            "Low - 6 hrs",
                            "Medium - 30 min",
                            "Medium - 1 hr",
                            "Medium - 2 hrs",
                            "Medium - 3 hrs",
                            "Medium - 4 hrs",
                            "Medium - 5 hrs",
                            "Medium - 6 hrs",
                            "High - 30 min",
                            "High - 1 hr",
                            "High - 2 hrs",
                            "High - 3 hrs",
                            "High - 4 hrs",
                            "High - 5 hrs",
                            "High - 6 hrs"
                        ]
                    }
                ],
                "composite": false
            }
        ],
        "actions": [
            {
                "component": "main",
                "capability": "switch",
                "version": 1,
                "group": "Set to Fave",
                "values": [
                    {
                        "key": "switch.value",
                        "enabledValues": [
                            "on",
                            "off"
                        ]
                    }
                ]
            },
            {
                "component": "main",
                "capability": "airConditionerMode",
                "version": 1,
                "idx": 0,
                "group": "FlexFit Base",
                "values": [
                    {
                        "key": "airConditionerMode.value",
                        "enabledValues": [
                            "Favorite",
                            "Read",
                            "Watch TV",
                            "Flat",
                            "Zero G",
                            "Snore"
                        ]
                    }
                ],
                "patch": [
                    {
                        "op": "add",
                        "path": "/0/list/alternatives",
                        "value": [
                            {
                                "key": "favorite",
                                "value": "Favorite",
                                "type": "inactive"
                            },
                            {
                                "key": "read",
                                "value": "Read",
                                "type": "active"
                            },
                            {
                                "key": "watchtv",
                                "value": "Watch TV",
                                "type": "active"
                            },
                            {
                                "key": "flat",
                                "value": "Flat",
                                "type": "active"
                            },
                            {
                                "key": "zerog",
                                "value": "Zero G",
                                "type": "active"
                            },
                            {
                                "key": "snore",
                                "value": "Snore",
                                "type": "active"
                            }
                        ]
                    }
                ],
                "exclusion": [],
                "composite": false
            },
            {
                "component": "main",
                "capability": "switchLevel",
                "version": 1,
                "values": [
                    {
                        "key": "level.value",
                        "range": [
                            5,
                            100
                        ],
                        "step": 5
                    }
                ],
                "group": "SleepNumber"
            },
            {
                "component": "footwarming",
                "capability": "airConditionerFanMode",
                "version": 1,
                "visibleCondition": {
                    "capability": "presenceSensor",
                    "version": 1,
                    "component": "footwarming",
                    "value": "presence.value",
                    "operator": "EQUALS",
                    "operand": "present"
                },
                "idx": 0,
                "group": "Footwarming",
                "values": [
                    {
                        "key": "fanMode.value",
                        "enabledValues": [
                            "Off",
                            "Low - 30 min",
                            "Low - 1 hr",
                            "Low - 2 hrs",
                            "Low - 3 hrs",
                            "Low - 4 hrs",
                            "Low - 5 hrs",
                            "Low - 6 hrs",
                            "Medium - 30 min",
                            "Medium - 1 hr",
                            "Medium - 2 hrs",
                            "Medium - 3 hrs",
                            "Medium - 4 hrs",
                            "Medium - 5 hrs",
                            "Medium - 6 hrs",
                            "High - 30 min",
                            "High - 1 hr",
                            "High - 2 hrs",
                            "High - 3 hrs",
                            "High - 4 hrs",
                            "High - 5 hrs",
                            "High - 6 hrs"
                        ]
                    }
                ],
                "composite": false
            }
        ]
    },
    "migration": true,
    "isAutoUpdateRequired": true
}

But the toggle to enable mode in a routine for selection is still greyed out per this screenshot:

Can you tell what I am doing incorrectly, still?

Separately, one of the reasons it took so long for me to get back to you was due to getting my updated device profile to reflect in the SmartThings app correctly. I usually just upload the json directly in my test device’s UI Display section of https://developer.smartthings.com/workspace/deviceprofiles/, and the go through the process of β€œre-adding” the test devices in the SmartThings app (not even deleting the existing devices first) and it would show up, but this time it took several attempts, playing with the version number, unpublishing and republishing, etc. before the changes finally appeared. What are the β€œcorrect” steps to get device profile changes to get loaded into the SmartThings app?

I also tried using the smartthings deviceprofiles:update <device_uuid> --input=path_to_json_file.json command with the CLI, but get this error as a result:

AxiosError: Request failed with status code 422: {"requestId":"4697332053391689823","error":{"code":"ConstraintViolationError","message":"The request is 
    malformed.","details":[{"code":"NotEmptyError","target":"body","message":"body can not be empty","details":[]}]}}
    Code: ERR_BAD_REQUEST

Thank you for all of your help so far :pray:

I used the same configuration as you and the view is shown correctly, I don’t know if you’re assigning the metadata correctly or, it could be that you’re using the version property which isn’t effective in the Device-config nor the capability presentation, so, avoid using it.

We also noticed that when we upload the presentation in the Developer Workspace it’s not always refreshed, so, the fastest way to β€œupdate” it is by creating a new device profile > generate the presentation > and replace only the sections of β€œdashboard”, β€œdetail” and β€œautomation” view, the autogenerated properties like VID or version must be the same.

The endpoint of /presentation, allows you to use the deviceId as parameter next to the VID and mnmn to verify which presentation β€œversion” is currently in use.
For example:

https://api.smartthings.com/v1/presentation?manufacturerName=SmartThingsCommunity&presentationId=8bc1c760-1e21-3936-b68...&deviceId=42895a64-e044-488d-8112-…

So, TL/DR:
Try the following:

  1. Create a new device profile
  2. Allow the auto-generation of the device-config
  3. Download the file and edit only the dashboard, detail and automation view
  4. Upload the modified file to overwrite the default configuration
  5. Verify the Presentation has the new config:

GET request to the API:
https://api.smartthings.com/v1/presentation?manufacturerName=f2sv&presentationId=…
CLI command:
smartthings presentation ST_… f2sv -j