[ST Edge] Custom capabilities labels are ignored

Thank you for sharing this, the team just asked me to check again. I’ll confirm to them this is solved.

About the “untitled” issue happening again. Is there someone that still has this issue after clearing the cache or restarting the app?
I’ll check what could’ve happened with the team but it’s important to know if this was solved automatically or not…
CC @Mariano_Colmenarejo, @philh30, @johnconstantelo, @TAustin

Whatever was done Friday night appears to have been reversed Sunday night. Anything that has translations is back to showing properly (though with duplicate labels). Any capability created somewhat recently without translations is back to showing the capability and attribute names instead of the labels defined in presentations. My older capabilities without translations are still showing as Unknown.

Hi @nayelyz

The untitled tags are the same as before the last incident.

in some the capability name and the name attribute are shown and in others it is shown without a title.

And the units in custom capabilities are not shown in the details view and are shown in the tile and in history

2 Likes

Hi @nayelyz , any custom capabilities recently created with translations is now back as @philh30 mentioned, but the units are still missing from the detailed view:

1 Like

Same for me as others have reported. The ‘Untitled’ label which was on EVERYthing, has now reverted back to the prior state of showing the raw capability/attribute names.

ok, thank you for your confirmation. The team mentioned it was due to an issue in the backend that affected the labels shown but it was fixed, so, your work with translations isn’t lost.
About units in the detail view, there’s a workaround I found that is concatenating this value in the state label:

"detailView": [
    {
        "label": "{{i18n.label}}",
        "displayType": "state",
        "state": {
            "label": "{{waterFlowRate.value}} {{waterFlowRate.unit}}"
        }
    }
]

However, I also reported it.

1 Like

Ok, good to know. Can we assume your workaround isn’t a permanent fix, and the example code below is the correct way to do it?

"detailView": [
    {
        "label": "{{i18n.label}}",
        "displayType": "state",
        "state": {
            "label": "{{highestused.value}}",
            "unit": "highestused.unit"
        }
    }
2 Likes

So far, yes, it would be temporary, it’s just something I noticed and also because it used to be the way of showing units when custom capabilities were released.

1 Like

Android update to 1.7.91.24 has removed the double labels on single-attribute custom capabilities - only the capability label shows, no attribute label. Both continue to show on multi-attribute capabilities.

Multi-attribute meaning more than one attribute, regardless of the presentation. Below are both custom capabilities. The bottom one has a supported modes attribute, and continues to show two labels even though there’s only one attribute displayed.

2 Likes

I did not modify any capability presentation and with this new Android version

In capabilities that appeared without a title in previous versión:

  • they now appear correctly with the label defined in their presentation.

In which the name of the capability and the attribute were shown in previous versión:

  • now it only shows the name of the capability, but not appears the Label.

What I don’t understand is why both before and now, capabilities that have the same presentation are still displayed in different ways in app :astonished:

1 Like

So it looks like with the new update I just received to my iOS app, that many - but not all - of the labels have been restored. I don’t really understand why some are back working, but others not.

@TAustin
I would guess the fix applies only to capabilities with single attribute.
Multy attribute capabilities are not affected, even if only single attribute is used in presentation (for this matter, even supported values attribute breaks the fix)

Not sure about that: I have a number of capabilities with only one attribute that still haven’t reverted back to the correct label, while others have.

What are you seeing @Mariano_Colmenarejo ?

Hi @TAustin

I explained it three posts above.

All my custom capabilities have a single attribute.

What happens to me happens to you, some capabilities show the label of the presentation. (those that in previous app were shown without title )

The ones that in previous app displayed the name and attribute of the capability now show only the name of the capability.

what I don’t understand, neither before nor now, is that capabilities that have identical presentations are displayed differently.

I thought the difference could be that the ones that now show up well, their profiles use a custom vid, but it doesn’t fit 100% and I’m too shy to keep doing tests and tests. :cold_sweat:

@TAustin

My guess is that this is due to another issue, that changes to capability presentations are not always propagated (or propagated very slow).
I changed a name of existing capability and then updated the device profile with the new name, then repaired the device and could see the change immideately. This is for several capabilities

I’ll keep an eye on these devices over the next day or so and see if they straighten out. Otherwise, you’re probably right that some sort of forced driver and or capability update may be required.

Ah sorry, I didn’t realize you already had the equivalent app update regarding your prior posts.

So both Android and iOS still have inconsistent labels. I don’t know what it is with these guys: are they really this incompetent or is it that they just don’t care?? :thinking:

Hi, guys

The team answered. They said that the rule for this kind of behavior is the following:

  1. If the capability name is defined, it will be shown as the capability title.
  2. If the capability name is not defined and there is a label, the label will be shown as the capability title

This change was made because they discovered that many custom capabilities didn’t have names defined.

I hope this information is helpful. If there is any other question regarding this, please let me know.

2 Likes

Hi @andresg thanks for the info

Well, I think they have chosen the wrong solution.

If some custom capabilities do not have a defined name, the defined label will be displayed. This is not logical

It would not be more correct: If there is a defined Label, it shows the name of the label.

In the names of the capabilities you can add abbreviations or numbers to differentiate them from other similar ones, since you cannot use versions of the capabilities.

On the other hand I do not agree that it is working as they say.
I have all the custom capabilities with defined names and some show the name of the capability and others show the name of the label.
It seems that there must be something else that they do not tell us or do not know why.

Example
legendabsolute60149.randomOnOff1: (in APP shown the label)
legendabsolute60149.randomOnOff2: (in APP shown the Capability Name)

id: legendabsolute60149.randomOnOff1
version: 1
status: proposed
name: Random On Off 1
ephemeral: false
attributes:
  randomOnOff:
    schema:
      type: object
      properties:
        value:
          type: string
          maxLength: 8
      additionalProperties: false
      required:
        - value
    setter: setRandomOnOff
    enumCommands: []
commands:
  setRandomOnOff:
    name: setRandomOnOff
    arguments:
      - name: value
        optional: false
        schema:
          type: string
          maxLength: 8
  • Capability presentation
{
    "dashboard": {
        "states": [
            {
                "label": "{{randomOnOff.value}}"
            }
        ],
        "actions": []
    },
    "detailView": [
        {
            "label": "Random On Off",
            "displayType": "switch",
            "switch": {
                "command": {
                    "name": "setRandomOnOff",
                    "on": "Active",
                    "off": "Inactive",
                    "argumentType": "string"
                },
                "state": {
                    "value": "randomOnOff.value",
                    "valueType": "string",
                    "on": "Active",
                    "off": "Inactive",
                    "label": "{{randomOnOff.value}}",
                    "alternatives": [
                        {
                            "key": "Active",
                            "value": "Active",
                            "type": "active"
                        },
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "inactive"
                        }
                    ]
                }
            }
        }
    ],
    "automation": {
        "conditions": [
            {
                "label": "Random On Off",
                "displayType": "list",
                "list": {
                    "alternatives": [
                        {
                            "key": "Active",
                            "value": "Active",
                            "type": "active"
                        },
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "inactive"
                        }
                    ],
                    "value": "randomOnOff.value",
                    "valueType": "string"
                }
            }
        ],
        "actions": [
            {
                "label": "Random On Off",
                "displayType": "list",
                "list": {
                    "alternatives": [
                        {
                            "key": "Active",
                            "value": "Active",
                            "type": "active"
                        },
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "inactive"
                        }
                    ],
                    "command": "setRandomOnOff",
                    "argumentType": "string"
                }
            }
        ]
    },
    "id": "legendabsolute60149.randomOnOff1",
    "version": 1
}
id: legendabsolute60149.randomOnOff2
version: 1
status: proposed
name: Random On Off 2
ephemeral: false
attributes:
  randomOnOff:
    schema:
      type: object
      properties:
        value:
          type: string
      additionalProperties: false
      required:
        - value
    enumCommands: []
commands:
  setRandomOnOff:
    name: setRandomOnOff
    arguments:
      - name: value
        optional: false
        schema:
          type: string
  • Capability presentation
{                                               
    "dashboard": {
        "states": [
            {
                "label": "{{randomOnOff.value}}"
            }
        ],
        "actions": []
    },
    "detailView": [
        {
            "label": "Timer Mode",
            "displayType": "list",
            "list": {
                "command": {
                    "name": "setRandomOnOff",
                    "alternatives": [
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "active"
                        },
                        {
                            "key": "Random",
                            "value": "Random",
                            "type": "active"
                        },
                        {
                            "key": "Program",
                            "value": "Program",
                            "type": "active"
                        }
                    ],
                    "argumentType": "string"
                },
                "state": {
                    "value": "randomOnOff.value",
                    "valueType": "string",
                    "alternatives": [
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "active"
                        },
                        {
                            "key": "Random",
                            "value": "Random",
                            "type": "active"
                        },
                        {
                            "key": "Program",
                            "value": "Program",
                            "type": "active"
                        }
                    ]
                }
            }
        }
    ],
    "automation": {
        "conditions": [
            {
                "label": "Timer Mode",
                "displayType": "list",
                "list": {
                    "alternatives": [
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "active"
                        },
                        {
                            "key": "Random",
                            "value": "Random",
                            "type": "active"
                        },
                        {
                            "key": "Program",
                            "value": "Program",
                            "type": "active"
                        }
                    ],
                    "value": "randomOnOff.value",
                    "valueType": "string"
                }
            }
        ],
        "actions": [
            {
                "label": "Timer Mode",
                "displayType": "list",
                "list": {
                    "alternatives": [
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "active"
                        },
                        {
                            "key": "Random",
                            "value": "Random",
                            "type": "active"
                        },
                        {
                            "key": "Program",
                            "value": "Program",
                            "type": "active"
                        }
                    ],
                    "command": "setRandomOnOff",
                    "argumentType": "string"
                }
            }
        ]
    },
    "id": "legendabsolute60149.randomOnOff2",
    "version": 1
}
  • App screenshot: Capability Name Random On Off 2 Appears and It should show Label: Timer Mode

1 Like

What I have never understood is why on earth they started using the capability names in the first place. Surely the whole point of there being a label name was to use it as the label? If I wanted to see the capability name in the label I would have put it in the label.

I seem to vaguely remember it was all to do with multi-attribute custom capabilities. All I ever wanted to be able to do with those is use more than one of the attributes in the presentation in the same way I would do multiple single attribute capabilities. There is no more reason to group attributes from the same capability together than there is to arbitrarily group separate single attribute capabilities together (so please stop displaying temperature and humidity together without asking, they could be from sensors in two different continents).

3 Likes