zwave-js / certification-backlog

Issues and discussions related to Z-Wave certification of HA + Z-Wave JS
1 stars 0 forks source link

Improve labels for endpoint features #42

Open marcelveldt opened 4 months ago

marcelveldt commented 4 months ago

The certification tests for Multi Channel CC refers to specific functionality on specific endpoints

12:30:38.151 -----------------------------------------------------------------------
             Please refer to the DUT's UI and confirm if control of:
                 * Binary Switch     on End Point 1
                 * Meter             on End Point 2
                 * Meter             on End Point 3
                 --- End Point 4 does not exist! ---
                 * Binary Switch     on End Point 5
                 --- End Point 6 does not exist! ---
                 * Multilevel Switch on End Point 7
             is provided!

Likewise, device manuals are also likely to explain the endpoints and what they mean. However, it is not at all obvious which of these entities belong to which endpoint:

Image

Also that weird name "(5)".

The next step in the certification test might also pose problems for the tester, unless they look at the device diagnostics first:

12:34:24.377 -----------------------------------------------------------------------
12:34:24.378 
12:34:24.378 Checking control of End Point 1
12:34:24.378 
12:34:24.379 Please send to the emulated device’s End Point 1 a 'Binary Switch Set' with Z-Wave value = 255 (0xFF)!
12:34:24.380 
12:34:24.380 *******************************************************************
12:34:24.380    Timeout for Test sequence is 5 min, waiting for following events:
12:34:24.380     * SWITCH_BINARY_SET to End Point 1:
                     * Z-Wave Value = 255 (0xFF)
12:34:24.380 *******************************************************************

Maybe the endpoint index should be part of every label (including the first entity) if the same functionality exists on multiple endpoints, like the binary switches and the meters here.

Device diagnostics:

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2024.1.0.dev20231211",
    "dev": true,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.6",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/Berlin",
    "os_name": "Linux",
    "os_version": "6.1.63-haos-raspi",
    "supervisor": "2024.05.2.dev1502",
    "host_os": "Home Assistant OS 11.5",
    "docker_version": "24.0.7",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {},
  "integration_manifest": {
    "domain": "zwave_js",
    "name": "Z-Wave",
    "codeowners": [
      "@home-assistant/z-wave"
    ],
    "config_flow": true,
    "dependencies": [
      "http",
      "repairs",
      "usb",
      "websocket_api"
    ],
    "documentation": "https://www.home-assistant.io/integrations/zwave_js",
    "integration_type": "hub",
    "iot_class": "local_push",
    "loggers": [
      "zwave_js_server"
    ],
    "quality_scale": "platinum",
    "requirements": [
      "pyserial==3.5",
      "zwave-js-server-python==0.54.0"
    ],
    "usb": [
      {
        "vid": "0658",
        "pid": "0200",
        "known_devices": [
          "Aeotec Z-Stick Gen5+",
          "Z-WaveMe UZB"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*z-wave*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      }
    ],
    "zeroconf": [
      "_zwave-js-server._tcp.local."
    ],
    "is_built_in": true
  },
  "data": {
    "versionInfo": {
      "driverVersion": "12.8.1",
      "serverVersion": "1.35.0",
      "minSchemaVersion": 0,
      "maxSchemaVersion": 35
    },
    "entities": [
      {
        "domain": "switch",
        "entity_id": "switch.node_40",
        "original_name": "",
        "original_device_class": null,
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "40-37-1-currentValue",
        "primary_value": {
          "command_class": 37,
          "command_class_name": "Binary Switch",
          "endpoint": 1,
          "property": "currentValue",
          "property_name": "currentValue",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "sensor",
        "entity_id": "sensor.node_40_electric_consumption_kwh",
        "original_name": "Electric Consumption [kWh]",
        "original_device_class": "energy",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": "kWh",
        "value_id": "40-50-2-value-65537",
        "primary_value": {
          "command_class": 50,
          "command_class_name": "Meter",
          "endpoint": 2,
          "property": "value",
          "property_name": "value",
          "property_key": 65537,
          "property_key_name": "Electric_kWh_Consumed"
        }
      },
      {
        "domain": "sensor",
        "entity_id": "sensor.node_40_electric_consumption_kwh_3",
        "original_name": "Electric Consumption [kWh] (3)",
        "original_device_class": "energy",
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": "kWh",
        "value_id": "40-50-3-value-65537",
        "primary_value": {
          "command_class": 50,
          "command_class_name": "Meter",
          "endpoint": 3,
          "property": "value",
          "property_name": "value",
          "property_key": 65537,
          "property_key_name": "Electric_kWh_Consumed"
        }
      },
      {
        "domain": "switch",
        "entity_id": "switch.node_40_5",
        "original_name": "(5)",
        "original_device_class": null,
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 0,
        "unit_of_measurement": null,
        "value_id": "40-37-5-currentValue",
        "primary_value": {
          "command_class": 37,
          "command_class_name": "Binary Switch",
          "endpoint": 5,
          "property": "currentValue",
          "property_name": "currentValue",
          "property_key": null,
          "property_key_name": null
        }
      },
      {
        "domain": "light",
        "entity_id": "light.node_40",
        "original_name": "",
        "original_device_class": null,
        "disabled": false,
        "disabled_by": null,
        "hidden_by": null,
        "original_icon": null,
        "entity_category": null,
        "supported_features": 32,
        "unit_of_measurement": null,
        "value_id": "40-38-7-currentValue",
        "primary_value": {
          "command_class": 38,
          "command_class_name": "Multilevel Switch",
          "endpoint": 7,
          "property": "currentValue",
          "property_name": "currentValue",
          "property_key": null,
          "property_key_name": null
        }
      }
    ],
    "state": {
      "nodeId": 40,
      "index": 0,
      "installerIcon": 1792,
      "userIcon": 1792,
      "status": 4,
      "ready": true,
      "isListening": true,
      "isRouting": true,
      "isSecure": true,
      "firmwareVersion": "1.3.0",
      "zwavePlusVersion": 2,
      "endpointCountIsDynamic": true,
      "endpointsHaveIdenticalCapabilities": false,
      "individualEndpointCount": 5,
      "aggregatedEndpointCount": 0,
      "interviewAttempts": 1,
      "isFrequentListening": false,
      "maxDataRate": 100000,
      "supportedDataRates": [
        40000,
        100000
      ],
      "protocolVersion": 3,
      "supportsBeaming": true,
      "supportsSecurity": false,
      "nodeType": 1,
      "zwavePlusNodeType": 0,
      "zwavePlusRoleType": 5,
      "deviceClass": {
        "basic": {
          "key": 4,
          "label": "Routing Slave"
        },
        "generic": {
          "key": 16,
          "label": "Binary Switch"
        },
        "specific": {
          "key": 0,
          "label": "Unused"
        },
        "mandatorySupportedCCs": [],
        "mandatoryControlledCCs": []
      },
      "interviewStage": "Complete",
      "statistics": {
        "commandsTX": 153,
        "commandsRX": 150,
        "commandsDroppedRX": 0,
        "commandsDroppedTX": 0,
        "timeoutResponse": 2,
        "rtt": 23.2,
        "lastSeen": "2024-05-16T10:30:26.279Z",
        "rssi": -73,
        "lwr": {
          "protocolDataRate": 3,
          "repeaters": [],
          "rssi": -73,
          "repeaterRSSI": []
        }
      },
      "highestSecurityClass": 0,
      "isControllerNode": false,
      "keepAwake": false,
      "lastSeen": "2024-05-16T10:30:26.279Z",
      "values": {
        "40-114-0-manufacturerId": {
          "endpoint": 0,
          "commandClass": 114,
          "commandClassName": "Manufacturer Specific",
          "property": "manufacturerId",
          "propertyName": "manufacturerId",
          "ccVersion": 2,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Manufacturer ID",
            "min": 0,
            "max": 65535,
            "stateful": true,
            "secret": false
          }
        },
        "40-114-0-productType": {
          "endpoint": 0,
          "commandClass": 114,
          "commandClassName": "Manufacturer Specific",
          "property": "productType",
          "propertyName": "productType",
          "ccVersion": 2,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Product type",
            "min": 0,
            "max": 65535,
            "stateful": true,
            "secret": false
          }
        },
        "40-114-0-productId": {
          "endpoint": 0,
          "commandClass": 114,
          "commandClassName": "Manufacturer Specific",
          "property": "productId",
          "propertyName": "productId",
          "ccVersion": 2,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Product ID",
            "min": 0,
            "max": 65535,
            "stateful": true,
            "secret": false
          }
        },
        "40-134-0-libraryType": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "libraryType",
          "propertyName": "libraryType",
          "ccVersion": 3,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Library type",
            "states": {
              "0": "Unknown",
              "1": "Static Controller",
              "2": "Controller",
              "3": "Enhanced Slave",
              "4": "Slave",
              "5": "Installer",
              "6": "Routing Slave",
              "7": "Bridge Controller",
              "8": "Device under Test",
              "9": "N/A",
              "10": "AV Remote",
              "11": "AV Device"
            },
            "stateful": true,
            "secret": false
          },
          "value": 3
        },
        "40-134-0-protocolVersion": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "protocolVersion",
          "propertyName": "protocolVersion",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave protocol version",
            "stateful": true,
            "secret": false
          },
          "value": "6.81"
        },
        "40-134-0-firmwareVersions": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "firmwareVersions",
          "propertyName": "firmwareVersions",
          "ccVersion": 3,
          "metadata": {
            "type": "string[]",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave chip firmware versions",
            "stateful": true,
            "secret": false
          },
          "value": [
            "1.3"
          ]
        },
        "40-134-0-hardwareVersion": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "hardwareVersion",
          "propertyName": "hardwareVersion",
          "ccVersion": 3,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave chip hardware version",
            "stateful": true,
            "secret": false
          },
          "value": 0
        },
        "40-134-0-sdkVersion": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "sdkVersion",
          "propertyName": "sdkVersion",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "SDK version",
            "stateful": true,
            "secret": false
          },
          "value": "7.0.0"
        },
        "40-134-0-applicationFrameworkAPIVersion": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "applicationFrameworkAPIVersion",
          "propertyName": "applicationFrameworkAPIVersion",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave application framework API version",
            "stateful": true,
            "secret": false
          },
          "value": "unused"
        },
        "40-134-0-applicationFrameworkBuildNumber": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "applicationFrameworkBuildNumber",
          "propertyName": "applicationFrameworkBuildNumber",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave application framework API build number",
            "stateful": true,
            "secret": false
          },
          "value": 0
        },
        "40-134-0-hostInterfaceVersion": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "hostInterfaceVersion",
          "propertyName": "hostInterfaceVersion",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Serial API version",
            "stateful": true,
            "secret": false
          },
          "value": "unused"
        },
        "40-134-0-hostInterfaceBuildNumber": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "hostInterfaceBuildNumber",
          "propertyName": "hostInterfaceBuildNumber",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Serial API build number",
            "stateful": true,
            "secret": false
          },
          "value": 0
        },
        "40-134-0-zWaveProtocolVersion": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "zWaveProtocolVersion",
          "propertyName": "zWaveProtocolVersion",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave protocol version",
            "stateful": true,
            "secret": false
          },
          "value": "6.81.0"
        },
        "40-134-0-zWaveProtocolBuildNumber": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "zWaveProtocolBuildNumber",
          "propertyName": "zWaveProtocolBuildNumber",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Z-Wave protocol build number",
            "stateful": true,
            "secret": false
          },
          "value": 255
        },
        "40-134-0-applicationVersion": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "applicationVersion",
          "propertyName": "applicationVersion",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Application version",
            "stateful": true,
            "secret": false
          },
          "value": "1.3.0"
        },
        "40-134-0-applicationBuildNumber": {
          "endpoint": 0,
          "commandClass": 134,
          "commandClassName": "Version",
          "property": "applicationBuildNumber",
          "propertyName": "applicationBuildNumber",
          "ccVersion": 3,
          "metadata": {
            "type": "string",
            "readable": true,
            "writeable": false,
            "label": "Application build number",
            "stateful": true,
            "secret": false
          },
          "value": 255
        },
        "40-37-1-currentValue": {
          "endpoint": 1,
          "commandClass": 37,
          "commandClassName": "Binary Switch",
          "property": "currentValue",
          "propertyName": "currentValue",
          "ccVersion": 2,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": false,
            "label": "Current value",
            "stateful": true,
            "secret": false
          },
          "value": false
        },
        "40-37-1-targetValue": {
          "endpoint": 1,
          "commandClass": 37,
          "commandClassName": "Binary Switch",
          "property": "targetValue",
          "propertyName": "targetValue",
          "ccVersion": 2,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": true,
            "label": "Target value",
            "valueChangeOptions": [
              "transitionDuration"
            ],
            "stateful": true,
            "secret": false
          },
          "value": false
        },
        "40-37-1-duration": {
          "endpoint": 1,
          "commandClass": 37,
          "commandClassName": "Binary Switch",
          "property": "duration",
          "propertyName": "duration",
          "ccVersion": 2,
          "metadata": {
            "type": "duration",
            "readable": true,
            "writeable": false,
            "label": "Remaining duration",
            "stateful": true,
            "secret": false
          },
          "value": {
            "value": 0,
            "unit": "seconds"
          }
        },
        "40-50-2-value-65537": {
          "endpoint": 2,
          "commandClass": 50,
          "commandClassName": "Meter",
          "property": "value",
          "propertyKey": 65537,
          "propertyName": "value",
          "propertyKeyName": "Electric_kWh_Consumed",
          "ccVersion": 4,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Electric Consumption [kWh]",
            "ccSpecific": {
              "meterType": 1,
              "scale": 0,
              "rateType": 1
            },
            "unit": "kWh",
            "stateful": true,
            "secret": false
          },
          "value": 20
        },
        "40-50-2-reset": {
          "endpoint": 2,
          "commandClass": 50,
          "commandClassName": "Meter",
          "property": "reset",
          "propertyName": "reset",
          "ccVersion": 4,
          "metadata": {
            "type": "boolean",
            "readable": false,
            "writeable": true,
            "label": "Reset accumulated values",
            "states": {
              "true": "Reset"
            },
            "stateful": true,
            "secret": false
          }
        },
        "40-50-3-value-65537": {
          "endpoint": 3,
          "commandClass": 50,
          "commandClassName": "Meter",
          "property": "value",
          "propertyKey": 65537,
          "propertyName": "value",
          "propertyKeyName": "Electric_kWh_Consumed",
          "ccVersion": 4,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Electric Consumption [kWh]",
            "ccSpecific": {
              "meterType": 1,
              "scale": 0,
              "rateType": 1
            },
            "unit": "kWh",
            "stateful": true,
            "secret": false
          },
          "value": 30
        },
        "40-50-3-reset": {
          "endpoint": 3,
          "commandClass": 50,
          "commandClassName": "Meter",
          "property": "reset",
          "propertyName": "reset",
          "ccVersion": 4,
          "metadata": {
            "type": "boolean",
            "readable": false,
            "writeable": true,
            "label": "Reset accumulated values",
            "states": {
              "true": "Reset"
            },
            "stateful": true,
            "secret": false
          }
        },
        "40-37-5-currentValue": {
          "endpoint": 5,
          "commandClass": 37,
          "commandClassName": "Binary Switch",
          "property": "currentValue",
          "propertyName": "currentValue",
          "ccVersion": 2,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": false,
            "label": "Current value",
            "stateful": true,
            "secret": false
          },
          "value": false
        },
        "40-37-5-targetValue": {
          "endpoint": 5,
          "commandClass": 37,
          "commandClassName": "Binary Switch",
          "property": "targetValue",
          "propertyName": "targetValue",
          "ccVersion": 2,
          "metadata": {
            "type": "boolean",
            "readable": true,
            "writeable": true,
            "label": "Target value",
            "valueChangeOptions": [
              "transitionDuration"
            ],
            "stateful": true,
            "secret": false
          },
          "value": false
        },
        "40-37-5-duration": {
          "endpoint": 5,
          "commandClass": 37,
          "commandClassName": "Binary Switch",
          "property": "duration",
          "propertyName": "duration",
          "ccVersion": 2,
          "metadata": {
            "type": "duration",
            "readable": true,
            "writeable": false,
            "label": "Remaining duration",
            "stateful": true,
            "secret": false
          },
          "value": {
            "value": 0,
            "unit": "seconds"
          }
        },
        "40-38-7-targetValue": {
          "endpoint": 7,
          "commandClass": 38,
          "commandClassName": "Multilevel Switch",
          "property": "targetValue",
          "propertyName": "targetValue",
          "ccVersion": 4,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": true,
            "label": "Target value",
            "valueChangeOptions": [
              "transitionDuration"
            ],
            "min": 0,
            "max": 99,
            "stateful": true,
            "secret": false
          },
          "value": 0
        },
        "40-38-7-duration": {
          "endpoint": 7,
          "commandClass": 38,
          "commandClassName": "Multilevel Switch",
          "property": "duration",
          "propertyName": "duration",
          "ccVersion": 4,
          "metadata": {
            "type": "duration",
            "readable": true,
            "writeable": false,
            "label": "Remaining duration",
            "stateful": true,
            "secret": false
          },
          "value": {
            "value": 0,
            "unit": "seconds"
          }
        },
        "40-38-7-currentValue": {
          "endpoint": 7,
          "commandClass": 38,
          "commandClassName": "Multilevel Switch",
          "property": "currentValue",
          "propertyName": "currentValue",
          "ccVersion": 4,
          "metadata": {
            "type": "number",
            "readable": true,
            "writeable": false,
            "label": "Current value",
            "min": 0,
            "max": 99,
            "stateful": true,
            "secret": false
          },
          "value": 0
        },
        "40-38-7-Up": {
          "endpoint": 7,
          "commandClass": 38,
          "commandClassName": "Multilevel Switch",
          "property": "Up",
          "propertyName": "Up",
          "ccVersion": 4,
          "metadata": {
            "type": "boolean",
            "readable": false,
            "writeable": true,
            "label": "Perform a level change (Up)",
            "ccSpecific": {
              "switchType": 2
            },
            "valueChangeOptions": [
              "transitionDuration"
            ],
            "states": {
              "true": "Start",
              "false": "Stop"
            },
            "stateful": true,
            "secret": false
          }
        },
        "40-38-7-Down": {
          "endpoint": 7,
          "commandClass": 38,
          "commandClassName": "Multilevel Switch",
          "property": "Down",
          "propertyName": "Down",
          "ccVersion": 4,
          "metadata": {
            "type": "boolean",
            "readable": false,
            "writeable": true,
            "label": "Perform a level change (Down)",
            "ccSpecific": {
              "switchType": 2
            },
            "valueChangeOptions": [
              "transitionDuration"
            ],
            "states": {
              "true": "Start",
              "false": "Stop"
            },
            "stateful": true,
            "secret": false
          }
        },
        "40-38-7-restorePrevious": {
          "endpoint": 7,
          "commandClass": 38,
          "commandClassName": "Multilevel Switch",
          "property": "restorePrevious",
          "propertyName": "restorePrevious",
          "ccVersion": 4,
          "metadata": {
            "type": "boolean",
            "readable": false,
            "writeable": true,
            "label": "Restore previous value",
            "states": {
              "true": "Restore"
            },
            "stateful": true,
            "secret": false
          }
        }
      },
      "endpoints": {
        "0": {
          "nodeId": 40,
          "index": 0,
          "installerIcon": 1792,
          "userIcon": 1792,
          "deviceClass": {
            "basic": {
              "key": 4,
              "label": "Routing Slave"
            },
            "generic": {
              "key": 16,
              "label": "Binary Switch"
            },
            "specific": {
              "key": 0,
              "label": "Unused"
            },
            "mandatorySupportedCCs": [],
            "mandatoryControlledCCs": []
          },
          "commandClasses": [
            {
              "id": 94,
              "name": "Z-Wave Plus Info",
              "version": 2,
              "isSecure": false
            },
            {
              "id": 159,
              "name": "Security 2",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 96,
              "name": "Multi Channel",
              "version": 4,
              "isSecure": true
            },
            {
              "id": 108,
              "name": "Supervision",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 85,
              "name": "Transport Service",
              "version": 2,
              "isSecure": false
            },
            {
              "id": 134,
              "name": "Version",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 133,
              "name": "Association",
              "version": 2,
              "isSecure": true
            },
            {
              "id": 89,
              "name": "Association Group Information",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 142,
              "name": "Multi Channel Association",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 90,
              "name": "Device Reset Locally",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 114,
              "name": "Manufacturer Specific",
              "version": 2,
              "isSecure": true
            },
            {
              "id": 37,
              "name": "Binary Switch",
              "version": 2,
              "isSecure": true
            }
          ]
        },
        "1": {
          "nodeId": 40,
          "index": 1,
          "installerIcon": 1792,
          "userIcon": 1792,
          "deviceClass": {
            "basic": {
              "key": 4,
              "label": "Routing Slave"
            },
            "generic": {
              "key": 16,
              "label": "Binary Switch"
            },
            "specific": {
              "key": 0,
              "label": "Unused"
            },
            "mandatorySupportedCCs": [],
            "mandatoryControlledCCs": []
          },
          "commandClasses": [
            {
              "id": 94,
              "name": "Z-Wave Plus Info",
              "version": 2,
              "isSecure": false
            },
            {
              "id": 159,
              "name": "Security 2",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 108,
              "name": "Supervision",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 133,
              "name": "Association",
              "version": 2,
              "isSecure": true
            },
            {
              "id": 89,
              "name": "Association Group Information",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 142,
              "name": "Multi Channel Association",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 37,
              "name": "Binary Switch",
              "version": 2,
              "isSecure": true
            }
          ]
        },
        "2": {
          "nodeId": 40,
          "index": 2,
          "installerIcon": 1792,
          "userIcon": 1792,
          "deviceClass": {
            "basic": {
              "key": 4,
              "label": "Routing Slave"
            },
            "generic": {
              "key": 49,
              "label": "Meter"
            },
            "specific": {
              "key": 0,
              "label": "Unused"
            },
            "mandatorySupportedCCs": [],
            "mandatoryControlledCCs": []
          },
          "commandClasses": [
            {
              "id": 94,
              "name": "Z-Wave Plus Info",
              "version": 2,
              "isSecure": false
            },
            {
              "id": 159,
              "name": "Security 2",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 108,
              "name": "Supervision",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 133,
              "name": "Association",
              "version": 2,
              "isSecure": true
            },
            {
              "id": 89,
              "name": "Association Group Information",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 142,
              "name": "Multi Channel Association",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 50,
              "name": "Meter",
              "version": 4,
              "isSecure": true
            }
          ]
        },
        "3": {
          "nodeId": 40,
          "index": 3,
          "installerIcon": 1792,
          "userIcon": 1792,
          "deviceClass": {
            "basic": {
              "key": 4,
              "label": "Routing Slave"
            },
            "generic": {
              "key": 49,
              "label": "Meter"
            },
            "specific": {
              "key": 0,
              "label": "Unused"
            },
            "mandatorySupportedCCs": [],
            "mandatoryControlledCCs": []
          },
          "commandClasses": [
            {
              "id": 94,
              "name": "Z-Wave Plus Info",
              "version": 2,
              "isSecure": false
            },
            {
              "id": 159,
              "name": "Security 2",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 108,
              "name": "Supervision",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 133,
              "name": "Association",
              "version": 2,
              "isSecure": true
            },
            {
              "id": 89,
              "name": "Association Group Information",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 142,
              "name": "Multi Channel Association",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 50,
              "name": "Meter",
              "version": 4,
              "isSecure": true
            }
          ]
        },
        "5": {
          "nodeId": 40,
          "index": 5,
          "installerIcon": 1792,
          "userIcon": 1792,
          "deviceClass": {
            "basic": {
              "key": 4,
              "label": "Routing Slave"
            },
            "generic": {
              "key": 16,
              "label": "Binary Switch"
            },
            "specific": {
              "key": 0,
              "label": "Unused"
            },
            "mandatorySupportedCCs": [],
            "mandatoryControlledCCs": []
          },
          "commandClasses": [
            {
              "id": 94,
              "name": "Z-Wave Plus Info",
              "version": 2,
              "isSecure": false
            },
            {
              "id": 159,
              "name": "Security 2",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 108,
              "name": "Supervision",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 133,
              "name": "Association",
              "version": 2,
              "isSecure": true
            },
            {
              "id": 89,
              "name": "Association Group Information",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 142,
              "name": "Multi Channel Association",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 37,
              "name": "Binary Switch",
              "version": 2,
              "isSecure": true
            }
          ]
        },
        "7": {
          "nodeId": 40,
          "index": 7,
          "installerIcon": 1792,
          "userIcon": 1792,
          "deviceClass": {
            "basic": {
              "key": 4,
              "label": "Routing Slave"
            },
            "generic": {
              "key": 17,
              "label": "Multilevel Switch"
            },
            "specific": {
              "key": 0,
              "label": "Unused"
            },
            "mandatorySupportedCCs": [],
            "mandatoryControlledCCs": []
          },
          "commandClasses": [
            {
              "id": 94,
              "name": "Z-Wave Plus Info",
              "version": 2,
              "isSecure": false
            },
            {
              "id": 159,
              "name": "Security 2",
              "version": 1,
              "isSecure": true
            },
            {
              "id": 108,
              "name": "Supervision",
              "version": 1,
              "isSecure": false
            },
            {
              "id": 133,
              "name": "Association",
              "version": 2,
              "isSecure": true
            },
            {
              "id": 89,
              "name": "Association Group Information",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 142,
              "name": "Multi Channel Association",
              "version": 3,
              "isSecure": true
            },
            {
              "id": 38,
              "name": "Multilevel Switch",
              "version": 4,
              "isSecure": true
            }
          ]
        }
      }
    }
  }
}

TODO Home Assistant

AlCalzone commented 2 months ago

Diagnostics are ini the previous comment, in the code block.

marcelveldt commented 1 month ago

I've had exactly the same at hand in Matter and there we solved it by simply always appending the endpoint id to the name but only if a value exists multiple times on a node. Its not pretty but at least its consistent.

I'll try implementing it in Z-Wave like that as well