# Unable to see custom capabilities in UI for "Direct-Connected" device

**URL:** <https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061>\
**Category:** Support\
**Created:** [October 15, 2021, 1:17am UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061 "2021-10-15T01:17:12Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![ChristopherH](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/christopherh/32/134480_2.png) [@ChristopherH](https://community.smartthings.com/u/ChristopherH)\
**Post date:** [October 15, 2021, 1:17am UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/1 "2021-10-15T01:17:12Z")

</div>

I’m testing a direct-connected device with a custom capability, which is working from the device standpoint (I’m able to return a handle for the device components and update the custom attributes, etc.) But despite my best efforts, the device components associated with the custom capability won’t show up in the UI.

Most of the references I can find on similar issues are specific to DTH based devices, I’m not sure I’ve found any references to this scenario specifically, all the examples use platform provided capabilities. As best I can tell everything is there, but the device only shows attributes associated with the built-in types.

I’ll include some of the configs here, and just out of sheer bewilderment, I’ve tried both ios and android clients. Any suggestions would be much appreciated..

###### CAPABILITY

```json
{
    "id": "nightpeace33800.force",
    "version": 1,
    "status": "proposed",
    "name": "Force",
    "attributes": {
        "fullForce": {
            "schema": {
                "type": "object",
                "properties": {
                    "value": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 5000
                    },
                    "unit": {
                        "type": "string",
                        "enum": [
                            "grams"
                        ],
                        "default": "grams"
                    }
                },
                "additionalProperties": false,
                "required": [
                    "value"
                ]
            },
            "setter": "setFullForce",
            "enumCommands": []
        },
        "force": {
            "schema": {
                "type": "object",
                "properties": {
                    "value": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 5000
                    },
                    "unit": {
                        "type": "string",
                        "enum": [
                            "grams"
                        ],
                        "default": "grams"
                    }
                },
                "additionalProperties": false,
                "required": [
                    "value"
                ]
            },
            "enumCommands": []
        }
    },
    "commands": {
        "setFullForce": {
            "name": "setFullForce",
            "arguments": [
                {
                    "name": "grams",
                    "optional": false,
                    "schema": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 5000
                    }
                }
            ]
        }
    }
}

```

###### CAPABILITY\_PRESENTATION

```json
{
    "dashboard": {
        "states": [
            {
                "label": "{{force.value}} {{force.unit}}",
                "alternatives": null
            }
        ],
        "actions": [],
        "basicPlus": []
    },
    "detailView": [
        {
            "label": "Force",
            "displayType": "slider",
            "slider": {
                "range": [
                    0,
                    5000
                ],
                "step": null,
                "unit": "force.unit",
                "value": "force.value",
                "valueType": "integer"
            },
            "state": null
        },
        {
            "label": "Set As Full",
            "displayType": "pushButton",
            "pushButton": {
                "command": "setFullForce",
                "argument": "{{force.value}}",
                "argumentType": "integer"
            },
            "state": null
        }
    ],
    "automation": {
        "conditions": [
            {
                "label": "Force",
                "displayType": "slider",
                "slider": {
                    "range": [
                        0,
                        5000
                    ],
                    "step": 1,
                    "unit": "force.unit",
                    "value": "force.value",
                    "valueType": "integer"
                }
            }
        ],
        "actions": []
    },
    "id": "nightpeace33800.force",
    "version": 1
}

```

###### DEVICE\_PROFILE

```json
{
    "id": "20d5e3ff-9985-46a4-b78c-bb21b2c535c3",
    "name": "Containers",
    "components": [
        {
            "label": "main",
            "id": "main",
            "capabilities": [
                {
                    "id": "healthCheck",
                    "version": 1
                }
            ],
            "categories": []
        },
        {
            "label": "Container1",
            "id": "Container1",
            "capabilities": [
                {
                    "id": "presenceSensor",
                    "version": 1
                },
                {
                    "id": "battery",
                    "version": 1
                },
                {
                    "id": "nightpeace33800.force",
                    "version": 1
                }
            ],
            "categories": []
        },
        {
            "label": "Container2",
            "id": "Container2",
            "capabilities": [
                {
                    "id": "presenceSensor",
                    "version": 1
                },
                {
                    "id": "battery",
                    "version": 1
                },
                {
                    "id": "nightpeace33800.force",
                    "version": 1
                }
            ],
            "categories": []
        },
        {
            "label": "Container3",
            "id": "Container3",
            "capabilities": [
                {
                    "id": "presenceSensor",
                    "version": 1
                },
                {
                    "id": "battery",
                    "version": 1
                },
                {
                    "id": "nightpeace33800.force",
                    "version": 1
                }
            ],
            "categories": []
        },
        {
            "label": "Container4",
            "id": "Container4",
            "capabilities": [
                {
                    "id": "presenceSensor",
                    "version": 1
                },
                {
                    "id": "battery",
                    "version": 1
                },
                {
                    "id": "nightpeace33800.force",
                    "version": 1
                }
            ],
            "categories": []
        }
    ],
    "metadata": {
        "vid": "98a50b8a-9907-323f-bc4b-9a199b444f76",
        "deviceType": "Others",
        "mnmn": "0ATj",
        "ocfDeviceType": "oic.d.others",
        "deviceTypeId": "Others",
        "ocfSpecVer": "core 1.1.0",
        "mnid": "0ATj",
        "mnId": "0ATj"
    },
    "status": "DEVELOPMENT",
    "preferences": []
}

```

###### DEVICE\_CONFIG

```json
{
    "mnmn": "0ATj",
    "vid": "98a50b8a-9907-323f-bc4b-9a199b444f76",
    "version": "0.0.1",
    "type": "profile",
    "dashboard": {
        "states": [
            {
                "component": "main",
                "capability": "healthCheck",
                "version": 1,
                "idx": 0,
                "group": "main",
                "values": [],
                "composite": false
            }
        ],
        "actions": [
            {
                "component": "main",
                "capability": "healthCheck",
                "version": 1,
                "idx": 0,
                "group": "main"
            }
        ]
    },
    "detailView": [
        {
            "component": "main",
            "capability": "healthCheck",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container1",
            "capability": "presenceSensor",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container1",
            "capability": "battery",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container1",
            "capability": "nightpeace33800.force",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container2",
            "capability": "presenceSensor",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container2",
            "capability": "battery",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container2",
            "capability": "nightpeace33800.force",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container3",
            "capability": "presenceSensor",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container3",
            "capability": "battery",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container3",
            "capability": "nightpeace33800.force",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container4",
            "capability": "presenceSensor",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container4",
            "capability": "battery",
            "version": 1,
            "values": [],
            "patch": []
        },
        {
            "component": "Container4",
            "capability": "nightpeace33800.force",
            "version": 1,
            "values": [],
            "patch": []
        }
    ],
    "automation": {
        "conditions": [
            {
                "component": "main",
                "capability": "healthCheck",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container1",
                "capability": "presenceSensor",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container1",
                "capability": "battery",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container1",
                "capability": "nightpeace33800.force",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container2",
                "capability": "presenceSensor",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container2",
                "capability": "battery",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container2",
                "capability": "nightpeace33800.force",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container3",
                "capability": "presenceSensor",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container3",
                "capability": "battery",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container3",
                "capability": "nightpeace33800.force",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container4",
                "capability": "presenceSensor",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container4",
                "capability": "battery",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container4",
                "capability": "nightpeace33800.force",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            }
        ],
        "actions": [
            {
                "component": "main",
                "capability": "healthCheck",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container1",
                "capability": "nightpeace33800.force",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container2",
                "capability": "nightpeace33800.force",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container3",
                "capability": "nightpeace33800.force",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            },
            {
                "component": "Container4",
                "capability": "nightpeace33800.force",
                "version": 1,
                "values": [],
                "patch": [],
                "exclusion": []
            }
        ]
    },
    "presentationId": "98a50b8a-9907-323f-bc4b-9a199b444f76",
    "manufacturerName": "0ATj"
}

```

---

<div class="post-metadata">

**Author:** ![erickv](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/erickv/32/230792_2.png) [@erickv](https://community.smartthings.com/u/erickv)\
**Post date:** [October 15, 2021, 11:54am UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/2 "2021-10-15T11:54:21Z")

</div>

Hey, @ChristopherH

Is the `onboarding_config.json` pointing to the same custom **vid / presentationId**? _e.g_:

```auto
{
  "onboardingConfig": {
    "deviceOnboardingId": "...",
    "mnId": "...",
    "setupId": "...",
    "vid": "...", <<<< same from deviceprofile.metadata
    "deviceTypeId": "Switch",
    "ownershipValidationTypes": [
      "JUSTWORKS"
    ],
    "identityType": "...",
    "deviceIntegrationProfileKey": {
      "id": "xxxxx", <<<< same key generated by DevWS
      "majorVersion": 0,
      "minorVersion": 1
    },
    "productId": "xxxxx"
  }
}

```

---

<div class="post-metadata">

**Author:** ![ChristopherH](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/christopherh/32/134480_2.png) [@ChristopherH](https://community.smartthings.com/u/ChristopherH)\
**Post date:** [October 15, 2021, 12:15pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/3 "2021-10-15T12:15:11Z")

</div>

Hi @erickv – yeah, the config loaded on the device appears to be correct. Here’s what it looks like for a second set of eyes, but I believe it’s correct. The vid definitely matches the above definitions, and the `deviceIntegrationProfileKey` id is what’s listed in the workspace view.

```json
{
  "onboardingConfig": {
    "deviceOnboardingId": "Inventory",
    "mnId": "0ATj",
    "setupId": "002",
    "vid": "98a50b8a-9907-323f-bc4b-9a199b444f76",
    "deviceTypeId": "Others",
    "ownershipValidationTypes": [
      "JUSTWORKS"
    ],
    "identityType": "ED25519",
    "deviceIntegrationProfileKey": {
      "id": "67cd302f-5c90-42dd-b6d3-217700272049",
      "majorVersion": 0,
      "minorVersion": 1
    },
    "productId": "455b6c3c-c9d9-4eec-b6cb-933358aec119"
  }
}

```

---

<div class="post-metadata">

**Author:** ![erickv](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/erickv/32/230792_2.png) [@erickv](https://community.smartthings.com/u/erickv)\
**Post date:** [October 15, 2021, 12:26pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/4 "2021-10-15T12:26:52Z")

</div>

Fair enough! The issue might be related to the capability then, but let me check it in detail.

In the meantime, consider the following:

1. At the moment, the custom capabilities **can only handle a single attribute**.
2. From the presentation:
  - `dashboard`: instead of setting alternatives as `null`, set it as an empty array.
  - `detailView`: same as attributes, presentations **can handle only one display type**.

With this in mind, I recommend you split attributes into individual capabilities.

* * *

### Update

Initially, I can confirm that if the `dashboard.alternatives` changes to an empty array, the value will display properly _(ignore the lock icon… that was just for fun)_:

 ![custom-force](https://global.discourse-cdn.com/smartthings/original/3X/8/7/878ee7525cb7569bd948aa3c097f35f79cd130d6.jpeg)

Then, by tinkering up the slider display type as follows:

```JSON
    ...
    "detailView": [
        {
            "label": "Force",
            "displayType": "slider",
            "slider": {
                "range": [
                    0,
                    5000
                ],
                "unit": "force.unit",
                "value": "force.value",
                "command": "setFullForce"
            },
            "state": {
                "label": "{{force.value}} {{force.unit}}",
                "unit": "force.unit",
                "alternatives": []
            }
        },
        <<< This second item will be ignored
        <<< but I left it there to minimize updates
        {       
            "label": "Set As Full",
            "displayType": "pushButton",
            "pushButton": {
                "command": "setFullForce",
                "argument": "{{force.value}}",
                "argumentType": "integer"
            }
        }
    ],

```

I was able to display it at the `detailView`… but the command wasn’t working because there wasn’t a setter association, so, with just a small **update on your capability schema** you get the command to work as well, _i.e._:

```json
           ...
            "enumCommands": [],
           "setter": "setFullForce" <<< setter association
        }
    },
    "commands": {
        "setFullForce": {
            "name": "setFullForce",
             ...

```

 ![Screenshot_20211015-091407_SmartThings (1)](https://global.discourse-cdn.com/smartthings/original/3X/4/7/476b5b83daee49df408d28e39fed723e78ba994e.jpeg)

---

<div class="post-metadata">

**Author:** ![ChristopherH](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/christopherh/32/134480_2.png) [@ChristopherH](https://community.smartthings.com/u/ChristopherH)\
**Post date:** [October 15, 2021, 2:09pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/5 "2021-10-15T14:09:45Z")

</div>

ok thank you, that’s great… however I’m having a bit of trouble getting there, when I POST the updated JSON, the resulting object persists `null`. In fact, I’m fairly certain my original JSON used an empty list rather than `null`, but I experienced this same behavior then. Do you happen to have any ideas about that?

I’ve tried starting from scratch several times to no avail, but since I have a few hints on what to watch for now, I may try that again and see what I observe. I’m just not clear why that keeps reverting to `null`…?

thanks again for your help!

---

<div class="post-metadata">

**Author:** ![erickv](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/erickv/32/230792_2.png) [@erickv](https://community.smartthings.com/u/erickv)\
**Post date:** [October 15, 2021, 2:26pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/6 "2021-10-15T14:26:34Z")

</div>

> [@ChristopherH](#):
>
> however I’m having a bit of trouble getting there, when I POST the updated JSON, the resulting object persists `null` . In fact, I’m fairly certain my original JSON used an empty list rather than `null` , but I experienced this same behavior then. Do you happen to have any ideas about that?

Wow, it’s true!

I hadn’t noticed that empty arrays/objects were parsed to null. Well then, we can ignore that point. I assume that I got the value at the dashboard because my `main` component was supporting the capability.

I posted a new update regarding the `detailView` that I recommend you to follow and once you finish the capability updates, clear your app’s cache which will force the plugin to download the metadata again.

---

<div class="post-metadata">

**Author:** ![ChristopherH](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/christopherh/32/134480_2.png) [@ChristopherH](https://community.smartthings.com/u/ChristopherH)\
**Post date:** [October 15, 2021, 5:05pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/7 "2021-10-15T17:05:46Z")

</div>

thanks @erickv – I’ve confirmed that every place that I’m aware of is now up-to-date with the suggested modifications, and I cleared the app cache and recreated the device. I get the same view, only the battery and presence capabilities in the detail view. Note: if I go to the automations for the device, I do get a slider for the custom capability attribute – so it seems it’s definitely just an issue with the view rendering.

---

<div class="post-metadata">

**Author:** ![erickv](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/erickv/32/230792_2.png) [@erickv](https://community.smartthings.com/u/erickv)\
**Post date:** [October 15, 2021, 5:17pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/8 "2021-10-15T17:17:05Z")

</div>

Thanks for the heads-up, @ChristopherH!

I’ll check it out closely and will share with you the outcome.

---

<div class="post-metadata">

**Author:** ![erickv](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/erickv/32/230792_2.png) [@erickv](https://community.smartthings.com/u/erickv)\
**Post date:** [October 15, 2021, 6:29pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/9 "2021-10-15T18:29:05Z")

</div>

@ChristopherH Very well, it seems that the `pushButton` display type reference must be removed to render the capability at the `detailView` properly. For a moment, when I specified more components to my test case device, it was rendering _“Connected”_ instead of the sliders that I showed before.

What I just did was to remove the additional display type and clear the app’s cache… that made the trick:

 ![Screenshot_20211015-132626_SmartThings](https://global.discourse-cdn.com/smartthings/original/3X/e/0/e0f5759df1c0f0682c67495d3ec60b81c1525a90.jpeg)

And, for a more complex reference, here’s a test case device that supports battery and another component.

[https://global.discourse-cdn.com/smartthings/original/3X/4/e/4efc2ec24c418967885e0aa0eea5d8488ace7b3f.mp4](https://global.discourse-cdn.com/smartthings/original/3X/4/e/4efc2ec24c418967885e0aa0eea5d8488ace7b3f.mp4)
  
If you’re still having problems setting up the presentation, let me know = )

---

<div class="post-metadata">

**Author:** ![ChristopherH](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/christopherh/32/134480_2.png) [@ChristopherH](https://community.smartthings.com/u/ChristopherH)\
**Post date:** [October 15, 2021, 7:06pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/10 "2021-10-15T19:06:47Z")

</div>

I’ve made sure that all of the `pushButton` references are gone, so there are no actions, the only display object configured is the `slider` now. But still, it doesn’t seem to be updating for me… here’s what it looks like, so you don’t think I’m lying 🙂

 ![Screenshot_20211015-115656x](https://global.discourse-cdn.com/smartthings/original/3X/2/9/297741f221a4cb706a7d08e06218161b08fc14cc.png)

---

<div class="post-metadata">

**Author:** ![erickv](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/erickv/32/230792_2.png) [@erickv](https://community.smartthings.com/u/erickv)\
**Post date:** [October 15, 2021, 7:39pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/11 "2021-10-15T19:39:49Z")

</div>

On every update, is your device forced to download the metadata? _i.e._:

 ![Screenshot_20211015-143845_SmartThings](https://global.discourse-cdn.com/smartthings/original/3X/a/c/ac5b5a9b88a49531c0f70961fdc44078b455c5b4.jpeg)

---

<div class="post-metadata">

**Author:** ![ChristopherH](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/christopherh/32/134480_2.png) [@ChristopherH](https://community.smartthings.com/u/ChristopherH)\
**Post date:** [October 15, 2021, 7:46pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/12 "2021-10-15T19:46:55Z")

</div>

Nope, I’ve never seen that message before… I’m clearing the cache via the android interface. Is there something I’m missing?

---

<div class="post-metadata">

**Author:** ![erickv](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/erickv/32/230792_2.png) [@erickv](https://community.smartthings.com/u/erickv)\
**Post date:** [October 15, 2021, 7:58pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/13 "2021-10-15T19:58:35Z")

</div>

Try clearing the cache at: _Menu_ \> _Settings_ \> _Developer Mode (at the bottom)_ \> **RESTART APP**.

---

<div class="post-metadata">

**Author:** ![ChristopherH](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/christopherh/32/134480_2.png) [@ChristopherH](https://community.smartthings.com/u/ChristopherH)\
**Post date:** [October 15, 2021, 8:21pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/14 "2021-10-15T20:21:41Z")

</div>

I’m guessing that on ios? I looked around earlier for an in-app cache control but couldn’t find one. the only option under `Developer Options` is `Hide Developer Options` so I’m using the option via the android app management.

 ![Screenshot_20211015-131227x](https://global.discourse-cdn.com/smartthings/original/3X/b/9/b99b8e943cf32cc1b3dfb48231c0333c5e9d6d50.png)

## 

 ![Screenshot_20211015-131312x](https://global.discourse-cdn.com/smartthings/original/3X/c/3/c31fe7dc11711fff3bce4b8ef8ac1e5d69208d8d.png)

---

<div class="post-metadata">

**Author:** ![erickv](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/erickv/32/230792_2.png) [@erickv](https://community.smartthings.com/u/erickv)\
**Post date:** [October 15, 2021, 8:39pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/15 "2021-10-15T20:39:00Z")

</div>

Nope, unfortunately, iOS doesn’t provide this feature, however, did you tap the _“Developer mode”_ tab… sentence?.. yeah, it’s not a very obvious window, though.

---

<div class="post-metadata">

**Author:** ![ChristopherH](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/christopherh/32/134480_2.png) [@ChristopherH](https://community.smartthings.com/u/ChristopherH)\
**Post date:** [October 15, 2021, 9:35pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/16 "2021-10-15T21:35:27Z")

</div>

Oh I see, yeah that’s not obvious – but I see now. Unfortunately the device behavior is the same after the restart ☹

---

<div class="post-metadata">

**Author:** ![ChristopherH](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/christopherh/32/134480_2.png) [@ChristopherH](https://community.smartthings.com/u/ChristopherH)\
**Post date:** [October 15, 2021, 9:44pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/17 "2021-10-15T21:44:12Z")

</div>

OH! I’m pretty confused, but it appears now that re-creating the device, after going through that restart process, appears to get me the widgets! Ok, this is a good start! Let me see if I can get from here to where I want to be, but thank you so much for your help! There’s definitely still some `black magic` in the system, so thank you for helping me untangle it!

---

<div class="post-metadata">

**Author:** ![erickv](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/erickv/32/230792_2.png) [@erickv](https://community.smartthings.com/u/erickv)\
**Post date:** [October 18, 2021, 2:32pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/18 "2021-10-18T14:32:28Z")

</div>

@ChristopherH No problem!

Ping me back if face any other issue = )

---

<div class="post-metadata">

**Author:** ![senspix](https://yyz2.discourse-cdn.com/smartthings/user_avatar/community.smartthings.com/senspix/32/141944_2.png) [@senspix](https://community.smartthings.com/u/senspix)\
**Post date:** [March 31, 2022, 3:25pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/19 "2022-03-31T15:25:27Z")

</div>

Is this

- 
  1. At the moment, the custom capabilities **can only handle a single attribute**.\*

still true. I made a custom cap with multiple attributes (multiple setting values for a device).  
I then made the presentation json and uploaded them both etc.

But the capability is not visible!

Cheers

---

<div class="post-metadata">

**Author:** ![nayelyz](https://avatars.discourse-cdn.com/v4/letter/n/59ef9b/32.png) [@nayelyz](https://community.smartthings.com/u/nayelyz)\
**Post date:** [March 31, 2022, 6:44pm UTC](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061/20 "2022-03-31T18:44:13Z")

</div>

Hi!  
Yes, it is still true, you can add multiple attributes in the capability definition and use all in the background but you can display _only one_ in the app.  
To verify why the capability is missing, you should:

1. Update your capability presentation to show only one attribute (changing the definition is optional)
2. Depending on your integration type, you should update the device presentation or make sure it was refreshed:  
a. This can be done by getting the current `presentationId` used by the device (from the [list](https://developer-preview.smartthings.com/docs/api/public/#operation/getDevices)) and query its [configuration](https://developer-preview.smartthings.com/docs/api/public/#operation/getDevicePresentation)

[Next page](https://community.smartthings.com/t/unable-to-see-custom-capabilities-in-ui-for-direct-connected-device/233061.md?page=2)
