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] IKEA inspelning power monitoring smart plug #3374

Open
gllmlbrt opened this issue Sep 20, 2024 · 34 comments · May be fixed by zigpy/zha#348
Open

[Device Support Request] IKEA inspelning power monitoring smart plug #3374

gllmlbrt opened this issue Sep 20, 2024 · 34 comments · May be fixed by zigpy/zha#348
Labels
priority: medium This should be addressed or looked at soon ZHA lib This issue will need changes directly in ZHA.

Comments

@gllmlbrt
Copy link

gllmlbrt commented Sep 20, 2024

Problem description

New IKEA inspelning power monitoring smart plug pairs fine and has all the entities in Hass. However power and voltage are reported divided by factor 10.

Solution description

An adjustment of the voltage and power (as a result energy calculation) via a quirk?

Screenshots/Video

Screenshots/Video

20240920_192819
Screenshot_20240920_192229_Home Assistant
Screenshot_20240920_192304_Home Assistant

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": 142,
    "manufacturer_code": 4476,
    "maximum_buffer_size": 82,
    "maximum_incoming_transfer_size": 82,
    "server_mask": 11264,
    "maximum_outgoing_transfer_size": 82,
    "descriptor_capability_field": 0
  },
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x010a",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0008",
        "0x0702",
        "0x0b04",
        "0x1000",
        "0xfc7c",
        "0xfc85"
      ],
      "output_clusters": [
        "0x0019"
      ]
    },
    "242": {
      "profile_id": "0xa1e0",
      "device_type": "0x0061",
      "input_clusters": [
        "0x0021"
      ],
      "output_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "IKEA of Sweden",
  "model": "INSPELNING Smart plug",
  "class": "zigpy.device.Device"

Diagnostic information

Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2024.9.2",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.12.4",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/Copenhagen",
    "os_name": "Linux",
    "os_version": "6.6.46-haos",
    "supervisor": "2024.09.1",
    "host_os": "Home Assistant OS 13.1",
    "docker_version": "26.1.4",
    "chassis": "embedded",
    "run_as_root": true
  },
    "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "after_dependencies": [
      "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.22",
      "zha==0.0.33"
    ],
    "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
  },
  "setup_times": {
    "null": {
      "setup": 0.00011784600792452693
    },
    "c9eb75c7f6c827c4f46baa75ee4c0d68": {
      "wait_import_platforms": -0.03136135300155729,
      "config_entry_setup": 28.257591036963277
    }
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 13641,
    "manufacturer": "IKEA of Sweden",
    "model": "INSPELNING Smart plug",
    "name": "IKEA of Sweden INSPELNING Smart plug",
    "quirk_applied": false,
    "quirk_class": "zigpy.device.Device",
    "quirk_id": null,
    "manufacturer_code": 4476,
    "power_source": "Mains",
    "lqi": 168,
    "rssi": -58,
    "last_seen": "2024-09-20T20:02:08",
    "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": 142,
        "manufacturer_code": 4476,
        "maximum_buffer_size": 82,
        "maximum_incoming_transfer_size": 82,
        "server_mask": 11264,
        "maximum_outgoing_transfer_size": 82,
        "descriptor_capability_field": 0
      },
      "endpoints": {
        "1": {
          "profile_id": "0x0104",
          "device_type": "0x010a",
          "input_clusters": [
            "0x0000",
            "0x0003",
            "0x0004",
            "0x0005",
            "0x0006",
            "0x0008",
            "0x0702",
            "0x0b04",
            "0x1000",
            "0xfc7c",
            "0xfc85"
          ],
          "output_clusters": [
            "0x0019"
          ]
        },
        "242": {
          "profile_id": "0xa1e0",
          "device_type": "0x0061",
          "input_clusters": [
            "0x0021"
          ],
          "output_clusters": [
            "0x0021"
          ]
        }
      },
      "manufacturer": "IKEA of Sweden",
      "model": "INSPELNING Smart plug"
    },
    "active_coordinator": false,
    "entities": [
      {
        "entity_id": "button.ikea_of_sweden_inspelning_smart_plug_identify",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "number.ikea_of_sweden_inspelning_smart_plug_on_off_transition_time",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "number.ikea_of_sweden_inspelning_smart_plug_on_level",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "number.ikea_of_sweden_inspelning_smart_plug_start_up_current_level",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "select.ikea_of_sweden_inspelning_smart_plug_start_up_behavior",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "sensor.ikea_of_sweden_inspelning_smart_plug_current",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "sensor.ikea_of_sweden_inspelning_smart_plug_voltage",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "sensor.ikea_of_sweden_inspelning_smart_plug_rssi",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "sensor.ikea_of_sweden_inspelning_smart_plug_lqi",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "sensor.ikea_of_sweden_inspelning_smart_plug_power",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "sensor.ikea_of_sweden_inspelning_smart_plug_summation_delivered",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "switch.ikea_of_sweden_inspelning_smart_plug_switch",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      },
      {
        "entity_id": "update.ikea_of_sweden_inspelning_smart_plug_firmware",
        "name": "IKEA of Sweden INSPELNING Smart plug"
      }
    ],
    "neighbors": [],
    "routes": [],
    "endpoint_names": [
      {
        "name": "ON_OFF_PLUG_IN_UNIT"
      },
      {
        "name": "PROXY_BASIC"
      }
    ],
    "user_given_name": null,
    "device_reg_id": "8256d7bb4e4c5266459baa20095e302a",
    "area_id": "summerhouse",
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "ON_OFF_PLUG_IN_UNIT",
          "id": 266
        },
        "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)",
                "value": null
              },
              "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": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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": "IKEA of Sweden"
              },
              "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)",
                "value": null
              },
              "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": "INSPELNING Smart plug"
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              }
            },
            "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              }
            },
            "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              }
            },
            "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              }
            },
            "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": 255
              }
            },
            "unsupported_attributes": []
          },
          "0x0008": {
            "endpoint_attribute": "level",
            "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)",
                "value": null
              },
              "0x0004": {
                "attribute": "ZCLAttributeDef(id=0x0004, name='current_frequency', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report|Scene: 25>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0000": {
                "attribute": "ZCLAttributeDef(id=0x0000, name='current_level', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Report|Scene: 25>, mandatory=True, is_manufacturer_specific=False)",
                "value": 127
              },
              "0x0014": {
                "attribute": "ZCLAttributeDef(id=0x0014, name='default_move_rate', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0006": {
                "attribute": "ZCLAttributeDef(id=0x0006, name='max_frequency', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0003": {
                "attribute": "ZCLAttributeDef(id=0x0003, name='max_level', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0005": {
                "attribute": "ZCLAttributeDef(id=0x0005, name='min_frequency', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0002": {
                "attribute": "ZCLAttributeDef(id=0x0002, name='min_level', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0013": {
                "attribute": "ZCLAttributeDef(id=0x0013, name='off_transition_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0011": {
                "attribute": "ZCLAttributeDef(id=0x0011, name='on_level', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": 255
              },
              "0x0010": {
                "attribute": "ZCLAttributeDef(id=0x0010, name='on_off_transition_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": 0
              },
              "0x0012": {
                "attribute": "ZCLAttributeDef(id=0x0012, name='on_transition_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x000f": {
                "attribute": "ZCLAttributeDef(id=0x000F, name='options', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0001": {
                "attribute": "ZCLAttributeDef(id=0x0001, name='remaining_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "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)",
                "value": null
              },
              "0x4000": {
                "attribute": "ZCLAttributeDef(id=0x4000, name='start_up_current_level', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": 255
              }
            },
            "unsupported_attributes": [
              18,
              19,
              20,
              "default_move_rate",
              "off_transition_time",
              "on_transition_time"
            ]
          },
          "0x0702": {
            "endpoint_attribute": "smartenergy_metering",
            "attributes": {
              "0x0020": {
                "attribute": "ZCLAttributeDef(id=0x0020, name='active_register_tier_delivered', type=<enum 'RegisteredTier'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0021": {
                "attribute": "ZCLAttributeDef(id=0x0021, name='active_register_tier_received', type=<enum 'RegisteredTier'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0314": {
                "attribute": "ZCLAttributeDef(id=0x0314, name='alternative_consumption_formatting', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0313": {
                "attribute": "ZCLAttributeDef(id=0x0313, name='alternative_demand_formatting', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0312": {
                "attribute": "ZCLAttributeDef(id=0x0312, name='alternative_unit_of_measure', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a00": {
                "attribute": "ZCLAttributeDef(id=0x0A00, name='bill_to_date', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a01": {
                "attribute": "ZCLAttributeDef(id=0x0A01, name='bill_to_date_time_stamp', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0019": {
                "attribute": "ZCLAttributeDef(id=0x0019, name='control_temperature', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0413": {
                "attribute": "ZCLAttributeDef(id=0x0413, name='cur_month_max_energy_carr_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0414": {
                "attribute": "ZCLAttributeDef(id=0x0414, name='cur_month_min_energy_carr_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0405": {
                "attribute": "ZCLAttributeDef(id=0x0405, name='cur_part_profile_int_start_time_delivered', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0406": {
                "attribute": "ZCLAttributeDef(id=0x0406, name='cur_part_profile_int_start_time_received', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0407": {
                "attribute": "ZCLAttributeDef(id=0x0407, name='cur_part_profile_int_value_delivered', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0408": {
                "attribute": "ZCLAttributeDef(id=0x0408, name='cur_part_profile_int_value_received', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0415": {
                "attribute": "ZCLAttributeDef(id=0x0415, name='cur_year_max_energy_carr_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0416": {
                "attribute": "ZCLAttributeDef(id=0x0416, name='cur_year_min_energy_carr_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x000e": {
                "attribute": "ZCLAttributeDef(id=0x000E, name='current_block', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x000c": {
                "attribute": "ZCLAttributeDef(id=0x000C, name='current_block_period_consump_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x001d": {
                "attribute": "ZCLAttributeDef(id=0x001D, name='current_block_period_consump_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x001e": {
                "attribute": "ZCLAttributeDef(id=0x001E, name='current_block_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x040d": {
                "attribute": "ZCLAttributeDef(id=0x040D, name='current_day_max_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0409": {
                "attribute": "ZCLAttributeDef(id=0x0409, name='current_day_max_pressure', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x040a": {
                "attribute": "ZCLAttributeDef(id=0x040A, name='current_day_min_pressure', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0600": {
                "attribute": "ZCLAttributeDef(id=0x0600, name='current_demand_delivered', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x001a": {
                "attribute": "ZCLAttributeDef(id=0x001A, name='current_in_energy_carrier_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0015": {
                "attribute": "ZCLAttributeDef(id=0x0015, name='current_in_energy_carrier_summ', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0002": {
                "attribute": "ZCLAttributeDef(id=0x0002, name='current_max_demand_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0008": {
                "attribute": "ZCLAttributeDef(id=0x0008, name='current_max_demand_delivered_time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0003": {
                "attribute": "ZCLAttributeDef(id=0x0003, name='current_max_demand_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0009": {
                "attribute": "ZCLAttributeDef(id=0x0009, name='current_max_demand_received_time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0206": {
                "attribute": "ZCLAttributeDef(id=0x0206, name='current_meter_id', type=<class 'zigpy.types.basic.LVBytes'>, zcl_type=<DataTypeId.octstr: 65>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x040f": {
                "attribute": "ZCLAttributeDef(id=0x040F, name='current_month_max_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x001b": {
                "attribute": "ZCLAttributeDef(id=0x001B, name='current_out_energy_carrier_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0016": {
                "attribute": "ZCLAttributeDef(id=0x0016, name='current_out_energy_carrier_summ', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0000": {
                "attribute": "ZCLAttributeDef(id=0x0000, name='current_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": 15
              },
              "0x0001": {
                "attribute": "ZCLAttributeDef(id=0x0001, name='current_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0112": {
                "attribute": "ZCLAttributeDef(id=0x0112, name='current_tier10_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0113": {
                "attribute": "ZCLAttributeDef(id=0x0113, name='current_tier10_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0114": {
                "attribute": "ZCLAttributeDef(id=0x0114, name='current_tier11_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0115": {
                "attribute": "ZCLAttributeDef(id=0x0115, name='current_tier11_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0116": {
                "attribute": "ZCLAttributeDef(id=0x0116, name='current_tier12_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0117": {
                "attribute": "ZCLAttributeDef(id=0x0117, name='current_tier12_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0118": {
                "attribute": "ZCLAttributeDef(id=0x0118, name='current_tier13_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0119": {
                "attribute": "ZCLAttributeDef(id=0x0119, name='current_tier13_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x011a": {
                "attribute": "ZCLAttributeDef(id=0x011A, name='current_tier14_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x011b": {
                "attribute": "ZCLAttributeDef(id=0x011B, name='current_tier14_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x011c": {
                "attribute": "ZCLAttributeDef(id=0x011C, name='current_tier15_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x011d": {
                "attribute": "ZCLAttributeDef(id=0x011D, name='current_tier15_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0100": {
                "attribute": "ZCLAttributeDef(id=0x0100, name='current_tier1_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0101": {
                "attribute": "ZCLAttributeDef(id=0x0101, name='current_tier1_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0102": {
                "attribute": "ZCLAttributeDef(id=0x0102, name='current_tier2_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0103": {
                "attribute": "ZCLAttributeDef(id=0x0103, name='current_tier2_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0104": {
                "attribute": "ZCLAttributeDef(id=0x0104, name='current_tier3_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0105": {
                "attribute": "ZCLAttributeDef(id=0x0105, name='current_tier3_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0106": {
                "attribute": "ZCLAttributeDef(id=0x0106, name='current_tier4_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0107": {
                "attribute": "ZCLAttributeDef(id=0x0107, name='current_tier4_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0108": {
                "attribute": "ZCLAttributeDef(id=0x0108, name='current_tier5_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0109": {
                "attribute": "ZCLAttributeDef(id=0x0109, name='current_tier5_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x010a": {
                "attribute": "ZCLAttributeDef(id=0x010A, name='current_tier6_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x010b": {
                "attribute": "ZCLAttributeDef(id=0x010B, name='current_tier6_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x010c": {
                "attribute": "ZCLAttributeDef(id=0x010C, name='current_tier7_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x010d": {
                "attribute": "ZCLAttributeDef(id=0x010D, name='current_tier7_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x010e": {
                "attribute": "ZCLAttributeDef(id=0x010E, name='current_tier8_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x010f": {
                "attribute": "ZCLAttributeDef(id=0x010F, name='current_tier8_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0110": {
                "attribute": "ZCLAttributeDef(id=0x0110, name='current_tier9_summ_delivered', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0111": {
                "attribute": "ZCLAttributeDef(id=0x0111, name='current_tier9_summ_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0410": {
                "attribute": "ZCLAttributeDef(id=0x0410, name='current_year_max_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0401": {
                "attribute": "ZCLAttributeDef(id=0x0401, name='currentday_consump_delivered', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0402": {
                "attribute": "ZCLAttributeDef(id=0x0402, name='currentday_consump_received', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0411": {
                "attribute": "ZCLAttributeDef(id=0x0411, name='currentday_max_energy_carr_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0311": {
                "attribute": "ZCLAttributeDef(id=0x0311, name='customer_id_number', type=<class 'zigpy.types.basic.LimitedLVBytes.<locals>.LimitedLVBytes'>, zcl_type=<DataTypeId.octstr: 65>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x000d": {
                "attribute": "ZCLAttributeDef(id=0x000D, name='daily_consump_target', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0005": {
                "attribute": "ZCLAttributeDef(id=0x0005, name='daily_freeze_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x000a": {
                "attribute": "ZCLAttributeDef(id=0x000A, name='default_update_period', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0304": {
                "attribute": "ZCLAttributeDef(id=0x0304, name='demand_formatting', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0602": {
                "attribute": "ZCLAttributeDef(id=0x0602, name='demand_integration_period', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0601": {
                "attribute": "ZCLAttributeDef(id=0x0601, name='demand_limit', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0604": {
                "attribute": "ZCLAttributeDef(id=0x0604, name='demand_limit_arm_duration', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0004": {
                "attribute": "ZCLAttributeDef(id=0x0004, name='dft_summ', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x001f": {
                "attribute": "ZCLAttributeDef(id=0x001F, name='dft_summation_received', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0302": {
                "attribute": "ZCLAttributeDef(id=0x0302, name='divisor', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": 1000
              },
              "0x0801": {
                "attribute": "ZCLAttributeDef(id=0x0801, name='electricity_alarm_mask', type=<flag 'bitmap32'>, zcl_type=<DataTypeId.map32: 27>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030b": {
                "attribute": "ZCLAttributeDef(id=0x030B, name='energy_carrier_demand_formatting', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030a": {
                "attribute": "ZCLAttributeDef(id=0x030A, name='energy_carrier_summ_formatting', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0309": {
                "attribute": "ZCLAttributeDef(id=0x0309, name='energy_carrier_unit_of_meas', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0806": {
                "attribute": "ZCLAttributeDef(id=0x0806, name='extended_generic_alarm_mask', type=<flag 'bitmap48'>, zcl_type=<DataTypeId.map48: 29>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0204": {
                "attribute": "ZCLAttributeDef(id=0x0204, name='extended_status', type=<flag 'bitmap64'>, zcl_type=<DataTypeId.map64: 31>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x000b": {
                "attribute": "ZCLAttributeDef(id=0x000B, name='fast_poll_update_period', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0013": {
                "attribute": "ZCLAttributeDef(id=0x0013, name='flow_restriction', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0805": {
                "attribute": "ZCLAttributeDef(id=0x0805, name='gas_specific_alarm_mask', type=<flag 'bitmap16'>, zcl_type=<DataTypeId.map16: 25>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0802": {
                "attribute": "ZCLAttributeDef(id=0x0802, name='gen_flow_pressure_alarm_mask', type=<flag 'bitmap16'>, zcl_type=<DataTypeId.map16: 25>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0800": {
                "attribute": "ZCLAttributeDef(id=0x0800, name='generic_alarm_mask', type=<flag 'bitmap16'>, zcl_type=<DataTypeId.map16: 25>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0804": {
                "attribute": "ZCLAttributeDef(id=0x0804, name='heat_cool_specific_alarm_mask', type=<flag 'bitmap16'>, zcl_type=<DataTypeId.map16: 25>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0305": {
                "attribute": "ZCLAttributeDef(id=0x0305, name='historical_consump_formatting', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0203": {
                "attribute": "ZCLAttributeDef(id=0x0203, name='hours_in_fault', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0202": {
                "attribute": "ZCLAttributeDef(id=0x0202, name='hours_in_operation', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0207": {
                "attribute": "ZCLAttributeDef(id=0x0207, name='iambient_consumption_indicator', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0017": {
                "attribute": "ZCLAttributeDef(id=0x0017, name='inlet_temperature', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0400": {
                "attribute": "ZCLAttributeDef(id=0x0400, name='instantaneous_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0022": {
                "attribute": "ZCLAttributeDef(id=0x0022, name='last_block_switch_time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0807": {
                "attribute": "ZCLAttributeDef(id=0x0807, name='manufacture_alarm_mask', type=<flag 'bitmap16'>, zcl_type=<DataTypeId.map16: 25>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0500": {
                "attribute": "ZCLAttributeDef(id=0x0500, name='max_number_of_periods_delivered', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0308": {
                "attribute": "ZCLAttributeDef(id=0x0308, name='meter_serial_number', type=<class 'zigpy.types.basic.LimitedLVBytes.<locals>.LimitedLVBytes'>, zcl_type=<DataTypeId.octstr: 65>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0306": {
                "attribute": "ZCLAttributeDef(id=0x0306, name='metering_device_type', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": 0
              },
              "0x030e": {
                "attribute": "ZCLAttributeDef(id=0x030E, name='module_serial_number', type=<class 'zigpy.types.basic.LimitedLVBytes.<locals>.LimitedLVBytes'>, zcl_type=<DataTypeId.octstr: 65>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0301": {
                "attribute": "ZCLAttributeDef(id=0x0301, name='multiplier', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": 1
              },
              "0x0603": {
                "attribute": "ZCLAttributeDef(id=0x0603, name='number_of_demand_subintervals', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030f": {
                "attribute": "ZCLAttributeDef(id=0x030F, name='operating_tariff_label_delivered', type=<class 'zigpy.types.basic.LimitedLVBytes.<locals>.LimitedLVBytes'>, zcl_type=<DataTypeId.octstr: 65>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0310": {
                "attribute": "ZCLAttributeDef(id=0x0310, name='operating_tariff_label_received', type=<class 'zigpy.types.basic.LimitedLVBytes.<locals>.LimitedLVBytes'>, zcl_type=<DataTypeId.octstr: 65>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0018": {
                "attribute": "ZCLAttributeDef(id=0x0018, name='outlet_temperature', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0006": {
                "attribute": "ZCLAttributeDef(id=0x0006, name='power_factor', type=<class 'zigpy.types.basic.int8s'>, zcl_type=<DataTypeId.int8: 40>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0011": {
                "attribute": "ZCLAttributeDef(id=0x0011, name='preset_reading_time', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x040e": {
                "attribute": "ZCLAttributeDef(id=0x040E, name='previous_day_max_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x040b": {
                "attribute": "ZCLAttributeDef(id=0x040B, name='previous_day_max_pressure', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x040c": {
                "attribute": "ZCLAttributeDef(id=0x040C, name='previous_day_min_pressure', type=<class 'zigpy.types.basic.uint48_t'>, zcl_type=<DataTypeId.uint48: 37>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0403": {
                "attribute": "ZCLAttributeDef(id=0x0403, name='previousday_consump_delivered', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0404": {
                "attribute": "ZCLAttributeDef(id=0x0404, name='previousday_consump_received', type=<class 'zigpy.types.basic.uint24_t'>, zcl_type=<DataTypeId.uint24: 34>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0412": {
                "attribute": "ZCLAttributeDef(id=0x0412, name='previousday_max_energy_carr_demand', type=<class 'zigpy.types.basic.int24s'>, zcl_type=<DataTypeId.int24: 42>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x000f": {
                "attribute": "ZCLAttributeDef(id=0x000F, name='profile_interval_period', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a02": {
                "attribute": "ZCLAttributeDef(id=0x0A02, name='projected_bill', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a03": {
                "attribute": "ZCLAttributeDef(id=0x0A03, name='projected_bill_time_stamp', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0007": {
                "attribute": "ZCLAttributeDef(id=0x0007, name='reading_snapshot_time', type=<class 'zigpy.types.named.UTCTime'>, zcl_type=<DataTypeId.UTC: 226>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0201": {
                "attribute": "ZCLAttributeDef(id=0x0201, name='remaining_battery_life', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0205": {
                "attribute": "ZCLAttributeDef(id=0x0205, name='remaining_battery_life_days', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0307": {
                "attribute": "ZCLAttributeDef(id=0x0307, name='site_id', type=<class 'zigpy.types.basic.LimitedLVBytes.<locals>.LimitedLVBytes'>, zcl_type=<DataTypeId.octstr: 65>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0200": {
                "attribute": "ZCLAttributeDef(id=0x0200, name='status', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": 0
              },
              "0x0303": {
                "attribute": "ZCLAttributeDef(id=0x0303, name='summation_formatting', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": 251
              },
              "0x0014": {
                "attribute": "ZCLAttributeDef(id=0x0014, name='supply_status', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030d": {
                "attribute": "ZCLAttributeDef(id=0x030D, name='temperature_formatting', type=<flag 'bitmap8'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030c": {
                "attribute": "ZCLAttributeDef(id=0x030C, name='temperature_unit_of_measure', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0300": {
                "attribute": "ZCLAttributeDef(id=0x0300, name='unit_of_measure', type=<enum 'enum8'>, zcl_type=<DataTypeId.enum8: 48>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": 0
              },
              "0x0012": {
                "attribute": "ZCLAttributeDef(id=0x0012, name='volume_per_report', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0803": {
                "attribute": "ZCLAttributeDef(id=0x0803, name='water_specific_alarm_mask', type=<flag 'bitmap16'>, zcl_type=<DataTypeId.map16: 25>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              }
            },
            "unsupported_attributes": [
              1,
              256,
              258,
              260,
              262,
              264,
              266,
              772,
              1024,
              "current_summ_received",
              "current_tier1_summ_delivered",
              "current_tier2_summ_delivered",
              "current_tier3_summ_delivered",
              "current_tier4_summ_delivered",
              "current_tier5_summ_delivered",
              "current_tier6_summ_delivered",
              "demand_formatting",
              "instantaneous_demand"
            ]
          },
          "0x0b04": {
            "endpoint_attribute": "electrical_measurement",
            "attributes": {
              "0x0803": {
                "attribute": "ZCLAttributeDef(id=0x0803, name='ac_active_power_overload', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0800": {
                "attribute": "ZCLAttributeDef(id=0x0800, name='ac_alarms_mask', type=<flag 'ACAlarmsMask'>, zcl_type=<DataTypeId.map16: 25>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0603": {
                "attribute": "ZCLAttributeDef(id=0x0603, name='ac_current_divisor', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": 1000
              },
              "0x0602": {
                "attribute": "ZCLAttributeDef(id=0x0602, name='ac_current_multiplier', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": 1
              },
              "0x0802": {
                "attribute": "ZCLAttributeDef(id=0x0802, name='ac_current_overload', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0300": {
                "attribute": "ZCLAttributeDef(id=0x0300, name='ac_frequency', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0401": {
                "attribute": "ZCLAttributeDef(id=0x0401, name='ac_frequency_divisor', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0302": {
                "attribute": "ZCLAttributeDef(id=0x0302, name='ac_frequency_max', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0301": {
                "attribute": "ZCLAttributeDef(id=0x0301, name='ac_frequency_min', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0400": {
                "attribute": "ZCLAttributeDef(id=0x0400, name='ac_frequency_multiplier', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0605": {
                "attribute": "ZCLAttributeDef(id=0x0605, name='ac_power_divisor', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": 10
              },
              "0x0604": {
                "attribute": "ZCLAttributeDef(id=0x0604, name='ac_power_multiplier', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": 1
              },
              "0x0804": {
                "attribute": "ZCLAttributeDef(id=0x0804, name='ac_reactive_power_overload', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0601": {
                "attribute": "ZCLAttributeDef(id=0x0601, name='ac_voltage_divisor', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": 10
              },
              "0x0600": {
                "attribute": "ZCLAttributeDef(id=0x0600, name='ac_voltage_multiplier', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": 1
              },
              "0x0801": {
                "attribute": "ZCLAttributeDef(id=0x0801, name='ac_voltage_overload', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0902": {
                "attribute": "ZCLAttributeDef(id=0x0902, name='active_current_ph_b', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a02": {
                "attribute": "ZCLAttributeDef(id=0x0A02, name='active_current_ph_c', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x050b": {
                "attribute": "ZCLAttributeDef(id=0x050B, name='active_power', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": 0
              },
              "0x050d": {
                "attribute": "ZCLAttributeDef(id=0x050D, name='active_power_max', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x090d": {
                "attribute": "ZCLAttributeDef(id=0x090D, name='active_power_max_ph_b', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a0d": {
                "attribute": "ZCLAttributeDef(id=0x0A0D, name='active_power_max_ph_c', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x050c": {
                "attribute": "ZCLAttributeDef(id=0x050C, name='active_power_min', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x090c": {
                "attribute": "ZCLAttributeDef(id=0x090C, name='active_power_min_ph_b', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a0c": {
                "attribute": "ZCLAttributeDef(id=0x0A0C, name='active_power_min_ph_c', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x090b": {
                "attribute": "ZCLAttributeDef(id=0x090B, name='active_power_ph_b', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a0b": {
                "attribute": "ZCLAttributeDef(id=0x0A0B, name='active_power_ph_c', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x050f": {
                "attribute": "ZCLAttributeDef(id=0x050F, name='apparent_power', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x090f": {
                "attribute": "ZCLAttributeDef(id=0x090F, name='apparent_power_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a0f": {
                "attribute": "ZCLAttributeDef(id=0x0A0F, name='apparent_power_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0805": {
                "attribute": "ZCLAttributeDef(id=0x0805, name='average_rms_over_voltage', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0512": {
                "attribute": "ZCLAttributeDef(id=0x0512, name='average_rms_over_voltage_counter', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0912": {
                "attribute": "ZCLAttributeDef(id=0x0912, name='average_rms_over_voltage_counter_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a12": {
                "attribute": "ZCLAttributeDef(id=0x0A12, name='average_rms_over_voltage_counter_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0806": {
                "attribute": "ZCLAttributeDef(id=0x0806, name='average_rms_under_voltage', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0513": {
                "attribute": "ZCLAttributeDef(id=0x0513, name='average_rms_under_voltage_counter', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0511": {
                "attribute": "ZCLAttributeDef(id=0x0511, name='average_rms_voltage_meas_period', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a11": {
                "attribute": "ZCLAttributeDef(id=0x0A11, name='average_rms_voltage_meas_period_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0911": {
                "attribute": "ZCLAttributeDef(id=0x0911, name='average_rms_voltage_measure_period_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0913": {
                "attribute": "ZCLAttributeDef(id=0x0913, name='average_under_voltage_counter_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a13": {
                "attribute": "ZCLAttributeDef(id=0x0A13, name='average_under_voltage_counter_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "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)",
                "value": null
              },
              "0x0103": {
                "attribute": "ZCLAttributeDef(id=0x0103, name='dc_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0203": {
                "attribute": "ZCLAttributeDef(id=0x0203, name='dc_current_divisor', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0105": {
                "attribute": "ZCLAttributeDef(id=0x0105, name='dc_current_max', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0104": {
                "attribute": "ZCLAttributeDef(id=0x0104, name='dc_current_min', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0202": {
                "attribute": "ZCLAttributeDef(id=0x0202, name='dc_current_multiplier', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0702": {
                "attribute": "ZCLAttributeDef(id=0x0702, name='dc_current_overload', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0700": {
                "attribute": "ZCLAttributeDef(id=0x0700, name='dc_overload_alarms_mask', type=<flag 'DCOverloadAlarmMark'>, zcl_type=<DataTypeId.map8: 24>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0106": {
                "attribute": "ZCLAttributeDef(id=0x0106, name='dc_power', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0205": {
                "attribute": "ZCLAttributeDef(id=0x0205, name='dc_power_divisor', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0108": {
                "attribute": "ZCLAttributeDef(id=0x0108, name='dc_power_max', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0107": {
                "attribute": "ZCLAttributeDef(id=0x0107, name='dc_power_min', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0204": {
                "attribute": "ZCLAttributeDef(id=0x0204, name='dc_power_multiplier', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0100": {
                "attribute": "ZCLAttributeDef(id=0x0100, name='dc_voltage', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0201": {
                "attribute": "ZCLAttributeDef(id=0x0201, name='dc_voltage_divisor', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0102": {
                "attribute": "ZCLAttributeDef(id=0x0102, name='dc_voltage_max', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0101": {
                "attribute": "ZCLAttributeDef(id=0x0101, name='dc_voltage_min', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0200": {
                "attribute": "ZCLAttributeDef(id=0x0200, name='dc_voltage_multiplier', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0701": {
                "attribute": "ZCLAttributeDef(id=0x0701, name='dc_voltage_overload', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0404": {
                "attribute": "ZCLAttributeDef(id=0x0404, name='harmonic_current_multiplier', type=<class 'zigpy.types.basic.int8s'>, zcl_type=<DataTypeId.int8: 40>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0502": {
                "attribute": "ZCLAttributeDef(id=0x0502, name='instantaneous_active_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0501": {
                "attribute": "ZCLAttributeDef(id=0x0501, name='instantaneous_line_current', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0504": {
                "attribute": "ZCLAttributeDef(id=0x0504, name='instantaneous_power', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0503": {
                "attribute": "ZCLAttributeDef(id=0x0503, name='instantaneous_reactive_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0500": {
                "attribute": "ZCLAttributeDef(id=0x0500, name='instantaneous_voltage', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0901": {
                "attribute": "ZCLAttributeDef(id=0x0901, name='line_current_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a01": {
                "attribute": "ZCLAttributeDef(id=0x0A01, name='line_current_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030c": {
                "attribute": "ZCLAttributeDef(id=0x030C, name='meas11th_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0307": {
                "attribute": "ZCLAttributeDef(id=0x0307, name='meas1st_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0308": {
                "attribute": "ZCLAttributeDef(id=0x0308, name='meas3rd_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0309": {
                "attribute": "ZCLAttributeDef(id=0x0309, name='meas5th_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030a": {
                "attribute": "ZCLAttributeDef(id=0x030A, name='meas7th_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030b": {
                "attribute": "ZCLAttributeDef(id=0x030B, name='meas9th_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0312": {
                "attribute": "ZCLAttributeDef(id=0x0312, name='meas_phase11th_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030d": {
                "attribute": "ZCLAttributeDef(id=0x030D, name='meas_phase1st_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030e": {
                "attribute": "ZCLAttributeDef(id=0x030E, name='meas_phase3rd_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x030f": {
                "attribute": "ZCLAttributeDef(id=0x030F, name='meas_phase5th_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0310": {
                "attribute": "ZCLAttributeDef(id=0x0310, name='meas_phase7th_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0311": {
                "attribute": "ZCLAttributeDef(id=0x0311, name='meas_phase9th_harmonic_current', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0000": {
                "attribute": "ZCLAttributeDef(id=0x0000, name='measurement_type', type=<flag 'MeasurementType'>, zcl_type=<DataTypeId.map32: 27>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)",
                "value": 9
              },
              "0x0303": {
                "attribute": "ZCLAttributeDef(id=0x0303, name='neutral_current', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0405": {
                "attribute": "ZCLAttributeDef(id=0x0405, name='phase_harmonic_current_multiplier', type=<class 'zigpy.types.basic.int8s'>, zcl_type=<DataTypeId.int8: 40>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0403": {
                "attribute": "ZCLAttributeDef(id=0x0403, name='power_divisor', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0510": {
                "attribute": "ZCLAttributeDef(id=0x0510, name='power_factor', type=<class 'zigpy.types.basic.int8s'>, zcl_type=<DataTypeId.int8: 40>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0910": {
                "attribute": "ZCLAttributeDef(id=0x0910, name='power_factor_ph_b', type=<class 'zigpy.types.basic.int8s'>, zcl_type=<DataTypeId.int8: 40>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a10": {
                "attribute": "ZCLAttributeDef(id=0x0A10, name='power_factor_ph_c', type=<class 'zigpy.types.basic.int8s'>, zcl_type=<DataTypeId.int8: 40>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0402": {
                "attribute": "ZCLAttributeDef(id=0x0402, name='power_multiplier', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0903": {
                "attribute": "ZCLAttributeDef(id=0x0903, name='reactive_current_ph_b', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a03": {
                "attribute": "ZCLAttributeDef(id=0x0A03, name='reactive_current_ph_c', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x050e": {
                "attribute": "ZCLAttributeDef(id=0x050E, name='reactive_power', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x090e": {
                "attribute": "ZCLAttributeDef(id=0x090E, name='reactive_power_ph_b', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a0e": {
                "attribute": "ZCLAttributeDef(id=0x0A0E, name='reactive_power_ph_c', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "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)",
                "value": null
              },
              "0x0508": {
                "attribute": "ZCLAttributeDef(id=0x0508, name='rms_current', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": 3
              },
              "0x050a": {
                "attribute": "ZCLAttributeDef(id=0x050A, name='rms_current_max', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x090a": {
                "attribute": "ZCLAttributeDef(id=0x090A, name='rms_current_max_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a0a": {
                "attribute": "ZCLAttributeDef(id=0x0A0A, name='rms_current_max_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0509": {
                "attribute": "ZCLAttributeDef(id=0x0509, name='rms_current_min', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0909": {
                "attribute": "ZCLAttributeDef(id=0x0909, name='rms_current_min_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a09": {
                "attribute": "ZCLAttributeDef(id=0x0A09, name='rms_current_min_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0908": {
                "attribute": "ZCLAttributeDef(id=0x0908, name='rms_current_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a08": {
                "attribute": "ZCLAttributeDef(id=0x0A08, name='rms_current_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0807": {
                "attribute": "ZCLAttributeDef(id=0x0807, name='rms_extreme_over_voltage', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0514": {
                "attribute": "ZCLAttributeDef(id=0x0514, name='rms_extreme_over_voltage_period', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0914": {
                "attribute": "ZCLAttributeDef(id=0x0914, name='rms_extreme_over_voltage_period_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a14": {
                "attribute": "ZCLAttributeDef(id=0x0A14, name='rms_extreme_over_voltage_period_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0808": {
                "attribute": "ZCLAttributeDef(id=0x0808, name='rms_extreme_under_voltage', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0515": {
                "attribute": "ZCLAttributeDef(id=0x0515, name='rms_extreme_under_voltage_period', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0915": {
                "attribute": "ZCLAttributeDef(id=0x0915, name='rms_extreme_under_voltage_period_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a15": {
                "attribute": "ZCLAttributeDef(id=0x0A15, name='rms_extreme_under_voltage_period_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0505": {
                "attribute": "ZCLAttributeDef(id=0x0505, name='rms_voltage', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": 233
              },
              "0x0507": {
                "attribute": "ZCLAttributeDef(id=0x0507, name='rms_voltage_max', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0907": {
                "attribute": "ZCLAttributeDef(id=0x0907, name='rms_voltage_max_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a07": {
                "attribute": "ZCLAttributeDef(id=0x0A07, name='rms_voltage_max_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0506": {
                "attribute": "ZCLAttributeDef(id=0x0506, name='rms_voltage_min', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0906": {
                "attribute": "ZCLAttributeDef(id=0x0906, name='rms_voltage_min_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a06": {
                "attribute": "ZCLAttributeDef(id=0x0A06, name='rms_voltage_min_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read: 1>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0905": {
                "attribute": "ZCLAttributeDef(id=0x0905, name='rms_voltage_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a05": {
                "attribute": "ZCLAttributeDef(id=0x0A05, name='rms_voltage_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0809": {
                "attribute": "ZCLAttributeDef(id=0x0809, name='rms_voltage_sag', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0516": {
                "attribute": "ZCLAttributeDef(id=0x0516, name='rms_voltage_sag_period', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0916": {
                "attribute": "ZCLAttributeDef(id=0x0916, name='rms_voltage_sag_period_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a16": {
                "attribute": "ZCLAttributeDef(id=0x0A16, name='rms_voltage_sag_period_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x080a": {
                "attribute": "ZCLAttributeDef(id=0x080A, name='rms_voltage_swell', type=<class 'zigpy.types.basic.int16s'>, zcl_type=<DataTypeId.int16: 41>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0517": {
                "attribute": "ZCLAttributeDef(id=0x0517, name='rms_voltage_swell_period', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0917": {
                "attribute": "ZCLAttributeDef(id=0x0917, name='rms_voltage_swell_period_ph_b', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0a17": {
                "attribute": "ZCLAttributeDef(id=0x0A17, name='rms_voltage_swell_period_ph_c', type=<class 'zigpy.types.basic.uint16_t'>, zcl_type=<DataTypeId.uint16: 33>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0304": {
                "attribute": "ZCLAttributeDef(id=0x0304, name='total_active_power', type=<class 'zigpy.types.basic.int32s'>, zcl_type=<DataTypeId.int32: 43>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0306": {
                "attribute": "ZCLAttributeDef(id=0x0306, name='total_apparent_power', type=<class 'zigpy.types.basic.uint32_t'>, zcl_type=<DataTypeId.uint32: 35>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              },
              "0x0305": {
                "attribute": "ZCLAttributeDef(id=0x0305, name='total_reactive_power', type=<class 'zigpy.types.basic.int32s'>, zcl_type=<DataTypeId.int32: 43>, access=<ZCLAttributeAccess.Read|Report: 9>, mandatory=False, is_manufacturer_specific=False)",
                "value": null
              }
            },
            "unsupported_attributes": [
              768,
              770,
              1024,
              1025,
              1026,
              1027,
              1287,
              1290,
              1293,
              1295,
              1296,
              "ac_frequency",
              "ac_frequency_divisor",
              "ac_frequency_max",
              "ac_frequency_multiplier",
              "active_power_max",
              "apparent_power",
              "power_divisor",
              "power_factor",
              "power_multiplier",
              "rms_current_max",
              "rms_voltage_max"
            ]
          },
          "0x1000": {
            "endpoint_attribute": "lightlink",
            "attributes": {},
            "unsupported_attributes": []
          },
          "0xfc7c": {
            "endpoint_attribute": "manufacturer_specific",
            "attributes": {},
            "unsupported_attributes": []
          },
          "0xfc85": {
            "endpoint_attribute": "manufacturer_specific",
            "attributes": {},
            "unsupported_attributes": []
          }
        },
        "out_clusters": {
          "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)",
                "value": null
              },
              "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)",
                "value": 33816628
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              },
              "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)",
                "value": null
              }
            },
            "unsupported_attributes": []
          }
        }
      },
      "242": {
        "device_type": {
          "name": "PROXY_BASIC",
          "id": 97
        },
        "profile_id": 41440,
        "in_clusters": {
          "0x0021": {
            "endpoint_attribute": "green_power",
            "attributes": {},
            "unsupported_attributes": []
          }
        },
        "out_clusters": {
          "0x0021": {
            "endpoint_attribute": "green_power",
            "attributes": {},
            "unsupported_attributes": []
          }
        }
      }
    }
  }
}


@cristiangauma
Copy link

I've just bought this smart plug, and the values appear to be correct on my Home-Assistant instance.

imagen

@parrel
Copy link

parrel commented Sep 21, 2024

I just bought this plug as well, and I have the same problem.

@cristiangauma can you share your firmware version?

@saversux
Copy link

I had the same problem, updated the firmware with ZHA OTA to 0x02040045 and this fixed the issue. It displays the correct voltage now

@parrel
Copy link

parrel commented Sep 21, 2024

@saversux is there a way to force an update?

@saversux
Copy link

saversux commented Sep 21, 2024

If you have Tradfri OTA activated it should display the update in the updates section. @parrel

You need to set this in your configurations.yaml

zha:
  zigpy_config:
    ota:
      ikea_provider: true

@parrel
Copy link

parrel commented Sep 21, 2024

I have that but for some reason it says 0x02040034 is the latest version.

@gllmlbrt
Copy link
Author

I had the same problem, updated the firmware with ZHA OTA to 0x02040045 and this fixed the issue. It displays the correct voltage now

I read on other threads about Z2MQTT that the new firmware fixes the voltage indeed, but still has the wrong Power. Can you confirm whether it fixes both, by testing a power reading you know for sure ?

@saversux
Copy link

@gllmlbrt just tested it with a USB-C charger that has a display for the power output.
The power output in watts of the plug matches the reported number on the charger.

Additional learning: it seems to push updates very frequent, much faster than Tuya TS011F.

image

@gllmlbrt
Copy link
Author

Just got it upgrded to 0x02040045 and it all displays as expected.
Will clost the issue.

@MattWestb
Copy link
Contributor

MattWestb commented Sep 21, 2024

The OTA is only in Dirigera feed.
If like updating with local file download this from the index of Dirigera OTA feed:
https://fw.ota.homesmart.ikea.com/files/inspelning-smart-plug-soc_release_prod_v33816645_02579ff4-6fec-42f6-8957-4048def87def.ota

Meta data in the signed file:

IKEA of Sweden
INSPELNING Smart Plug 
20240801
E2132
www.ikea.com
2.4.45

@cristiangauma
Copy link

Sorry, I forgot to confirm that yes, once I added the smart plug to homeassistant, a firmware upgrade notification appeared asking to upgrade to 0x02040045. The screenshot that I shared before was after upgrading. Before upgrading I didn't check the entities, as the first thing that I did is to upgrade to the latest firmware.

@folfy
Copy link
Contributor

folfy commented Sep 22, 2024

THe Z2M community seems to be on to the topic of the bad power reading already, I also noticed that it's off only for loads >=1000W. Seems to be an auto-ranging feature of the plug, see my comment on Z2M thread.

So it seems we need to check/update the ac_power_divisor on every update of the power-value, and reflect it in the shown value accordingly.

@gllmlbrt maybe you wanna reopen this topic?

Also I opened PR #3379 to remove the level controls from the configuration panel.

@gllmlbrt
Copy link
Author

Re opened for visibility until the power values are 100% confirmed to be OK.

@TheJulianJES TheJulianJES added the ZHA lib This issue will need changes directly in ZHA. label Sep 22, 2024
@jasimancas
Copy link
Contributor

I have the same problem, I have updated the firwmare and from 22.7V I have gone to 227V, that part corrected (Voltage), but the part of W (Power) when it passes 999V makes an erroneous division.

I know it is reported, but the interpretation error comes from the way the device works? or from the way zigpy manages the data? I mean, it doesn't follow a standard (or at least the same as other sockets).

It's more for knowledge :)

Thanks!!

@maceddy
Copy link

maceddy commented Oct 10, 2024

Same issues. Is there a way to update the firmware without Tradfri? I paired directly in ZHA.

@MattWestb
Copy link
Contributor

Configure OTA updates for ZHA then you can update all IKEA devices from ZHA.

@WCAve
Copy link

WCAve commented Oct 11, 2024

It seems like there is some kind of divisor that needs to be taken into account for measurements above 1000w
Koenkk/zigbee2mqtt#23961
It's fixed in z2m now or so it seems.

Otherwise, the newest firmware does fix the incorrect voltage reading, but not the readings above 1000w. Seems like it would be as simple as multiplying the power rating by the multiplier that is supplied by the plug.

@MattWestb
Copy link
Contributor

Need adding binding and reporting to the quirk and it shall working OK.

@JRascagneres
Copy link

Am also having the 1000W issue. Temporarily worked around with a template. I assume we just need a quirk writing?

@jutter88
Copy link

Is there any progress in solving the power measurement issue in ZHA for
values >999 watt? Running the latest Inspelning firmware that corrected
the voltage reading.

@Nbird67
Copy link

Nbird67 commented Dec 4, 2024

Some news about this issue ? (1000W)

@BMAN1995
Copy link

BMAN1995 commented Dec 16, 2024

Here is what I found to be a fix for the >1000W issue. Not sure if this is a permanent fix as I have only been using it for a couple of days. A firmware update will most likely revert this and you will need to perform it again. I have not tested this though.

You will need:

  • ZHA Toolkit (Can be downloaded from HACS)
  • Latest firmware (0x02040045 as I am writing this)

This can be done from within developer tools as well but I stored it in an automation for easy access in the future.

alias: IKEA INSPELNING Report
description: ""
triggers: []
conditions: []
actions:
  - action: zha_toolkit.conf_report
    metadata: {}
    data:
      ieee: 6c:fd:22:ff:fe:16:c9:cb
      endpoint: 1
      cluster: 2820
      attribute: 1541
      min_interval: 2
      reportable_change: 1
      max_interval: 5
mode: single

Just create a new automation and go into YAML-editing mode and paste the above. Then go back into the normal editing mode.

You will need to change the IEEE to your specific plug, you can find yours under "Zigbee info" on the plug device page.
After entering the correct IEEE just click on the three dots and hit "Run" (Run might not be correct as I am not using english).

image

image

@MattWestb
Copy link
Contributor

It shall working only if the power is going up or down it can being the "old" power factor is being used for the first report but i think we can living with it.

Ping: @puddly and @TheJulianJES do you both have some thinking implanting reporting if this cluster / attribute for IKEA devices so we getting it working OK ?

@BMAN1995
Copy link

It shall working only if the power is going up or down it can being the "old" power factor is being used for the first report but i think we can living with it.

Ping: @puddly and @TheJulianJES do you both have some thinking implanting reporting if this cluster / attribute for IKEA devices so we getting it working OK ?

I was specifically looking for that during my testing with 5 different plugs, but I never had that issue. You are right that it could happen.

@MattWestb
Copy link
Contributor

Its only theoretic and have not seen it then sniffing IKEA Dirigera but if its happening its only for one reading if its happening.

Bra jobbat !!!

@Nbird67
Copy link

Nbird67 commented Dec 27, 2024

Can this fix be added to a quirk ?

@xoferz
Copy link

xoferz commented Jan 4, 2025

Not only is my voltage off, but amps*volts do not make watts:
Current 3.3 A
Power 527 W
Voltage 22.9 V

220V system, but neither 3.3A times 229V nor 3.3A times 22.9V result in 527W.
~500W seems reasonable, it is connected to a battery charger that has 500W on its label.

@Peter376
Copy link

Peter376 commented Jan 5, 2025

Same >999W issue here. F/W xxx45, newest per Jan 2025.
Can we assume that IKEA is aware of this issue and that another F/W update is in the works?

@folfy
Copy link
Contributor

folfy commented Jan 6, 2025

Not only is my voltage off, but amps*volts do not make watts:

That's because for AC, true power P = U * I * cos(phi), where cos(phi) only ever can be considered almost 1 for resistive loads like a space heater for example. Apparent power S = 229V*3.3A = 756 VA, which would result in a cos(phi) of 0.697, which depending on your load could be very plausible. If you wanna know more, check out wikipedia.

Since we don't know cos(phi) from the plug (some other plugs like the Aqara Smart Plug report this attribute too), we cannot reliably cross-check the values by the plug between each other. We can be pretty sure the voltage should be way higher and the scalar is not up-to-date (even in the US with their lower voltage), and it's possible to say if the values are likely off, if cos(phi) < 0.1 at higher loads like 100W+, and also cos(phi) cannot be greater 1 ofc, but for the most part it's still assumptions, i.e. a very hacky solution that will still cause issues for ppl.

So to fix this properly, we have to figure out how to set reporting intervals like @BMAN1995 already showed how to do via ZHA toolkit as a workaround, and implement the same solution in a proper quirk somehow. Unfortunately all this seems way easier in Z2M still, and while the issue also doesn't seem to be completly fixed there, I'm rly considering switching over the way better device support and expandability overall :/

@MattWestb
Copy link
Contributor

@puddly and @TheJulianJES This is still one issue that no devs have looking on and its one of the most speed devices and its need attention for the devs then normal users is not having the knowledge implanting the reporting and how it shall being done in the best way (very likely IKEA specific for not messing with other devices).
If not having the device ordering online at your IKEA store then its released all over the world and its many users (including me) that can helping testing the solution then its implanted.

Thanks in advance.
MW

@TheJulianJES TheJulianJES added the priority: medium This should be addressed or looked at soon label Jan 6, 2025
@puddly
Copy link
Contributor

puddly commented Jan 6, 2025

I think setting up the attributes for reporting should work: zigpy/zha#348. They're listed as reportable in the spec and since this is one of the few devices that actually changes them, this should be possible.

I don't have a device to test with at the moment but I'm probably pick one up later this week. For reference, this is the config we'd be using:

alias: IKEA INSPELNING Report
description: ""
triggers: []
conditions: []
actions:
  - action: zha_toolkit.conf_report
    metadata: {}
    data:
      ieee: 6c:fd:22:ff:fe:16:c9:cb
      endpoint: 1
      cluster: 2820
      attribute: 1541
      min_interval: 0  # This I think should be 0, not 2, because we want the device to always report changes
      reportable_change: 1
      max_interval: 900
mode: single

I'm not sure if the order in which attribute reporting is set up matters, as we ideally want the divisor and multiplier attributes to come in before the actual readings.

@MattWestb
Copy link
Contributor

By the way P of reporting order in your PR.
I think it can also being done in the sequence the binding its being added to the controller (i think new IKEA remotes with device binding is doing it like that).

@folfy
Copy link
Contributor

folfy commented Jan 7, 2025

@MattWestb @puddly I agree, the order of configuring reporting shouldn't rly matter, it's just values/attributes you're setting on the device (i.e. it doesn't keep track of any order changing them).

@puddly I can try patching my HA / ZHA setup and having a look / provide logs and feedback. Actually I even got a second ZBDongle and IKEA inspelning plug, that I can throw into my HA testing container and provide access for you guys, if it'd help ya.

I'd say min_interval of divisor/multiplier should be in-line / ident with what is set for the actual attributes? I could look into it / try to fetch it with ZHA toolkit during the week.

@Nbird67
Copy link

Nbird67 commented Jan 12, 2025

The ZHA toolkit fix from @BMAN1995 seems to do the trick on my side with min_interval: 2
Should I push min_interval to 0 ?

I tried with 2 Inspelning (dishwasher and dryer) next step will be on a washing machine and cooking oven

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority: medium This should be addressed or looked at soon ZHA lib This issue will need changes directly in ZHA.
Projects
None yet
Development

Successfully merging a pull request may close this issue.