Can multipleZonePresence be used for custom capability?

Hello,
I’m trying to make a custom capability using multipleZonePresence.
Now it is now proposed state.

The state is now as below.
But the value is not displayed at the virtual app in the mobile.
{
“components”: {
“main”: {
“borderplatinum40018.multipleZonePresence”: {
“zoneState”: {
“value”: [
{
“name”: “z1”,
“id”: “1”,
“state”: “not present”
}
],
“timestamp”: “2025-03-28T00:54:48.129Z”
}
}
}
}
}

I didn’t use command, just change attribute.
other capabilities can be changed just by changing attribute.
If I use command createZone. would it be working?

You mean you are creating your own custom capability based on the multipleZonePresence capability? What changes do you want to make to it?

I haven’t played with multipleZonePresence but given it uses arrays of JSON objects as attribute values I rather suspect it may receive bespoke handling in the mobile app that is beyond that available to custom capabilities.

1 Like

I have a Lidar sensor similar to the FP2.
want to use that kind of capabilities.
But I just know some capabilities look different when it is used as custom.

Hi @jason1

We tested the standard capability multipleZonePresence and it displays correctly.

This is how its status appears in the API:

"multipleZonePresence": {
                "zoneState": {
                    "value": [
                        {
                            "name": "z1",
                            "id": "1",
                            "state": "not present"
                        },
                        {
                            "name": "z2",
                            "id": "2",
                            "state": "present"
                        }
                    ],
                    "timestamp": "2025-04-09T21:46:14.619Z"
                }
            }
1 Like

Right, in case of standard capability. It works well.

But in my application, The strings need to change.
To change the string. when I change it to custom.
It doesn’t work.

Could you please provide more details?
Maybe you can share an example of what you’re trying to do, since the current information isn’t very clear.

I’m very beginner.

At first, I thought all capability can be used as custom capability.
But many capabilities can not be used as custom capability.
I’d like to change just text with same functionality.
But after changing it as custom.
It doesn’t work.

I can not upload image.

Please make devices with 2 capabilities and compare.
borderplatinum40018.multipleZonePresence
multipleZonePresence

I sent a same events. but In case custom, It didn’t displayed well.
[
{
“name”: “Test1”,
“id”: “1”,
“state”: “not present”
},
{
“name”: “Test2”,
“id”: “2”,
“state”: “not present”
}
]

That’s expected since stock SmartThings capabilities frequently use specific user interfaces created by SmartThings for those specific capabilities.

Custom capabilities can’t use those user interfaces and are restricted to the capability presentations you can see here and their display types.

It’s exactly like your other issue with the buttons, when you create a custom capability the user interface is different.

Colour pickers for hue and saturation is another good example, the SmartThings capability will display a nice colour selector, if you try to replicate that with a custom capability you just can’t because there’s no “colour picker” display type.

1 Like

In case of multiZonePresence, it use just state as displayType.
“detailView”: [
{
“label”: “{{i18n.label}}”,
“displayType”: “state”,
“state”: {
“label”: “{{zoneState.value}}”,

But there are big difference between Product and Custom capabilities.

Exactly, SmartThings sometimes overrides the user interface in their own capabilities so it looks better.

The example of the colorControl capability to display the hue and saturation is even more evident since the hue and saturation in the presentation are "displayType": "numberField", yet SmartThings will completely ignore that presentation and go with their own user interface using a graphical colour selector. If you create a custom capability you’ll just see a numeric field with no fancy interface.

BTW this was also pointed out in a previous comment a month ago and he’s probably right.

1 Like

Hi @jason1

Could you please provide more details on exactly which text you want to change and what you expect to see instead?

If you could point it out with an image or screenshot, that would be very helpful for us.


Product capability works well
But when it change to custom. Not working
In my case, I just want to change terms.
Anyway, I knew now.
All most fancy product capability can not be used as custom usage.

Right. Looks better OK. But ignore the presentation in the capability, So I was very confused at first.