Custom capability in routines and scenes part THEN "Actions" the command displays Unknown

Custom capability in routines and scenes part THEN" Actions" the command displays Unknown Action when the routine or scene is saved

A user reported this problem to me for the capability “legendabsolute60149.circadian”

I’ve been reviewing the capability and its presentation and I don’t see anything different from other similar capabilities.

CAPABILITY:

{
    "id": "legendabsolute60149.circadian",
    "version": 1,
    "name": "Circadian",
    "ephemeral": false,
    "attributes": {
        "circadian": {
            "schema": {
                "type": "object",
                "properties": {
                    "value": {
                        "type": "string",
                        "maxLength": 25
                    }
                },
                "additionalProperties": false,
                "required": [
                    "value"
                ]
            },
            "setter": "setCircadian",
            "enumCommands": []
        }
    },
    "commands": {
        "setCircadian": {
            "name": "setCircadian",
            "arguments": [
                {
                    "name": "value",
                    "optional": false,
                    "schema": {
                        "type": "string",
                        "maxLength": 25
                    }
                }
            ]
        }
    }
}

CAPABILITY PRESENTATION:

{
    "dashboard": {
        "states": [
            {
                "label": "{{circadian.value}}"
            }
        ],
        "actions": []
    },
    "detailView": [
        {
            "label": "Circadian Lighting",    
            "displayType": "switch",
            "switch": {
                "command": {
                    "name": "setCircadian",   
                    "on": "Active",
                    "off": "Inactive",
                    "argumentType": "string"
                },
                "state": {
                    "value": "circadian.value",
                    "valueType": "string",
                    "on": "Active",
                    "off": "Inactive",
                    "label": "{{circadian.value}}",
                    "alternatives": [
                        {
                            "key": "Active",
                            "value": "Active",
                            "type": "active"
                        },
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "inactive"
                        }
                    ]
                }
            }
        }
    ],
    "automation": {
        "conditions": [
            {
                "label": "Circadian Lighting",
                "displayType": "list",
                "list": {
                    "alternatives": [
                        {
                            "key": "Active",
                            "value": "Active",
                            "type": "active"
                        },
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "inactive"
                        }
                    ],
                    "value": "circadian.value",
                    "valueType": "string",
                    "multiSelectable": false
                }
            }
        ],
        "actions": [
            {
                "label": "Circadian Lighting",
                "displayType": "list",
                "list": {
                    "alternatives": [
                        {
                            "key": "Active",
                            "value": "Active",
                            "type": "active"
                        },
                        {
                            "key": "Inactive",
                            "value": "Inactive",
                            "type": "inactive"
                        }
                    ],
                    "command": "setCircadian",
                    "argumentType": "string"
                }
            }
        ]
    },
    "id": "legendabsolute60149.circadian",
    "version": 1
}

I have updated the presentation of the capability and its translation and it remains the same
I have already cleared the cache of the app, rebooted the hub, created a VID to force the update of the presentation capability and waited 24 hours since the modification of the presentation and everything remains the same

  • I have created a new capability from scratch “legendabsolute60149.circadian1” and its presentation

  • I have added it to a new version of the driver and the exact same thing continues to happen.

  • I have already cleared the cache of the app, rebooted the hub, waited 24 hours from the modification of the presentation and everything remains the same

I don’t know since when this happens

Any suggestions?
Thank you

I’ve seen sometimes the update takes longer than this, specially in custom capabilities but it is strange that it happened for a brand new driver.

I created a new device using “legendabsolute60149.circadian” as it was mentioned in the other thread and I see the error only if I save the routine and open it again, so, there’s something going on there.

I’ll report this issue and let you know in case we need something else.
Just to confirm, have you tried running the routine? this is to see if the command is actually saved and the issue is only in the view.

Hi @nayelyz

Yes, I tried and it has this behavior:

  • If you create the routine or scene and save it, it always sends the correct value “Active” or “Inactive” and works fine:
2023-08-16T10:36:51.705950998+00:00 INFO Zigbee Light Multifunction Mc  <ZigbeeDevice: 0f922249-3c54-40fa-a217-ebe9eec40e53 [0x8723] (Lámpara Sofás)> received command: {"args":{"value":"Active"},"positional_args":["Active"],"command":"setCircadian","component":"main","capability":"legendabsolute60149.circadian"}
2023-08-16T10:36:51.723108998+00:00 TRACE Zigbee Light Multifunction Mc  Found CapabilityCommandDispatcher handler in zigbee_light_multifunctions
2023-08-16T10:36:51.725755998+00:00 PRINT Zigbee Light Multifunction Mc  Circadian Value        Active
  • If you edit the routine when it shows “Unknown action”, for example to change the name, it not works fine. Send the value “Circadian” name of the capability:
2023-08-16T10:37:43.924150357+00:00 INFO Zigbee Light Multifunction Mc  <ZigbeeDevice: 6895e080-7e31-4a4f-a72d-ed3b16ab39c5 [0xC47C] (Luz H. Irene)> received command: {"args":{"value":"Circadian"},"positional_args":["Circadian"],"command":"setCircadian","component":"main","capability":"legendabsolute60149.circadian"}
2023-08-16T10:37:43.943060357+00:00 TRACE Zigbee Light Multifunction Mc  Found CapabilityCommandDispatcher handler in zigbee_light_multifunctions
2023-08-16T10:37:43.945954023+00:00 PRINT Zigbee Light Multifunction Mc  Circadian Value        Circadian

I am wondering if synthetic.lightingEffectCircadian is a factor in this. It doesn’t have a presentation and yet the mobile app seems suspiciously capable at handling it, and it shares the setCircadian command name. Obviously it shouldn’t cause problems, but the app does seem to play by different rules to the rest of us.

ok, I was able to replicate this behavior as well and included everything in the report for the engineering team.

Once we get more info, we’ll let you know.

Where did you see this capability, @orangebucket? If it is presented in the app correctly, it sounds like it could belong to an OCF device.

It, and it’s friend synthetic.lightingEffectFade, are actually included in virtual lights created by the standard prototype in CLI/API.

There is an awful lot going on with those lights. They even receive ‘firmware updates’. One device got one yesterday and another got one today (the JSON below is an older snapshot of the device object). That was somewhat unexpected.

So I am thinking if they can do all this they might have accidentally got the reverse engineering from the saved rule back into a Routine wrong and splatted Mariano’s capability.


I like the ‘Wake up’ time of 6 PM. They must have a teenager in the house.

{
                    "id": "firmwareUpdate",
                    "version": 1,
                    "status": {
                        "lastUpdateStatusReason": {
                            "value": "IQFCUzWhKQJx6rWWLH2I",
                            "timestamp": "2023-07-04T07:19:30.286Z"
                        },
                        "availableVersion": {
                            "value": "PpABr7afGD8Mx",
                            "timestamp": "2023-07-04T07:19:30.286Z"
                        },
                        "lastUpdateStatus": {
                            "value": "updateFailed",
                            "timestamp": "2023-07-04T07:19:30.286Z"
                        },
                        "state": {
                            "value": "normalOperation",
                            "timestamp": "2023-07-04T07:19:30.286Z"
                        },
                        "currentVersion": {
                            "value": "Muda",
                            "timestamp": "2023-07-04T07:19:30.286Z"
                        },
                        "lastUpdateTime": {
                            "value": "5600-0229T23:3633.349+01:48",
                            "timestamp": "2023-07-04T07:19:30.286Z"
                        }
                    }
                },
                {
                    "id": "refresh",
                    "version": 1,
                    "status": []
                },
                {
                    "id": "synthetic.lightingEffectFade",
                    "version": 1,
                    "status": {
                        "fade": {
                            "value": {
                                "duration": 50,
                                "effects": [
                                    {
                                        "capability": "yUMNdPnW",
                                        "start": 3122164,
                                        "end": 5095328
                                    }
                                ],
                                "fadeType": "WakeUp",
                                "state": "Stop",
                                "afterAction": {
                                    "afterCommands": [
                                        {
                                            "component": "qfDJ4Nac1Joa3mb",
                                            "capability": "nvHKMfiqQ",
                                            "arguments": [
                                                7
                                            ],
                                            "command": "uwzhNGRiVII4lXhiqqV"
                                        }
                                    ],
                                    "timeZoneId": "Ge97-V5BUgh4wLp:Ir79_lQg_l/TbQ8Yr_SSD",
                                    "afterActionType": "CustomCommands"
                                }
                            },
                            "timestamp": "2023-07-04T07:19:30.286Z"
                        }
                    }
                },
                {
                    "id": "synthetic.lightingEffectCircadian",
                    "version": 1,
                    "status": {
                        "circadian": {
                            "value": {
                                "timeZoneId": "AsuT5LlAtCmDxFnd7kQcD-sQC2-xBhLp4DxYx-m95_I8BSRWL",
                                "state": "Stop"
                            },
                            "timestamp": "2023-07-04T07:19:30.286Z"
                        }
                    }
                }
1 Like

What’s oddly interesting is the use case for these synthetic effects in a virtual device. Since there’s no option to “mirror” these on physical devices and these are virtual devices am I missing something obvious about how these are used?

I’ve not tried the effects, and I don’t have any physical colour lights, but wouldn’t it just be case of mirroring the settings that result from the effects onto physical devices using automations, or placing a virtual device and a number of physical devices in a lighting group? In effect the virtual light is used as a lighting controller.

I don’t want to take the thread too far off its original course though.

This seems to be used when you create a group of lights and manage the group and run them with a GROUP device in the cloud.

1 Like

@Mariano_Colmenarejo
Following up on this issue, the team found the bug about this and mentioned it will be solved in the next version of the app. However, we don’t have an ETA for it.

For now, I think that if we’ll edit the routine where that capability is in use, we need to avoid leaving the “unknown action” and select the desired value (Active/Inactive) again.

1 Like

@Mariano_Colmenarejo, the same happens for this issue, I no longer see the “unknown” message. Please, let us know if you still have the issue somewhere.

Hi @nayelyz

I just did a scene, manual routine, and it still appears as an unknown action after saving

ah right, I was doing the exercise wrong. Sorry for the confusion, then, I’ll still keep an eye on that one.

1 Like