zigpy / zha-device-handlers

ZHA device handlers bridge the functionality gap created when manufacturers deviate from the ZCL specification, handling deviations and exceptions by parsing custom messages to and from Zigbee devices.
Apache License 2.0
717 stars 665 forks source link

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

Open alexeiw123 opened 9 months ago

alexeiw123 commented 9 months ago

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 ```json { "node_descriptor": "NodeDescriptor(logical_type=, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=, mac_capability_flags=, manufacturer_code=4190, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=, *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 ```json { "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": "" } }, "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": "" } } }, "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": "" }, "0x01": { "command_id": "0x01", "command_name": "view", "command_arguments": "" }, "0x02": { "command_id": "0x02", "command_name": "get_membership", "command_arguments": "" }, "0x03": { "command_id": "0x03", "command_name": "remove", "command_arguments": "" }, "0x04": { "command_id": "0x04", "command_name": "remove_all", "command_arguments": "" }, "0x05": { "command_id": "0x05", "command_name": "add_if_identifying", "command_arguments": "" } }, "commands_generated": { "0x00": { "command_id": "0x00", "command_name": "add_response", "command_args": "" }, "0x01": { "command_id": "0x01", "command_name": "view_response", "command_args": "" }, "0x02": { "command_id": "0x02", "command_name": "get_membership_response", "command_args": "" }, "0x03": { "command_id": "0x03", "command_name": "remove_response", "command_args": "" } } }, "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": "" }, "0x01": { "command_id": "0x01", "command_name": "view", "command_arguments": "" }, "0x02": { "command_id": "0x02", "command_name": "remove", "command_arguments": "" }, "0x03": { "command_id": "0x03", "command_name": "remove_all", "command_arguments": "" }, "0x04": { "command_id": "0x04", "command_name": "store", "command_arguments": "" }, "0x05": { "command_id": "0x05", "command_name": "recall", "command_arguments": "" }, "0x06": { "command_id": "0x06", "command_name": "get_scene_membership", "command_arguments": "" } }, "commands_generated": { "0x00": { "command_id": "0x00", "command_name": "add_scene_response", "command_args": "" }, "0x01": { "command_id": "0x01", "command_name": "view_response", "command_args": "" }, "0x02": { "command_id": "0x02", "command_name": "remove_scene_response", "command_args": "" }, "0x03": { "command_id": "0x03", "command_name": "remove_all_scenes_response", "command_args": "" }, "0x04": { "command_id": "0x04", "command_name": "store_scene_response", "command_args": "" }, "0x06": { "command_id": "0x06", "command_name": "get_scene_membership_response", "command_args": "" } } }, "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": "" } }, "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": "" } } }, "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": "" } }, "commands_generated": { "0x00": { "command_id": "0x00", "command_name": "identify_query_response", "command_args": "" }, "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": "" }, "0x01": { "command_id": "0x01", "command_name": "view_response", "command_args": "" }, "0x02": { "command_id": "0x02", "command_name": "get_membership_response", "command_args": "" }, "0x03": { "command_id": "0x03", "command_name": "remove_response", "command_args": "" }, "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": "" }, "0x01": { "command_id": "0x01", "command_name": "view_response", "command_args": "" }, "0x02": { "command_id": "0x02", "command_name": "remove_scene_response", "command_args": "" }, "0x03": { "command_id": "0x03", "command_name": "remove_all_scenes_response", "command_args": "" }, "0x04": { "command_id": "0x04", "command_name": "store_scene_response", "command_args": "" }, "0x05": { "command_id": "0x05", "command_name": "5", "command_args": "not_in_zcl" }, "0x06": { "command_id": "0x06", "command_name": "get_scene_membership_response", "command_args": "" } } }, "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 commented 9 months ago

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 commented 9 months ago

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
github-actions[bot] commented 3 months ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment πŸ‘ This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

meremortals70 commented 3 months ago

I think the bot should stay out of itπŸ˜€

the controls are still needed for this device. Please add.