Missing SmartThings Custom Capability command

piston

#1

Hello - I have a SmartThings Edge driver with custom capabilities. As of a few months ago I had no problems controlling these devices with a piston. It correctly recognized all of the capability commands available. But now it doesn’t. What’s changed - besides the time elapsed since it worked ok - is that I had updated the custom capability to simply add some more items to an alternatives list. No change to the command or anything else, besides a new custom capability name. And now the custom capability command is no longer listed when I go to select a command when editing a piston for this device. All other commands (and there are several) from other custom capabilities are still listed fine, but this particular one is missing. It seems like there is a glitch between SmartThings and webCoRE that wasn’t there before.

By the way, my custom capability command that is missing in webCoRE works just fine when selected from the SmartThings mobile app automation routines, so I know there’s no error in the custom capability definition itself.

I’ve tried updating webCoRE to the latest version, but it has not solved it. I now have users of my driver - in combination with webCoRE - out of commission, so any help would be appreciated.


#2

Tagging @orangebucket @ipaterson


#3

Please try logging out of the webCoRE dashboard and logging back in to see if there was some outdated device data stored in your browser. I’m not sure what else to recommend here, I don’t believe webCoRE intentionally filters out any custom capabilities. If more help is needed it would be helpful if you can give any specific information about the capability and the naming changes that were made since otherwise we’re just blind guessing.


#4

Hello - thanks for responding. Logging in and out did not help.

Some more info: I have a second device generated by the same driver, that has the same capability, and the command IS showing up to select from in a piston for that device. So it can’t be the capability itself. If it works with one device, why would it not with another?!


Here are more specifics:

The custom capability is partyvoice23922.partitioncommand3, and the command is setPartitionCommand().

Device Profile:
I’m omitting the Preferences sections below because it is quite long.

This one is for the device that is NOT working:

name: DSC.primarypanel.v21
components:
- id: main
  capabilities:
    - id: "partyvoice23922.partitionStatus"
      version: 1
    - id: "partyvoice23922.dscdashswitch"
      version: 1
    - id: "partyvoice23922.ledStatus"
      version: 1
    - id: "partyvoice23922.dscstayswitch"
      version: 1
    - id: "partyvoice23922.dscawayswitch"
      version: 1
    - id: "partyvoice23922.partitioncommand3"
      version: 1
    - id: "partyvoice23922.dscselectswitch2"
      version: 1
    - id: alarm
      version: 1
    - id: securitySystem
      version: 1
    - id: refresh
      version: 1
  categories:
    - name: SecurityPanel
metadata:
  vid: 764f244e-c0e9-3659-9915-906217c0b8de
  mnmn: SmartThingsCommunity

This profile is for the device that DOES work (identical!):

name: DSC.secondarypanel.v21
components:
- id: main
  capabilities:
    - id: "partyvoice23922.partitionStatus"
      version: 1
    - id: "partyvoice23922.dscdashswitch"
      version: 1
    - id: "partyvoice23922.ledStatus"
      version: 1
    - id: "partyvoice23922.dscstayswitch"
      version: 1
    - id: "partyvoice23922.dscawayswitch"
      version: 1
    - id: "partyvoice23922.partitioncommand3"
      version: 1
    - id: "partyvoice23922.dscselectswitch2"
      version: 1
    - id: alarm
      version: 1
    - id: securitySystem
      version: 1
    - id: refresh
      version: 1
  categories:
    - name: SecurityPanel
metadata:
  vid: 764f244e-c0e9-3659-9915-906217c0b8de
  mnmn: SmartThingsCommunity

Custom Capability Definition (partyvoice23922.partitioncommand3)

id: partyvoice23922.partitioncommand3
version: 1
status: proposed
name: partitioncommand3
ephemeral: false
attributes:
  partitionCommand:
    schema:
      type: object
      properties:
        value:
          type: string
          maxLength: 16
      additionalProperties: false
      required:
        - value
    setter: setPartitionCommand
    enumCommands: []
commands:
  setPartitionCommand:
    name: setPartitionCommand
    arguments:
      - name: value
        optional: false
        schema:
          type: string
          maxLength: 16

Capability Presentation definition:

dashboard:
  states: []
  actions: []
  basicPlus: []
detailView:
  - label: 'Tap for additional partition commands:'
    displayType: list
    list:
      command:
        name: setPartitionCommand
        alternatives:
          - key: panicfire
            value: Panic Fire
            type: active
          - key: panicamb
            value: Panic Ambulance
            type: active
          - key: panicpolice
            value: Panic Police
            type: active
          - key: instantarm
            value: Arm-Instant
            type: active
          - key: toggleinstant
            value: Toggle Instant Mode
            type: active
          - key: togglenight
            value: Toggle Night Mode
            type: active
          - key: togglechime
            value: Toggle Chime
            type: active
          - key: refresh
            value: Refresh
            type: active
          - key: reset
            value: Reset
            type: active
          - key: armstay
            value: Arm Stay
            type: active
          - key: armaway
            value: Arm Away
            type: active
          - key: disarm
            value: Disarm
            type: active
          - key: pgm1
            value: PGM1
            type: active
          - key: pgm2
            value: PGM2
            type: active
          - key: pgm3
            value: PGM3
            type: active
          - key: pgm4
            value: PGM4
            type: active
        argumentType: string
      state:
        value: partitionCommand.value
        valueType: string
        alternatives:
          - key: panicfire
            value: Panic Fire
            type: active
          - key: panicamb
            value: Panic Ambulance
            type: active
          - key: panicpolice
            value: Panic Police
            type: active
          - key: instantarm
            value: Arm-Instant
            type: active
          - key: toggleinstant
            value: Toggle Instant Mode
            type: active
          - key: togglenight
            value: Toggle Night Mode
            type: active
          - key: togglechime
            value: Toggle Chime
            type: active
          - key: refresh
            value: Refresh
            type: active
          - key: reset
            value: Reset
            type: active
          - key: armstay
            value: Arm Stay
            type: active
          - key: armaway
            value: Arm Away
            type: active
          - key: disarm
            value: Disarm
            type: active
          - key: pgm1
            value: PGM1
            type: active
          - key: pgm2
            value: PGM2
            type: active
          - key: pgm3
            value: PGM3
            type: active
          - key: pgm4
            value: PGM4
            type: active
    state: null
automation:
  conditions: []
  actions:
    - label: 'Partition Commands:'
      displayType: list
      list:
        alternatives:
          - key: panicfire
            value: Panic Fire
            type: active
          - key: panicamb
            value: Panic Ambulance
            type: active
          - key: panicpolice
            value: Panic Police
            type: active
          - key: instantarm
            value: Arm-Instant
            type: active
          - key: toggleinstant
            value: Toggle Instant Mode
            type: active
          - key: togglenight
            value: Toggle Night Mode
            type: active
          - key: togglechime
            value: Toggle Chime
            type: active
          - key: refresh
            value: Refresh
            type: active
          - key: reset
            value: Reset
            type: active
          - key: armstay
            value: Arm Stay
            type: active
          - key: armaway
            value: Arm Away
            type: active
          - key: disarm
            value: Disarm
            type: active
          - key: pgm1
            value: PGM1
            type: active
          - key: pgm2
            value: PGM2
            type: active
          - key: pgm3
            value: PGM3
            type: active
          - key: pgm4
            value: PGM4
            type: active
        command: setPartitionCommand
        argumentType: string
id: partyvoice23922.partitioncommand3
version: 1

#5

Thanks for all of the detail. I wonder if anything would change if that device were removed from webCoRE’s approved device list and then added back. I don’t think that is a destructive operation but maybe someone else can do a test to make sure that removing and reauthorizing a device in that way is safe. It seems like some crossed wires somewhere in the SmartThings platform.


#6

I did try that :slightly_smiling_face:. I also went the extreme and deleted the driver and its devices, removed them from weCoRE’s recognized devices list, and recreated everything and tried again. Same result.


#7

So are we saying that devices created with the ‘primary panel’ profile are missing a capability command in webCoRE, but that those created with the ‘secondary panel’ are OK?

However when viewed from the SmartThings side via the CLI/API the devices look correct? What the ST mobile app thinks is going on is less of interest.


#8

Yes, you have it right.

Yes, I inspected the device presentations across the two devices and they are identical for that capability.


#9

I was thinking more about the devices themselves as that is what webCoRE will be seeing.


#10

Not sure what you are asking. The devices themselves are working fine, including that particular capability. It’s a selection list, so that is functioning just fine, along with the ability to use them as actions in an automation routines. It’s only in webCoRE that the capability is omitted for some reason, preventing those command actions from being selected for that device.