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] AQARA wall switch #3576

Open
hybrixxx opened this issue Dec 3, 2024 · 1 comment
Open

[Device Support Request] AQARA wall switch #3576

hybrixxx opened this issue Dec 3, 2024 · 1 comment

Comments

@hybrixxx
Copy link

hybrixxx commented Dec 3, 2024

Problem description

I have a ZHA setup with a Sonoff P dongle and multiple devices (Tuya switchs, tuya relays, aqara door sensor, aqara temp sensor, aqara switchs, philips bulbs, ...). The problem is that randomly the Aqara wired switchs (I have different models, with and without neutral, one button, two button...but for example the QBKG12LM for this issue) become irresponsive. If I manually turn off/on them, I can see the status update in HA, but if I try to turn it off/on from HA, it doesn't work, and this just happens sometimes randomly, maybe for 1 min or 10 min, and then suddleny work again flawlessly.

Solution description

Don't know, open to any which doesn't mean replacing the aqara wall switchs.

Screenshots/Video

Screenshots/Video

[Paste/upload your media here]

Device signature

Device signature
{
  "node_descriptor": {
    "logical_type": 1,
    "complex_descriptor_available": 0,
    "user_descriptor_available": 0,
    "reserved": 0,
    "aps_flags": 0,
    "frequency_band": 8,
    "mac_capability_flags": 132,
    "manufacturer_code": 4151,
    "maximum_buffer_size": 127,
    "maximum_incoming_transfer_size": 100,
    "server_mask": 1,
    "maximum_outgoing_transfer_size": 100,
    "descriptor_capability_field": 0
  },
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x0006",
      "input_clusters": [
        "0x0000",
        "0x0001",
        "0x0002",
        "0x0003",
        "0x000a",
        "0x0019"
      ],
      "output_clusters": [
        "0x0000",
        "0x000a",
        "0x0019"
      ]
    },
    "2": {
      "profile_id": "0x0104",
      "device_type": "0x0000",
      "input_clusters": [
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0010"
      ],
      "output_clusters": []
    },
    "3": {
      "profile_id": "0x0104",
      "device_type": "0x0000",
      "input_clusters": [
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0010"
      ],
      "output_clusters": []
    },
    "4": {
      "profile_id": "0x0104",
      "device_type": "0x0000",
      "input_clusters": [
        "0x0006",
        "0x0012"
      ],
      "output_clusters": []
    },
    "5": {
      "profile_id": "0x0104",
      "device_type": "0x0000",
      "input_clusters": [
        "0x0006",
        "0x0012"
      ],
      "output_clusters": []
    }
  },
  "manufacturer": "LUMI",
  "model": "lumi.ctrl_neutral2",
  "class": "zhaquirks.xiaomi.aqara.ctrl_neutral.CtrlNeutral_2G"
}

Diagnostic information

No response

Logs

Logs
[Paste the logs here]

Custom quirk

Custom quirk
[Paste your custom quirk here]

Additional information

No response

@hybrixxx
Copy link
Author

hybrixxx commented Dec 3, 2024

Attaching the diagnostics here, as it was saying comment is too log in previous message:

`

Diagnostic information

{
   "home_assistant": {
      "installation_type": "Home Assistant Supervised",
      "version": "2024.11.3",
      "dev": false,
      "hassio": true,
      "virtualenv": false,
      "python_version": "3.12.4",
      "docker": true,
      "arch": "x86_64",
      "timezone": "Europe/Madrid",
      "os_name": "Linux",
      "os_version": "5.10.0-19-amd64",
      "supervisor": "2024.11.4",
      "host_os": "Debian GNU/Linux 11 (bullseye)",
      "docker_version": "20.10.21",
      "chassis": "vm",
      "run_as_root": true
   },
   "custom_components": {
      "zha_toolkit": {
         "documentation": "https://github.com/mdeweerd/zha-toolkit",
         "version": "v1.1.19",
         "requirements": [
            "aiofiles>=0.4.0",
            "pytz>=2016.10"
         ]
      },
      "tesla_custom": {
         "documentation": "https://github.com/alandtse/tesla/wiki",
         "version": "3.24.3",
         "requirements": [
            "teslajsonpy==3.12.3"
         ]
      },
      "hacs": {
         "documentation": "https://hacs.xyz/docs/configuration/start",
         "version": "2.0.1",
         "requirements": [
            "aiogithubapi>=22.10.1"
         ]
      },
      "additional_ca": {
         "documentation": "https://www.github.com/Athozs/hass-additional-ca",
         "version": "0.0.0",
         "requirements": [
            "aiofiles==24.1.0"
         ]
      },
      "localtuya": {
         "documentation": "https://github.com/rospogrigio/localtuya/",
         "version": "5.2.1",
         "requirements": []
      },
      "sonoff": {
         "documentation": "https://github.com/AlexxIT/SonoffLAN",
         "version": "3.8.1",
         "requirements": [
            "pycryptodome>=3.6.6"
         ]
      },
      "alexa_media": {
         "documentation": "https://github.com/alandtse/alexa_media_player/wiki",
         "version": "4.13.7",
         "requirements": [
            "alexapy==1.29.4",
            "packaging>=20.3",
            "wrapt>=1.14.0"
         ]
      },
      "huawei_solar": {
         "documentation": "https://github.com/Emilv2/huawei_solar",
         "version": "0.1.0",
         "requirements": [
            "huawei-solar>=0.1.0"
         ]
      }
   },
   "integration_manifest": {
      "domain": "zha",
      "name": "Zigbee Home Automation",
      "after_dependencies": [
         "hassio",
         "onboarding",
         "usb"
      ],
      "codeowners": [
         "dmulcahey",
         "adminiuga",
         "puddly",
         "TheJulianJES"
      ],
      "config_flow": true,
      "dependencies": [
         "file_upload"
      ],
      "documentation": "https://www.home-assistant.io/integrations/zha",
      "iot_class": "local_polling",
      "loggers": [
         "aiosqlite",
         "bellows",
         "crccheck",
         "pure_pcapy3",
         "zhaquirks",
         "zigpy",
         "zigpy_deconz",
         "zigpy_xbee",
         "zigpy_zigate",
         "zigpy_znp",
         "zha",
         "universal_silabs_flasher"
      ],
      "requirements": [
         "universal-silabs-flasher==0.0.25",
         "zha==0.0.39"
      ],
      "usb": [
         {
            "vid": "10C4",
            "pid": "EA60",
            "description": "*2652*",
            "known_devices": [
               "slae.sh cc2652rb stick"
            ]
         },
         {
            "vid": "10C4",
            "pid": "EA60",
            "description": "*slzb-07*",
            "known_devices": [
               "smlight slzb-07"
            ]
         },
         {
            "vid": "1A86",
            "pid": "55D4",
            "description": "*sonoff*plus*",
            "known_devices": [
               "sonoff zigbee dongle plus v2"
            ]
         },
         {
            "vid": "10C4",
            "pid": "EA60",
            "description": "*sonoff*plus*",
            "known_devices": [
               "sonoff zigbee dongle plus"
            ]
         },
         {
            "vid": "10C4",
            "pid": "EA60",
            "description": "*tubeszb*",
            "known_devices": [
               "TubesZB Coordinator"
            ]
         },
         {
            "vid": "1A86",
            "pid": "7523",
            "description": "*tubeszb*",
            "known_devices": [
               "TubesZB Coordinator"
            ]
         },
         {
            "vid": "1A86",
            "pid": "7523",
            "description": "*zigstar*",
            "known_devices": [
               "ZigStar Coordinators"
            ]
         },
         {
            "vid": "1CF1",
            "pid": "0030",
            "description": "*conbee*",
            "known_devices": [
               "Conbee II"
            ]
         },
         {
            "vid": "0403",
            "pid": "6015",
            "description": "*conbee*",
            "known_devices": [
               "Conbee III"
            ]
         },
         {
            "vid": "10C4",
            "pid": "8A2A",
            "description": "*zigbee*",
            "known_devices": [
               "Nortek HUSBZB-1"
            ]
         },
         {
            "vid": "0403",
            "pid": "6015",
            "description": "*zigate*",
            "known_devices": [
               "ZiGate+"
            ]
         },
         {
            "vid": "10C4",
            "pid": "EA60",
            "description": "*zigate*",
            "known_devices": [
               "ZiGate"
            ]
         },
         {
            "vid": "10C4",
            "pid": "8B34",
            "description": "*bv 2010/10*",
            "known_devices": [
               "Bitron Video AV2010/10"
            ]
         }
      ],
      "zeroconf": [
         {
            "type": "_esphomelib._tcp.local.",
            "name": "tube*"
         },
         {
            "type": "_zigate-zigbee-gateway._tcp.local.",
            "name": "*zigate*"
         },
         {
            "type": "_zigstar_gw._tcp.local.",
            "name": "*zigstar*"
         },
         {
            "type": "_uzg-01._tcp.local.",
            "name": "uzg-01*"
         },
         {
            "type": "_slzb-06._tcp.local.",
            "name": "slzb-06*"
         },
         {
            "type": "_xzg._tcp.local.",
            "name": "xzg*"
         },
         {
            "type": "_czc._tcp.local.",
            "name": "czc*"
         }
      ],
      "is_built_in": true,
      "overwrites_built_in": false
   },
   "setup_times": {
      "null": {
         "setup": 3.5332050174474716E-5
      },
      "9735f5cdb76e2c7505b6614c6b701001": {
         "wait_import_platforms": -0.025668065063655376,
         "config_entry_setup": 14.64879018906504
      }
   },
   "data": {
      "ieee": "**REDACTED**",
      "nwk": 8172,
      "manufacturer": "LUMI",
      "model": "lumi.ctrl_neutral2",
      "name": "LUMI lumi.ctrl_neutral2",
      "quirk_applied": true,
      "quirk_class": "zhaquirks.xiaomi.aqara.ctrl_neutral.CtrlNeutral_2G",
      "manufacturer_code": 4151,
      "power_source": "Mains",
      "lqi": 135,
      "last_seen": "2024-12-02T20:53:52",
      "available": true,
      "device_type": "Router",
      "signature": {
         "node_descriptor": {
            "logical_type": 1,
            "complex_descriptor_available": 0,
            "user_descriptor_available": 0,
            "reserved": 0,
            "aps_flags": 0,
            "frequency_band": 8,
            "mac_capability_flags": 132,
            "manufacturer_code": 4151,
            "maximum_buffer_size": 127,
            "maximum_incoming_transfer_size": 100,
            "server_mask": 1,
            "maximum_outgoing_transfer_size": 100,
            "descriptor_capability_field": 0
         },
         "endpoints": {
            "1": {
               "profile_id": "0x0104",
               "device_type": "0x0006",
               "input_clusters": [
                  "0x0000",
                  "0x0001",
                  "0x0002",
                  "0x0003",
                  "0x000a",
                  "0x0019"
               ],
               "output_clusters": [
                  "0x0000",
                  "0x000a",
                  "0x0019"
               ]
            },
            "2": {
               "profile_id": "0x0104",
               "device_type": "0x0000",
               "input_clusters": [
                  "0x0004",
                  "0x0005",
                  "0x0006",
                  "0x0010"
               ],
               "output_clusters": []
            },
            "3": {
               "profile_id": "0x0104",
               "device_type": "0x0000",
               "input_clusters": [
                  "0x0004",
                  "0x0005",
                  "0x0006",
                  "0x0010"
               ],
               "output_clusters": []
            },
            "4": {
               "profile_id": "0x0104",
               "device_type": "0x0000",
               "input_clusters": [
                  "0x0006",
                  "0x0012"
               ],
               "output_clusters": []
            },
            "5": {
               "profile_id": "0x0104",
               "device_type": "0x0000",
               "input_clusters": [
                  "0x0006",
                  "0x0012"
               ],
               "output_clusters": []
            }
         },
         "manufacturer": "LUMI",
         "model": "lumi.ctrl_neutral2"
      },
      "active_coordinator": false,
      "entities": [
         {
            "entity_id": "button.switch_salon_ventilador_identify",
            "name": "LUMI lumi.ctrl_neutral2"
         },
         {
            "entity_id": "sensor.switch_salon_ventilador_device_temperature",
            "name": "LUMI lumi.ctrl_neutral2"
         },
         {
            "entity_id": "switch.lampara_del_ventilador",
            "name": "LUMI lumi.ctrl_neutral2"
         },
         {
            "entity_id": "switch.switch_salon_ventilador_switch_2",
            "name": "LUMI lumi.ctrl_neutral2"
         },
         {
            "entity_id": "switch.switch_salon_ventilador_switch_3",
            "name": "LUMI lumi.ctrl_neutral2"
         },
         {
            "entity_id": "switch.switch_salon_ventilador_switch_4",
            "name": "LUMI lumi.ctrl_neutral2"
         },
         {
            "entity_id": "update.switch_salon_ventilador_firmware",
            "name": "LUMI lumi.ctrl_neutral2"
         }
      ],
      "neighbors": [
         {
            "device_type": "Router",
            "rx_on_when_idle": "On",
            "relationship": "Parent",
            "extended_pan_id": "**REDACTED**",
            "ieee": "**REDACTED**",
            "nwk": "0xF943",
            "permit_joining": "Unknown",
            "depth": "1",
            "lqi": "121"
         }
      ],
      "routes": [],
      "endpoint_names": [
         {
            "name": "REMOTE_CONTROL"
         },
         {
            "name": "ON_OFF_SWITCH"
         },
         {
            "name": "ON_OFF_SWITCH"
         },
         {
            "name": "ON_OFF_SWITCH"
         },
         {
            "name": "ON_OFF_SWITCH"
         }
      ],
      "user_given_name": "Switch salon ventilador",
      "device_reg_id": "3dbfad05212fc3784571ab36de37a77e",
      "area_id": "cd31f6c7b8f14365ab3701deda5d83f1",
      "cluster_details": {
         "1": {
            "device_type": {
               "name": "REMOTE_CONTROL",
               "id": 6
            },
            "profile_id": 260,
            "in_clusters": {
               "0x0000": {
                  "endpoint_attribute": "basic",
                  "attributes": {
                     "0x0013": {
                        "attribute": "ZCLAttributeDef(id=0x0013, name='alarm_mask', type=<flag 'AlarmMask'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='app_version', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                        "value": 1
                     },
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0006": {
                        "attribute": "ZCLAttributeDef(id=0x0006, name='date_code', type=<class 'zigpy.types.basic.LimitedCharString.<locals>.LimitedCharString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xff22": {
                        "attribute": "ZCLAttributeDef(id=0xFF22, name='decoupled_mode_left', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write|Report: 11>, mandatory=False, is_manufacturer_specific=True)"
                     },
                     "0xff23": {
                        "attribute": "ZCLAttributeDef(id=0xFF23, name='decoupled_mode_right', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write|Report: 11>, mandatory=False, is_manufacturer_specific=True)"
                     },
                     "0x0012": {
                        "attribute": "ZCLAttributeDef(id=0x0012, name='device_enabled', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0014": {
                        "attribute": "ZCLAttributeDef(id=0x0014, name='disable_local_config', type=<flag 'DisableLocalConfig'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0008": {
                        "attribute": "ZCLAttributeDef(id=0x0008, name='generic_device_class', type=<enum 'GenericDeviceClass'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0009": {
                        "attribute": "ZCLAttributeDef(id=0x0009, name='generic_device_type', type=<enum 'GenericLightingDeviceType'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0003": {
                        "attribute": "ZCLAttributeDef(id=0x0003, name='hw_version', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0010": {
                        "attribute": "ZCLAttributeDef(id=0x0010, name='location_desc', type=<class 'zigpy.types.basic.LimitedCharString.<locals>.LimitedCharString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='manufacturer', type=<class 'zigpy.types.basic.LimitedCharString.<locals>.LimitedCharString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                        "value": "LUMI"
                     },
                     "0x000c": {
                        "attribute": "ZCLAttributeDef(id=0x000C, name='manufacturer_version_details', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0005": {
                        "attribute": "ZCLAttributeDef(id=0x0005, name='model', type=<class 'zigpy.types.basic.LimitedCharString.<locals>.LimitedCharString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                        "value": "lumi.ctrl_neutral2"
                     },
                     "0x0011": {
                        "attribute": "ZCLAttributeDef(id=0x0011, name='physical_env', type=<enum 'PhysicalEnvironment'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0007": {
                        "attribute": "ZCLAttributeDef(id=0x0007, name='power_source', type=<enum 'PowerSource'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x000a": {
                        "attribute": "ZCLAttributeDef(id=0x000A, name='product_code', type=<class 'zigpy.types.basic.LVBytes'>, zcl_type=<DataTypeId.octstr: 65>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000e": {
                        "attribute": "ZCLAttributeDef(id=0x000E, name='product_label', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000b": {
                        "attribute": "ZCLAttributeDef(id=0x000B, name='product_url', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000d": {
                        "attribute": "ZCLAttributeDef(id=0x000D, name='serial_number', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0002": {
                        "attribute": "ZCLAttributeDef(id=0x0002, name='stack_version', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4000": {
                        "attribute": "ZCLAttributeDef(id=0x4000, name='sw_build_id', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='zcl_version', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0003": {
                  "endpoint_attribute": "identify",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='identify_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0001": {
                  "endpoint_attribute": "power",
                  "attributes": {
                     "0x0052": {
                        "attribute": "ZCLAttributeDef(id=0x0052, name='battery_2_a_hr_rating', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0055": {
                        "attribute": "ZCLAttributeDef(id=0x0055, name='battery_2_alarm_mask', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x005e": {
                        "attribute": "ZCLAttributeDef(id=0x005E, name='battery_2_alarm_state', type=<flag 'bitmap32'>, zcl_type=<DataTypeId.map32: 27>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0050": {
                        "attribute": "ZCLAttributeDef(id=0x0050, name='battery_2_manufacturer', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x005a": {
                        "attribute": "ZCLAttributeDef(id=0x005A, name='battery_2_percent_min_thres', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x005b": {
                        "attribute": "ZCLAttributeDef(id=0x005B, name='battery_2_percent_thres1', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x005c": {
                        "attribute": "ZCLAttributeDef(id=0x005C, name='battery_2_percent_thres2', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x005d": {
                        "attribute": "ZCLAttributeDef(id=0x005D, name='battery_2_percent_thres3', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0041": {
                        "attribute": "ZCLAttributeDef(id=0x0041, name='battery_2_percentage_remaining', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0053": {
                        "attribute": "ZCLAttributeDef(id=0x0053, name='battery_2_quantity', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0054": {
                        "attribute": "ZCLAttributeDef(id=0x0054, name='battery_2_rated_voltage', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0051": {
                        "attribute": "ZCLAttributeDef(id=0x0051, name='battery_2_size', type=<enum 'BatterySize'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0056": {
                        "attribute": "ZCLAttributeDef(id=0x0056, name='battery_2_volt_min_thres', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0057": {
                        "attribute": "ZCLAttributeDef(id=0x0057, name='battery_2_volt_thres1', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0058": {
                        "attribute": "ZCLAttributeDef(id=0x0058, name='battery_2_volt_thres2', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0059": {
                        "attribute": "ZCLAttributeDef(id=0x0059, name='battery_2_volt_thres3', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0040": {
                        "attribute": "ZCLAttributeDef(id=0x0040, name='battery_2_voltage', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0072": {
                        "attribute": "ZCLAttributeDef(id=0x0072, name='battery_3_a_hr_rating', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0075": {
                        "attribute": "ZCLAttributeDef(id=0x0075, name='battery_3_alarm_mask', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x007e": {
                        "attribute": "ZCLAttributeDef(id=0x007E, name='battery_3_alarm_state', type=<flag 'bitmap32'>, zcl_type=<DataTypeId.map32: 27>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0070": {
                        "attribute": "ZCLAttributeDef(id=0x0070, name='battery_3_manufacturer', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x007a": {
                        "attribute": "ZCLAttributeDef(id=0x007A, name='battery_3_percent_min_thres', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x007b": {
                        "attribute": "ZCLAttributeDef(id=0x007B, name='battery_3_percent_thres1', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x007c": {
                        "attribute": "ZCLAttributeDef(id=0x007C, name='battery_3_percent_thres2', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x007d": {
                        "attribute": "ZCLAttributeDef(id=0x007D, name='battery_3_percent_thres3', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0061": {
                        "attribute": "ZCLAttributeDef(id=0x0061, name='battery_3_percentage_remaining', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0073": {
                        "attribute": "ZCLAttributeDef(id=0x0073, name='battery_3_quantity', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0074": {
                        "attribute": "ZCLAttributeDef(id=0x0074, name='battery_3_rated_voltage', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0071": {
                        "attribute": "ZCLAttributeDef(id=0x0071, name='battery_3_size', type=<enum 'BatterySize'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0076": {
                        "attribute": "ZCLAttributeDef(id=0x0076, name='battery_3_volt_min_thres', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0077": {
                        "attribute": "ZCLAttributeDef(id=0x0077, name='battery_3_volt_thres1', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0078": {
                        "attribute": "ZCLAttributeDef(id=0x0078, name='battery_3_volt_thres2', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0079": {
                        "attribute": "ZCLAttributeDef(id=0x0079, name='battery_3_volt_thres3', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0060": {
                        "attribute": "ZCLAttributeDef(id=0x0060, name='battery_3_voltage', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0032": {
                        "attribute": "ZCLAttributeDef(id=0x0032, name='battery_a_hr_rating', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0035": {
                        "attribute": "ZCLAttributeDef(id=0x0035, name='battery_alarm_mask', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x003e": {
                        "attribute": "ZCLAttributeDef(id=0x003E, name='battery_alarm_state', type=<flag 'bitmap32'>, zcl_type=<DataTypeId.map32: 27>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0030": {
                        "attribute": "ZCLAttributeDef(id=0x0030, name='battery_manufacturer', type=<class 'zigpy.types.basic.LimitedCharString.<locals>.LimitedCharString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x003a": {
                        "attribute": "ZCLAttributeDef(id=0x003A, name='battery_percent_min_thres', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x003b": {
                        "attribute": "ZCLAttributeDef(id=0x003B, name='battery_percent_thres1', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x003c": {
                        "attribute": "ZCLAttributeDef(id=0x003C, name='battery_percent_thres2', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x003d": {
                        "attribute": "ZCLAttributeDef(id=0x003D, name='battery_percent_thres3', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0021": {
                        "attribute": "ZCLAttributeDef(id=0x0021, name='battery_percentage_remaining', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0033": {
                        "attribute": "ZCLAttributeDef(id=0x0033, name='battery_quantity', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0034": {
                        "attribute": "ZCLAttributeDef(id=0x0034, name='battery_rated_voltage', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0031": {
                        "attribute": "ZCLAttributeDef(id=0x0031, name='battery_size', type=<enum 'BatterySize'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0036": {
                        "attribute": "ZCLAttributeDef(id=0x0036, name='battery_volt_min_thres', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0037": {
                        "attribute": "ZCLAttributeDef(id=0x0037, name='battery_volt_thres1', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0038": {
                        "attribute": "ZCLAttributeDef(id=0x0038, name='battery_volt_thres2', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0039": {
                        "attribute": "ZCLAttributeDef(id=0x0039, name='battery_volt_thres3', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0020": {
                        "attribute": "ZCLAttributeDef(id=0x0020, name='battery_voltage', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0010": {
                        "attribute": "ZCLAttributeDef(id=0x0010, name='mains_alarm_mask', type=<flag 'MainsAlarmMask'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='mains_frequency', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0012": {
                        "attribute": "ZCLAttributeDef(id=0x0012, name='mains_volt_max_thres', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0011": {
                        "attribute": "ZCLAttributeDef(id=0x0011, name='mains_volt_min_thres', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='mains_voltage', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0013": {
                        "attribute": "ZCLAttributeDef(id=0x0013, name='mains_voltage_dwell_trip_point', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0002": {
                  "endpoint_attribute": "device_temperature",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='current_temperature', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)",
                        "value": 2300
                     },
                     "0x0010": {
                        "attribute": "ZCLAttributeDef(id=0x0010, name='dev_temp_alarm_mask', type=<flag 'DeviceTempAlarmMask'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0014": {
                        "attribute": "ZCLAttributeDef(id=0x0014, name='high_temp_dwell_trip_point', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0012": {
                        "attribute": "ZCLAttributeDef(id=0x0012, name='high_temp_thres', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0013": {
                        "attribute": "ZCLAttributeDef(id=0x0013, name='low_temp_dwell_trip_point', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0011": {
                        "attribute": "ZCLAttributeDef(id=0x0011, name='low_temp_thres', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0002": {
                        "attribute": "ZCLAttributeDef(id=0x0002, name='max_temp_experienced', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='min_temp_experienced', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0003": {
                        "attribute": "ZCLAttributeDef(id=0x0003, name='over_temp_total_dwell', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0019": {
                  "endpoint_attribute": "ota",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0002": {
                        "attribute": "ZCLAttributeDef(id=0x0002, name='current_file_version', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0003": {
                        "attribute": "ZCLAttributeDef(id=0x0003, name='current_zigbee_stack_version', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='downloaded_file_version', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0005": {
                        "attribute": "ZCLAttributeDef(id=0x0005, name='downloaded_zigbee_stack_version', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='file_offset', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000a": {
                        "attribute": "ZCLAttributeDef(id=0x000A, name='image_stamp', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0008": {
                        "attribute": "ZCLAttributeDef(id=0x0008, name='image_type_id', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0006": {
                        "attribute": "ZCLAttributeDef(id=0x0006, name='image_upgrade_status', type=<enum 'ImageUpgradeStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0007": {
                        "attribute": "ZCLAttributeDef(id=0x0007, name='manufacturer_id', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0009": {
                        "attribute": "ZCLAttributeDef(id=0x0009, name='minimum_block_req_delay', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000b": {
                        "attribute": "ZCLAttributeDef(id=0x000B, name='upgrade_activation_policy', type=<enum 'UpgradeActivationPolicy'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='upgrade_server_id', type=<class 'zigpy.types.named.EUI64'>, zcl_type=<DataTypeId.EUI64: 240>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x000c": {
                        "attribute": "ZCLAttributeDef(id=0x000C, name='upgrade_timeout_policy', type=<enum 'UpgradeTimeoutPolicy'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x000a": {
                  "endpoint_attribute": "time",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='dst_end', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0005": {
                        "attribute": "ZCLAttributeDef(id=0x0005, name='dst_shift', type=<class 'zigpy.types.basic.int32s'>, zcl_type=<DataTypeId.int32: 43>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0003": {
                        "attribute": "ZCLAttributeDef(id=0x0003, name='dst_start', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0008": {
                        "attribute": "ZCLAttributeDef(id=0x0008, name='last_set_time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0007": {
                        "attribute": "ZCLAttributeDef(id=0x0007, name='local_time', type=<class 'zigpy.types.named.LocalTime'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0006": {
                        "attribute": "ZCLAttributeDef(id=0x0006, name='standard_time', type=<class 'zigpy.types.named.StandardTime'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='time_status', type=<flag 'TimeStatus'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0002": {
                        "attribute": "ZCLAttributeDef(id=0x0002, name='time_zone', type=<class 'zigpy.types.basic.int32s'>, zcl_type=<DataTypeId.int32: 43>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0009": {
                        "attribute": "ZCLAttributeDef(id=0x0009, name='valid_until_time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               }
            },
            "out_clusters": {
               "0x0000": {
                  "endpoint_attribute": "basic",
                  "attributes": {
                     "0x0013": {
                        "attribute": "ZCLAttributeDef(id=0x0013, name='alarm_mask', type=<flag 'AlarmMask'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='app_version', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0006": {
                        "attribute": "ZCLAttributeDef(id=0x0006, name='date_code', type=<class 'zigpy.types.basic.LimitedCharString.<locals>.LimitedCharString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0012": {
                        "attribute": "ZCLAttributeDef(id=0x0012, name='device_enabled', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0014": {
                        "attribute": "ZCLAttributeDef(id=0x0014, name='disable_local_config', type=<flag 'DisableLocalConfig'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0008": {
                        "attribute": "ZCLAttributeDef(id=0x0008, name='generic_device_class', type=<enum 'GenericDeviceClass'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0009": {
                        "attribute": "ZCLAttributeDef(id=0x0009, name='generic_device_type', type=<enum 'GenericLightingDeviceType'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0003": {
                        "attribute": "ZCLAttributeDef(id=0x0003, name='hw_version', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0010": {
                        "attribute": "ZCLAttributeDef(id=0x0010, name='location_desc', type=<class 'zigpy.types.basic.LimitedCharString.<locals>.LimitedCharString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='manufacturer', type=<class 'zigpy.types.basic.LimitedCharString.<locals>.LimitedCharString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000c": {
                        "attribute": "ZCLAttributeDef(id=0x000C, name='manufacturer_version_details', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0005": {
                        "attribute": "ZCLAttributeDef(id=0x0005, name='model', type=<class 'zigpy.types.basic.LimitedCharString.<locals>.LimitedCharString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0011": {
                        "attribute": "ZCLAttributeDef(id=0x0011, name='physical_env', type=<enum 'PhysicalEnvironment'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0007": {
                        "attribute": "ZCLAttributeDef(id=0x0007, name='power_source', type=<enum 'PowerSource'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x000a": {
                        "attribute": "ZCLAttributeDef(id=0x000A, name='product_code', type=<class 'zigpy.types.basic.LVBytes'>, zcl_type=<DataTypeId.octstr: 65>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000e": {
                        "attribute": "ZCLAttributeDef(id=0x000E, name='product_label', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000b": {
                        "attribute": "ZCLAttributeDef(id=0x000B, name='product_url', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000d": {
                        "attribute": "ZCLAttributeDef(id=0x000D, name='serial_number', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0002": {
                        "attribute": "ZCLAttributeDef(id=0x0002, name='stack_version', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4000": {
                        "attribute": "ZCLAttributeDef(id=0x4000, name='sw_build_id', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='zcl_version', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x000a": {
                  "endpoint_attribute": "time",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='dst_end', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0005": {
                        "attribute": "ZCLAttributeDef(id=0x0005, name='dst_shift', type=<class 'zigpy.types.basic.int32s'>, zcl_type=<DataTypeId.int32: 43>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0003": {
                        "attribute": "ZCLAttributeDef(id=0x0003, name='dst_start', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0008": {
                        "attribute": "ZCLAttributeDef(id=0x0008, name='last_set_time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0007": {
                        "attribute": "ZCLAttributeDef(id=0x0007, name='local_time', type=<class 'zigpy.types.named.LocalTime'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0006": {
                        "attribute": "ZCLAttributeDef(id=0x0006, name='standard_time', type=<class 'zigpy.types.named.StandardTime'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='time_status', type=<flag 'TimeStatus'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0002": {
                        "attribute": "ZCLAttributeDef(id=0x0002, name='time_zone', type=<class 'zigpy.types.basic.int32s'>, zcl_type=<DataTypeId.int32: 43>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0009": {
                        "attribute": "ZCLAttributeDef(id=0x0009, name='valid_until_time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0019": {
                  "endpoint_attribute": "ota",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0002": {
                        "attribute": "ZCLAttributeDef(id=0x0002, name='current_file_version', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0003": {
                        "attribute": "ZCLAttributeDef(id=0x0003, name='current_zigbee_stack_version', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='downloaded_file_version', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0005": {
                        "attribute": "ZCLAttributeDef(id=0x0005, name='downloaded_zigbee_stack_version', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='file_offset', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000a": {
                        "attribute": "ZCLAttributeDef(id=0x000A, name='image_stamp', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0008": {
                        "attribute": "ZCLAttributeDef(id=0x0008, name='image_type_id', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0006": {
                        "attribute": "ZCLAttributeDef(id=0x0006, name='image_upgrade_status', type=<enum 'ImageUpgradeStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0007": {
                        "attribute": "ZCLAttributeDef(id=0x0007, name='manufacturer_id', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0009": {
                        "attribute": "ZCLAttributeDef(id=0x0009, name='minimum_block_req_delay', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000b": {
                        "attribute": "ZCLAttributeDef(id=0x000B, name='upgrade_activation_policy', type=<enum 'UpgradeActivationPolicy'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='upgrade_server_id', type=<class 'zigpy.types.named.EUI64'>, zcl_type=<DataTypeId.EUI64: 240>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x000c": {
                        "attribute": "ZCLAttributeDef(id=0x000C, name='upgrade_timeout_policy', type=<enum 'UpgradeTimeoutPolicy'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               }
            }
         },
         "2": {
            "device_type": {
               "name": "ON_OFF_SWITCH",
               "id": 0
            },
            "profile_id": 260,
            "in_clusters": {
               "0x0010": {
                  "endpoint_attribute": "binary_output",
                  "attributes": {
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='active_text', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0100": {
                        "attribute": "ZCLAttributeDef(id=0x0100, name='application_type', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x001c": {
                        "attribute": "ZCLAttributeDef(id=0x001C, name='description', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0075": {
                        "attribute": "ZCLAttributeDef(id=0x0075, name='engineering_units', type=<enum 'enum16'>, zcl_type=<DataTypeId.enum16: 49>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x002e": {
                        "attribute": "ZCLAttributeDef(id=0x002E, name='inactive_text', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0042": {
                        "attribute": "ZCLAttributeDef(id=0x0042, name='minimum_off_time', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0043": {
                        "attribute": "ZCLAttributeDef(id=0x0043, name='minimum_on_time', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0051": {
                        "attribute": "ZCLAttributeDef(id=0x0051, name='out_of_service', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0054": {
                        "attribute": "ZCLAttributeDef(id=0x0054, name='polarity', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0055": {
                        "attribute": "ZCLAttributeDef(id=0x0055, name='present_value', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0067": {
                        "attribute": "ZCLAttributeDef(id=0x0067, name='reliability', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0068": {
                        "attribute": "ZCLAttributeDef(id=0x0068, name='relinquish_default', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x006a": {
                        "attribute": "ZCLAttributeDef(id=0x006A, name='resolution', type=<class 'zigpy.types.basic.Single'>, zcl_type=<DataTypeId.single: 57>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x006f": {
                        "attribute": "ZCLAttributeDef(id=0x006F, name='status_flags', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0006": {
                  "endpoint_attribute": "on_off",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x4000": {
                        "attribute": "ZCLAttributeDef(id=0x4000, name='global_scene_control', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4002": {
                        "attribute": "ZCLAttributeDef(id=0x4002, name='off_wait_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='on_off', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Report|Scene: 25>, mandatory=True, is_manufacturer_specific=False)",
                        "value": 1
                     },
                     "0x4001": {
                        "attribute": "ZCLAttributeDef(id=0x4001, name='on_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4003": {
                        "attribute": "ZCLAttributeDef(id=0x4003, name='start_up_on_off', type=<enum 'StartUpOnOff'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0004": {
                  "endpoint_attribute": "groups",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='name_support', type=<flag 'NameSupport'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0005": {
                  "endpoint_attribute": "scenes",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='count', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0002": {
                        "attribute": "ZCLAttributeDef(id=0x0002, name='current_group', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='current_scene', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0005": {
                        "attribute": "ZCLAttributeDef(id=0x0005, name='last_configured_by', type=<class 'zigpy.types.named.EUI64'>, zcl_type=<DataTypeId.EUI64: 240>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='name_support', type=<flag 'NameSupport'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0003": {
                        "attribute": "ZCLAttributeDef(id=0x0003, name='scene_valid', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               }
            },
            "out_clusters": {}
         },
         "3": {
            "device_type": {
               "name": "ON_OFF_SWITCH",
               "id": 0
            },
            "profile_id": 260,
            "in_clusters": {
               "0x0010": {
                  "endpoint_attribute": "binary_output",
                  "attributes": {
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='active_text', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0100": {
                        "attribute": "ZCLAttributeDef(id=0x0100, name='application_type', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x001c": {
                        "attribute": "ZCLAttributeDef(id=0x001C, name='description', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0075": {
                        "attribute": "ZCLAttributeDef(id=0x0075, name='engineering_units', type=<enum 'enum16'>, zcl_type=<DataTypeId.enum16: 49>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x002e": {
                        "attribute": "ZCLAttributeDef(id=0x002E, name='inactive_text', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0042": {
                        "attribute": "ZCLAttributeDef(id=0x0042, name='minimum_off_time', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0043": {
                        "attribute": "ZCLAttributeDef(id=0x0043, name='minimum_on_time', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0051": {
                        "attribute": "ZCLAttributeDef(id=0x0051, name='out_of_service', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0054": {
                        "attribute": "ZCLAttributeDef(id=0x0054, name='polarity', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0055": {
                        "attribute": "ZCLAttributeDef(id=0x0055, name='present_value', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0067": {
                        "attribute": "ZCLAttributeDef(id=0x0067, name='reliability', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0068": {
                        "attribute": "ZCLAttributeDef(id=0x0068, name='relinquish_default', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x006a": {
                        "attribute": "ZCLAttributeDef(id=0x006A, name='resolution', type=<class 'zigpy.types.basic.Single'>, zcl_type=<DataTypeId.single: 57>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x006f": {
                        "attribute": "ZCLAttributeDef(id=0x006F, name='status_flags', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0006": {
                  "endpoint_attribute": "on_off",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x4000": {
                        "attribute": "ZCLAttributeDef(id=0x4000, name='global_scene_control', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4002": {
                        "attribute": "ZCLAttributeDef(id=0x4002, name='off_wait_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='on_off', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Report|Scene: 25>, mandatory=True, is_manufacturer_specific=False)",
                        "value": 1
                     },
                     "0x4001": {
                        "attribute": "ZCLAttributeDef(id=0x4001, name='on_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4003": {
                        "attribute": "ZCLAttributeDef(id=0x4003, name='start_up_on_off', type=<enum 'StartUpOnOff'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0004": {
                  "endpoint_attribute": "groups",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='name_support', type=<flag 'NameSupport'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0005": {
                  "endpoint_attribute": "scenes",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='count', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0002": {
                        "attribute": "ZCLAttributeDef(id=0x0002, name='current_group', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0001": {
                        "attribute": "ZCLAttributeDef(id=0x0001, name='current_scene', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0005": {
                        "attribute": "ZCLAttributeDef(id=0x0005, name='last_configured_by', type=<class 'zigpy.types.named.EUI64'>, zcl_type=<DataTypeId.EUI64: 240>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0004": {
                        "attribute": "ZCLAttributeDef(id=0x0004, name='name_support', type=<flag 'NameSupport'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0003": {
                        "attribute": "ZCLAttributeDef(id=0x0003, name='scene_valid', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               }
            },
            "out_clusters": {}
         },
         "4": {
            "device_type": {
               "name": "ON_OFF_SWITCH",
               "id": 0
            },
            "profile_id": 260,
            "in_clusters": {
               "0x0012": {
                  "endpoint_attribute": "multistate_input",
                  "attributes": {
                     "0x0100": {
                        "attribute": "ZCLAttributeDef(id=0x0100, name='application_type', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x001c": {
                        "attribute": "ZCLAttributeDef(id=0x001C, name='description', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x004a": {
                        "attribute": "ZCLAttributeDef(id=0x004A, name='number_of_states', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0051": {
                        "attribute": "ZCLAttributeDef(id=0x0051, name='out_of_service', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0055": {
                        "attribute": "ZCLAttributeDef(id=0x0055, name='present_value', type=<class 'zigpy.types.basic.Single'>, zcl_type=<DataTypeId.single: 57>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0067": {
                        "attribute": "ZCLAttributeDef(id=0x0067, name='reliability', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000e": {
                        "attribute": "ZCLAttributeDef(id=0x000E, name='state_text', type=<class 'zigpy.types.basic.AnonymousLVList'>, zcl_type=<DataTypeId.unk: 255>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x006f": {
                        "attribute": "ZCLAttributeDef(id=0x006F, name='status_flags', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0006": {
                  "endpoint_attribute": "on_off",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x4000": {
                        "attribute": "ZCLAttributeDef(id=0x4000, name='global_scene_control', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4002": {
                        "attribute": "ZCLAttributeDef(id=0x4002, name='off_wait_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='on_off', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Report|Scene: 25>, mandatory=True, is_manufacturer_specific=False)",
                        "value": 1
                     },
                     "0x4001": {
                        "attribute": "ZCLAttributeDef(id=0x4001, name='on_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4003": {
                        "attribute": "ZCLAttributeDef(id=0x4003, name='start_up_on_off', type=<enum 'StartUpOnOff'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               }
            },
            "out_clusters": {}
         },
         "5": {
            "device_type": {
               "name": "ON_OFF_SWITCH",
               "id": 0
            },
            "profile_id": 260,
            "in_clusters": {
               "0x0012": {
                  "endpoint_attribute": "multistate_input",
                  "attributes": {
                     "0x0100": {
                        "attribute": "ZCLAttributeDef(id=0x0100, name='application_type', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x001c": {
                        "attribute": "ZCLAttributeDef(id=0x001C, name='description', type=<class 'zigpy.types.basic.CharacterString'>, zcl_type=<DataTypeId.string: 66>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x004a": {
                        "attribute": "ZCLAttributeDef(id=0x004A, name='number_of_states', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0051": {
                        "attribute": "ZCLAttributeDef(id=0x0051, name='out_of_service', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0055": {
                        "attribute": "ZCLAttributeDef(id=0x0055, name='present_value', type=<class 'zigpy.types.basic.Single'>, zcl_type=<DataTypeId.single: 57>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x0067": {
                        "attribute": "ZCLAttributeDef(id=0x0067, name='reliability', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x000e": {
                        "attribute": "ZCLAttributeDef(id=0x000E, name='state_text', type=<class 'zigpy.types.basic.AnonymousLVList'>, zcl_type=<DataTypeId.unk: 255>, access=<ZCLAttributeAccess.Read|Write_Optional: 5>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x006f": {
                        "attribute": "ZCLAttributeDef(id=0x006F, name='status_flags', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               },
               "0x0006": {
                  "endpoint_attribute": "on_off",
                  "attributes": {
                     "0xfffd": {
                        "attribute": "ZCLAttributeDef(id=0xFFFD, name='cluster_revision', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)"
                     },
                     "0x4000": {
                        "attribute": "ZCLAttributeDef(id=0x4000, name='global_scene_control', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4002": {
                        "attribute": "ZCLAttributeDef(id=0x4002, name='off_wait_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x0000": {
                        "attribute": "ZCLAttributeDef(id=0x0000, name='on_off', type=<enum 'Bool'>, zcl_type=<DataTypeId.bool_: 16>, access=<ZCLAttributeAccess.Read|Report|Scene: 25>, mandatory=True, is_manufacturer_specific=False)",
                        "value": 1
                     },
                     "0x4001": {
                        "attribute": "ZCLAttributeDef(id=0x4001, name='on_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0xfffe": {
                        "attribute": "ZCLAttributeDef(id=0xFFFE, name='reporting_status', type=<enum 'AttributeReportingStatus'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)"
                     },
                     "0x4003": {
                        "attribute": "ZCLAttributeDef(id=0x4003, name='start_up_on_off', type=<enum 'StartUpOnOff'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)"
                     }
                  },
                  "unsupported_attributes": []
               }
            },
            "out_clusters": {}
         }
      }
   }
}
`

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