Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Device Support Request] Clipsal/Schneider Wiser 41EPBDWCLMZ additional features missing #2828

Open
alexeiw123 opened this issue Dec 10, 2023 · 2 comments

Comments

@alexeiw123
Copy link

alexeiw123 commented Dec 10, 2023

Problem description

This switch is detected by ZHA without a custom quirk, but is missing some core settings functionality that is supported using the clipsal/Schneider zigbee hub.

as described here the switch has a configurable backlit LED behind the button which can operate in one of four modes: Reverse with load, Consistent with load, Always on and Always off.

Additionally, there are also minimum and maximum ballast settings which allow configuration of the minimum and maximum brightness controls, which helps to configure for different lights that have different dimmer responses.

Solution description

Add UI controls for "LED indicator mode", "ballast minimum" and "ballast maximum".

The LED Indicator solution should also apply for the related device 41E2PBSWMZ. This is the non-dimming wiser switch without ballast options. I do not have one of these non-dimmer units to test on.

Screenshots/Video

No response

Device signature

Device signature
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4190, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "3": {
      "profile_id": "0x0104",
      "device_type": "0x0101",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0008",
        "0x0301",
        "0x0b05"
      ],
      "output_clusters": [
        "0x0019"
      ]
    },
    "21": {
      "profile_id": "0x0104",
      "device_type": "0x0104",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0b05",
        "0xff17"
      ],
      "output_clusters": [
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0008",
        "0x0102"
      ]
    },
    "242": {
      "profile_id": "0xa1e0",
      "device_type": "0x0061",
      "input_clusters": [],
      "output_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "Schneider Electric",
  "model": "CH/DIMMER/1",
  "class": "zigpy.device.Device"
}

Diagnostic information

No response

Logs

No response

Custom quirk

No response

Additional information

ZHA Toolbox Scan
{
  "ieee": "00:3c:84:ff:fe:04:8c:ce",
  "nwk": "0x3d00",
  "model": "CH/DIMMER/1",
  "manufacturer": "Schneider Electric",
  "manufacturer_id": "0x4190",
  "endpoints": [
    {
      "id": 3,
      "device_type": "0x0101",
      "profile": "0x0104",
      "in_clusters": {
        "0x0000": {
          "cluster_id": "0x0000",
          "title": "Basic",
          "name": "basic",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "zcl_version",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 3
            },
            "0x0001": {
              "attribute_id": "0x0001",
              "attribute_name": "app_version",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            },
            "0x0002": {
              "attribute_id": "0x0002",
              "attribute_name": "stack_version",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 6
            },
            "0x0003": {
              "attribute_id": "0x0003",
              "attribute_name": "hw_version",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 1
            },
            "0x0004": {
              "attribute_id": "0x0004",
              "attribute_name": "manufacturer",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": "Schneider Electric"
            },
            "0x0005": {
              "attribute_id": "0x0005",
              "attribute_name": "model",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": "CH/DIMMER/1"
            },
            "0x0006": {
              "attribute_id": "0x0006",
              "attribute_name": "date_code",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": ""
            },
            "0x0007": {
              "attribute_id": "0x0007",
              "attribute_name": "power_source",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 1
            },
            "0x0008": {
              "attribute_id": "0x0008",
              "attribute_name": "generic_device_class",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x0009": {
              "attribute_id": "0x0009",
              "attribute_name": "generic_device_type",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 225
            },
            "0x000a": {
              "attribute_id": "0x000a",
              "attribute_name": "product_code",
              "value_type": [
                "0x41",
                "LVBytes",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": ""
            },
            "0x000b": {
              "attribute_id": "0x000b",
              "attribute_name": "product_url",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": "http://www.schneider-electric.com"
            },
            "0x4000": {
              "attribute_id": "0x4000",
              "attribute_name": "sw_build_id",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": "002.002.006 R"
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            },
            "0xe001": {
              "attribute_id": "0xe001",
              "attribute_name": "57345",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "002.002.006 R"
            },
            "0xe002": {
              "attribute_id": "0xe002",
              "attribute_name": "57346",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "001.000.000"
            },
            "0xe004": {
              "attribute_id": "0xe004",
              "attribute_name": "57348",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "363036443100000"
            },
            "0xe007": {
              "attribute_id": "0xe007",
              "attribute_name": "57351",
              "value_type": [
                "0x31",
                "enum16",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": 17434
            },
            "0xe008": {
              "attribute_id": "0xe008",
              "attribute_name": "57352",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "Wiser Light"
            },
            "0xe009": {
              "attribute_id": "0xe009",
              "attribute_name": "57353",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "CH/DIMMER/1"
            },
            "0xe00a": {
              "attribute_id": "0xe00a",
              "attribute_name": "57354",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "Wiser Home"
            },
            "0xe00b": {
              "attribute_id": "0xe00b",
              "attribute_name": "57355",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190
            }
          },
          "commands_received": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "reset_fact_default",
              "command_arguments": "<class 'zigpy.zcl.foundation.reset_fact_default'>"
            }
          },
          "commands_generated": {}
        },
        "0x0003": {
          "cluster_id": "0x0003",
          "title": "Identify",
          "name": "identify",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "identify_time",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "attribute_value": 0
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 1
            }
          },
          "commands_received": {},
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "identify_query_response",
              "command_args": "<class 'zigpy.zcl.foundation.identify_query_response'>"
            }
          }
        },
        "0x0004": {
          "cluster_id": "0x0004",
          "title": "Groups",
          "name": "groups",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "name_support",
              "value_type": [
                "0x18",
                "bitmap8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            }
          },
          "commands_received": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "add",
              "command_arguments": "<class 'zigpy.zcl.foundation.add'>"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "view",
              "command_arguments": "<class 'zigpy.zcl.foundation.view'>"
            },
            "0x02": {
              "command_id": "0x02",
              "command_name": "get_membership",
              "command_arguments": "<class 'zigpy.zcl.foundation.get_membership'>"
            },
            "0x03": {
              "command_id": "0x03",
              "command_name": "remove",
              "command_arguments": "<class 'zigpy.zcl.foundation.remove'>"
            },
            "0x04": {
              "command_id": "0x04",
              "command_name": "remove_all",
              "command_arguments": "<class 'zigpy.zcl.foundation.remove_all'>"
            },
            "0x05": {
              "command_id": "0x05",
              "command_name": "add_if_identifying",
              "command_arguments": "<class 'zigpy.zcl.foundation.add_if_identifying'>"
            }
          },
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "add_response",
              "command_args": "<class 'zigpy.zcl.foundation.add_response'>"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "view_response",
              "command_args": "<class 'zigpy.zcl.foundation.view_response'>"
            },
            "0x02": {
              "command_id": "0x02",
              "command_name": "get_membership_response",
              "command_args": "<class 'zigpy.zcl.foundation.get_membership_response'>"
            },
            "0x03": {
              "command_id": "0x03",
              "command_name": "remove_response",
              "command_args": "<class 'zigpy.zcl.foundation.remove_response'>"
            }
          }
        },
        "0x0005": {
          "cluster_id": "0x0005",
          "title": "Scenes",
          "name": "scenes",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "count",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x0001": {
              "attribute_id": "0x0001",
              "attribute_name": "current_scene",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x0002": {
              "attribute_id": "0x0002",
              "attribute_name": "current_group",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x0003": {
              "attribute_id": "0x0003",
              "attribute_name": "scene_valid",
              "value_type": [
                "0x10",
                "Bool",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x0004": {
              "attribute_id": "0x0004",
              "attribute_name": "name_support",
              "value_type": [
                "0x18",
                "bitmap8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            }
          },
          "commands_received": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "add",
              "command_arguments": "<class 'zigpy.zcl.foundation.add'>"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "view",
              "command_arguments": "<class 'zigpy.zcl.foundation.view'>"
            },
            "0x02": {
              "command_id": "0x02",
              "command_name": "remove",
              "command_arguments": "<class 'zigpy.zcl.foundation.remove'>"
            },
            "0x03": {
              "command_id": "0x03",
              "command_name": "remove_all",
              "command_arguments": "<class 'zigpy.zcl.foundation.remove_all'>"
            },
            "0x04": {
              "command_id": "0x04",
              "command_name": "store",
              "command_arguments": "<class 'zigpy.zcl.foundation.store'>"
            },
            "0x05": {
              "command_id": "0x05",
              "command_name": "recall",
              "command_arguments": "<class 'zigpy.zcl.foundation.recall'>"
            },
            "0x06": {
              "command_id": "0x06",
              "command_name": "get_scene_membership",
              "command_arguments": "<class 'zigpy.zcl.foundation.get_scene_membership'>"
            }
          },
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "add_scene_response",
              "command_args": "<class 'zigpy.zcl.foundation.add_scene_response'>"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "view_response",
              "command_args": "<class 'zigpy.zcl.foundation.view_response'>"
            },
            "0x02": {
              "command_id": "0x02",
              "command_name": "remove_scene_response",
              "command_args": "<class 'zigpy.zcl.foundation.remove_scene_response'>"
            },
            "0x03": {
              "command_id": "0x03",
              "command_name": "remove_all_scenes_response",
              "command_args": "<class 'zigpy.zcl.foundation.remove_all_scenes_response'>"
            },
            "0x04": {
              "command_id": "0x04",
              "command_name": "store_scene_response",
              "command_args": "<class 'zigpy.zcl.foundation.store_scene_response'>"
            },
            "0x06": {
              "command_id": "0x06",
              "command_name": "get_scene_membership_response",
              "command_args": "<class 'zigpy.zcl.foundation.get_scene_membership_response'>"
            }
          }
        },
        "0x0006": {
          "cluster_id": "0x0006",
          "title": "On/Off",
          "name": "on_off",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "on_off",
              "value_type": [
                "0x10",
                "Bool",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x4001": {
              "attribute_id": "0x4001",
              "attribute_name": "on_time",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "attribute_value": 0
            },
            "0x4002": {
              "attribute_id": "0x4002",
              "attribute_name": "off_wait_time",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "attribute_value": 0
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            },
            "0xe000": {
              "attribute_id": "0xe000",
              "attribute_name": "57344",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 0
            },
            "0xe001": {
              "attribute_id": "0xe001",
              "attribute_name": "57345",
              "value_type": [
                "0x23",
                "uint32_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 0
            },
            "0xe002": {
              "attribute_id": "0xe002",
              "attribute_name": "57346",
              "value_type": [
                "0x18",
                "bitmap8",
                "Discrete"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 1
            },
            "0xe003": {
              "attribute_id": "0xe003",
              "attribute_name": "57347",
              "value_type": [
                "0x23",
                "uint32_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 0
            }
          },
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0008": {
          "cluster_id": "0x0008",
          "title": "Level control",
          "name": "level",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "current_level",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 254
            },
            "0x000f": {
              "attribute_id": "0x000f",
              "attribute_name": "options",
              "value_type": [
                "0x18",
                "bitmap8",
                "Discrete"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "attribute_value": 0
            },
            "0x0011": {
              "attribute_id": "0x0011",
              "attribute_name": "on_level",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "attribute_value": 255
            },
            "0x4000": {
              "attribute_id": "0x4000",
              "attribute_name": "start_up_current_level",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "attribute_value": 0
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            }
          },
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0301": {
          "cluster_id": "0x0301",
          "title": "Ballast",
          "name": "light_ballast",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "physical_min_level",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 1
            },
            "0x0001": {
              "attribute_id": "0x0001",
              "attribute_name": "physical_max_level",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 254
            },
            "0x0002": {
              "attribute_id": "0x0002",
              "attribute_name": "ballast_status",
              "value_type": [
                "0x18",
                "bitmap8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x0010": {
              "attribute_id": "0x0010",
              "attribute_name": "min_level",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "attribute_value": 1
            },
            "0x0011": {
              "attribute_id": "0x0011",
              "attribute_name": "max_level",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "attribute_value": 254
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            },
            "0xe000": {
              "attribute_id": "0xe000",
              "attribute_name": "57344",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 0
            }
          },
          "commands_received": {},
          "commands_generated": {}
        },
        "0x0b05": {
          "cluster_id": "0x0b05",
          "title": "Diagnostic",
          "name": "diagnostic",
          "attributes": {
            "0x011c": {
              "attribute_id": "0x011c",
              "attribute_name": "last_message_lqi",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x011d": {
              "attribute_id": "0x011d",
              "attribute_name": "last_message_rssi",
              "value_type": [
                "0x28",
                "int8s",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            }
          },
          "commands_received": {},
          "commands_generated": {}
        }
      },
      "out_clusters": {
        "0x0019": {
          "cluster_id": "0x0019",
          "title": "Ota",
          "name": "ota",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "upgrade_server_id",
              "value_type": [
                "0xf0",
                "EUI64",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": [
                102,
                222,
                232,
                254,
                255,
                184,
                222,
                148
              ]
            },
            "0x0001": {
              "attribute_id": "0x0001",
              "attribute_name": "file_offset",
              "value_type": [
                "0x23",
                "uint32_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 4294967295
            },
            "0x0002": {
              "attribute_id": "0x0002",
              "attribute_name": "current_file_version",
              "value_type": [
                "0x23",
                "uint32_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 33687295
            },
            "0x0006": {
              "attribute_id": "0x0006",
              "attribute_name": "image_upgrade_status",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x0007": {
              "attribute_id": "0x0007",
              "attribute_name": "manufacturer_id",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 4190
            },
            "0x0008": {
              "attribute_id": "0x0008",
              "attribute_name": "image_type_id",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 65535
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 3
            }
          },
          "commands_received": {},
          "commands_generated": {
            "0x01": {
              "command_id": "0x01",
              "command_name": "1",
              "command_args": "not_in_zcl"
            },
            "0x03": {
              "command_id": "0x03",
              "command_name": "3",
              "command_args": "not_in_zcl"
            },
            "0x06": {
              "command_id": "0x06",
              "command_name": "6",
              "command_args": "not_in_zcl"
            }
          }
        }
      }
    },
    {
      "id": 21,
      "device_type": "0x0104",
      "profile": "0x0104",
      "in_clusters": {
        "0x0000": {
          "cluster_id": "0x0000",
          "title": "Basic",
          "name": "basic",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "zcl_version",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 3
            },
            "0x0001": {
              "attribute_id": "0x0001",
              "attribute_name": "app_version",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            },
            "0x0002": {
              "attribute_id": "0x0002",
              "attribute_name": "stack_version",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 6
            },
            "0x0003": {
              "attribute_id": "0x0003",
              "attribute_name": "hw_version",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 1
            },
            "0x0004": {
              "attribute_id": "0x0004",
              "attribute_name": "manufacturer",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": "Schneider Electric"
            },
            "0x0005": {
              "attribute_id": "0x0005",
              "attribute_name": "model",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": "CH/DIMMER/1"
            },
            "0x0006": {
              "attribute_id": "0x0006",
              "attribute_name": "date_code",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": ""
            },
            "0x0007": {
              "attribute_id": "0x0007",
              "attribute_name": "power_source",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 1
            },
            "0x0008": {
              "attribute_id": "0x0008",
              "attribute_name": "generic_device_class",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x0009": {
              "attribute_id": "0x0009",
              "attribute_name": "generic_device_type",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 225
            },
            "0x000a": {
              "attribute_id": "0x000a",
              "attribute_name": "product_code",
              "value_type": [
                "0x41",
                "LVBytes",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": ""
            },
            "0x000b": {
              "attribute_id": "0x000b",
              "attribute_name": "product_url",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": "http://www.schneider-electric.com"
            },
            "0x4000": {
              "attribute_id": "0x4000",
              "attribute_name": "sw_build_id",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": "002.002.006 R"
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            },
            "0xe001": {
              "attribute_id": "0xe001",
              "attribute_name": "57345",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "002.002.006 R"
            },
            "0xe002": {
              "attribute_id": "0xe002",
              "attribute_name": "57346",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "001.000.000"
            },
            "0xe004": {
              "attribute_id": "0xe004",
              "attribute_name": "57348",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "363036443100000"
            },
            "0xe007": {
              "attribute_id": "0xe007",
              "attribute_name": "57351",
              "value_type": [
                "0x31",
                "enum16",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": 17434
            },
            "0xe008": {
              "attribute_id": "0xe008",
              "attribute_name": "57352",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "Wiser Light"
            },
            "0xe009": {
              "attribute_id": "0xe009",
              "attribute_name": "57353",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "CH/DIMMER/1"
            },
            "0xe00a": {
              "attribute_id": "0xe00a",
              "attribute_name": "57354",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": "Wiser Home"
            },
            "0xe00b": {
              "attribute_id": "0xe00b",
              "attribute_name": "57355",
              "value_type": [
                "0x42",
                "CharacterString",
                "Discrete"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190
            }
          },
          "commands_received": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "reset_fact_default",
              "command_arguments": "<class 'zigpy.zcl.foundation.reset_fact_default'>"
            }
          },
          "commands_generated": {}
        },
        "0x0003": {
          "cluster_id": "0x0003",
          "title": "Identify",
          "name": "identify",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "identify_time",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "attribute_value": 0
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 1
            }
          },
          "commands_received": {},
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "identify_query_response",
              "command_args": "<class 'zigpy.zcl.foundation.identify_query_response'>"
            }
          }
        },
        "0x0b05": {
          "cluster_id": "0x0b05",
          "title": "Diagnostic",
          "name": "diagnostic",
          "attributes": {
            "0x011c": {
              "attribute_id": "0x011c",
              "attribute_name": "last_message_lqi",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0x011d": {
              "attribute_id": "0x011d",
              "attribute_name": "last_message_rssi",
              "value_type": [
                "0x28",
                "int8s",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 0
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            }
          },
          "commands_received": {},
          "commands_generated": {}
        },
        "0xff17": {
          "cluster_id": "0xff17",
          "title": "Manufacturer Specific",
          "name": "manufacturer_specific",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "0",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 0
            },
            "0x0001": {
              "attribute_id": "0x0001",
              "attribute_name": "1",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 8
            },
            "0x0010": {
              "attribute_id": "0x0010",
              "attribute_name": "16",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 0
            },
            "0x0011": {
              "attribute_id": "0x0011",
              "attribute_name": "17",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 0
            },
            "0x0020": {
              "attribute_id": "0x0020",
              "attribute_name": "32",
              "value_type": [
                "0x20",
                "uint8_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 1
            },
            "0x0021": {
              "attribute_id": "0x0021",
              "attribute_name": "33",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|WRITE|REPORT",
              "access_acl": 7,
              "manf_id": 4190,
              "attribute_value": 0
            },
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "65533",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "manf_id": 4190,
              "attribute_value": 1
            }
          },
          "commands_received": {},
          "commands_generated": {}
        }
      },
      "out_clusters": {
        "0x0003": {
          "cluster_id": "0x0003",
          "title": "Identify",
          "name": "identify",
          "attributes": {
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 1
            }
          },
          "commands_received": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "identify",
              "command_arguments": "<class 'zigpy.zcl.foundation.identify'>"
            }
          },
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "identify_query_response",
              "command_args": "<class 'zigpy.zcl.foundation.identify_query_response'>"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "1",
              "command_args": "not_in_zcl"
            }
          }
        },
        "0x0004": {
          "cluster_id": "0x0004",
          "title": "Groups",
          "name": "groups",
          "attributes": {
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 1
            }
          },
          "commands_received": {},
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "add_response",
              "command_args": "<class 'zigpy.zcl.foundation.add_response'>"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "view_response",
              "command_args": "<class 'zigpy.zcl.foundation.view_response'>"
            },
            "0x02": {
              "command_id": "0x02",
              "command_name": "get_membership_response",
              "command_args": "<class 'zigpy.zcl.foundation.get_membership_response'>"
            },
            "0x03": {
              "command_id": "0x03",
              "command_name": "remove_response",
              "command_args": "<class 'zigpy.zcl.foundation.remove_response'>"
            },
            "0x04": {
              "command_id": "0x04",
              "command_name": "4",
              "command_args": "not_in_zcl"
            },
            "0x05": {
              "command_id": "0x05",
              "command_name": "5",
              "command_args": "not_in_zcl"
            }
          }
        },
        "0x0005": {
          "cluster_id": "0x0005",
          "title": "Scenes",
          "name": "scenes",
          "attributes": {
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            }
          },
          "commands_received": {},
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "add_scene_response",
              "command_args": "<class 'zigpy.zcl.foundation.add_scene_response'>"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "view_response",
              "command_args": "<class 'zigpy.zcl.foundation.view_response'>"
            },
            "0x02": {
              "command_id": "0x02",
              "command_name": "remove_scene_response",
              "command_args": "<class 'zigpy.zcl.foundation.remove_scene_response'>"
            },
            "0x03": {
              "command_id": "0x03",
              "command_name": "remove_all_scenes_response",
              "command_args": "<class 'zigpy.zcl.foundation.remove_all_scenes_response'>"
            },
            "0x04": {
              "command_id": "0x04",
              "command_name": "store_scene_response",
              "command_args": "<class 'zigpy.zcl.foundation.store_scene_response'>"
            },
            "0x05": {
              "command_id": "0x05",
              "command_name": "5",
              "command_args": "not_in_zcl"
            },
            "0x06": {
              "command_id": "0x06",
              "command_name": "get_scene_membership_response",
              "command_args": "<class 'zigpy.zcl.foundation.get_scene_membership_response'>"
            }
          }
        },
        "0x0006": {
          "cluster_id": "0x0006",
          "title": "On/Off",
          "name": "on_off",
          "attributes": {
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            }
          },
          "commands_received": {},
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "0",
              "command_args": "not_in_zcl"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "1",
              "command_args": "not_in_zcl"
            },
            "0x02": {
              "command_id": "0x02",
              "command_name": "2",
              "command_args": "not_in_zcl"
            }
          }
        },
        "0x0008": {
          "cluster_id": "0x0008",
          "title": "Level control",
          "name": "level",
          "attributes": {
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "cluster_revision",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            }
          },
          "commands_received": {},
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "0",
              "command_args": "not_in_zcl"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "1",
              "command_args": "not_in_zcl"
            },
            "0x02": {
              "command_id": "0x02",
              "command_name": "2",
              "command_args": "not_in_zcl"
            },
            "0x03": {
              "command_id": "0x03",
              "command_name": "3",
              "command_args": "not_in_zcl"
            },
            "0x04": {
              "command_id": "0x04",
              "command_name": "4",
              "command_args": "not_in_zcl"
            },
            "0x05": {
              "command_id": "0x05",
              "command_name": "5",
              "command_args": "not_in_zcl"
            },
            "0x06": {
              "command_id": "0x06",
              "command_name": "6",
              "command_args": "not_in_zcl"
            },
            "0x07": {
              "command_id": "0x07",
              "command_name": "7",
              "command_args": "not_in_zcl"
            }
          }
        },
        "0x0102": {
          "cluster_id": "0x0102",
          "title": "Window Covering",
          "name": "window_covering",
          "attributes": {
            "0xfffd": {
              "attribute_id": "0xfffd",
              "attribute_name": "65533",
              "value_type": [
                "0x21",
                "uint16_t",
                "Analog"
              ],
              "access": "READ|REPORT",
              "access_acl": 5,
              "attribute_value": 2
            }
          },
          "commands_received": {},
          "commands_generated": {
            "0x00": {
              "command_id": "0x00",
              "command_name": "0",
              "command_args": "not_in_zcl"
            },
            "0x01": {
              "command_id": "0x01",
              "command_name": "1",
              "command_args": "not_in_zcl"
            },
            "0x02": {
              "command_id": "0x02",
              "command_name": "2",
              "command_args": "not_in_zcl"
            }
          }
        }
      }
    },
    {
      "id": 242,
      "device_type": "0x0061",
      "profile": "0xa1e0"
    }
  ]
}

Z2MQTT support of these features
Github discussion on adding support to Z2MQTT

My interpretation of the above is that the cluster "0xff17" as seen in the scan results is related to the LED indicator mode (code snippet below). The ZHA UI for this cluster does not show any attributes or commands.

        "0xff17": {
          "cluster_id": "0xff17",
          "title": "Manufacturer Specific",
          "name": "manufacturer_specific",
          "attributes": {
            "0x0000": {
              "attribute_id": "0x0000",
              "attribute_name": "0",
              "value_type": [
                "0x30",
                "enum8",
                "Discrete"
              ]

image

I am more than happy to spend time testing and debugging but I must stress that I have next to no experience with ZHA and am totally lost when it comes to json, quirks, etc.

@alexeiw123 alexeiw123 changed the title [Device Support Request] [Device Support Request] Clipsal/Schneider 41EPBDWCLMZ additional features missing Dec 10, 2023
@alexeiw123 alexeiw123 changed the title [Device Support Request] Clipsal/Schneider 41EPBDWCLMZ additional features missing [Device Support Request] Clipsal/Schneider Wiser 41EPBDWCLMZ additional features missing Dec 10, 2023
@alexeiw123
Copy link
Author

I have found that calling the following service using ZHA toolkit successfully changes the LED indicator mode:

service: zha_toolkit.attr_write
data:
  ieee: light.entityname
  endpoint: 21
  cluster: 0xFF17
  attribute: 0
  attr_val: 0
  manf: 0x105E

where attr_val: is:
0 = indicator is on when load is on, 1 = Indicator is always on, 2 = indicator is on when load is off, 3 = Indicator is always off

How can we expose these as a UI option for ZHA?

@alexeiw123
Copy link
Author

likewise, the values for min and maxi brightness can be adjusted by calling the following services and adjusting attr_val between 1 and 254:

Min level:

service: zha_toolkit.attr_write
data:
  ieee: light.entityname
  endpoint: 3
  cluster: 0x0301
  attribute: 0x0010
  attr_val: 1

Max level:

service: zha_toolkit.attr_write
data:
  ieee: light.entityname
  endpoint: 3
  cluster: 0x0301
  attribute: 0x0011
  attr_val: 254

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant