PowerSource Cluster

Cluster ID: 0x002F  |  Endpoint: Typically on Endpoint 1 (functional endpoint)

PowerSource describes the device's power information, including power status, wired power parameters, battery level, and charging information. This Cluster is read-only — no Commands, only Attributes.

Battery Level Calculation Pitfall

The BatPercentRemaining value must be divided by 2 to get the actual percentage. For example, if the device returns 200, the actual level is 100%; 150 means 75%. If the raw value is displayed directly as a percentage, users will see "200%" battery level.

Attribute Overview

PowerSource attributes are organized into five groups. Click an attribute ID to jump to its detailed description.

ID Name Type Group Description
0x00 Status enum8 Status Information Power status
0x01 Order uint8 Status Information Power priority order
0x02 Description string Status Information Power description text
0x03 WiredAssessedInputVoltage uint32 Wired Power Assessed input voltage (mV)
0x04 WiredAssessedInputFrequency uint16 Wired Power Assessed input frequency (Hz)
0x05 WiredCurrentType enum8 Wired Power Current type (AC/DC)
0x06 WiredAssessedCurrent uint32 Wired Power Assessed current (mA)
0x07 WiredNominalVoltage uint32 Wired Power Nominal voltage (mV)
0x08 WiredMaximumCurrent uint32 Wired Power Maximum current (mA)
0x09 WiredPresent bool Wired Power Whether wired power is connected
0x0A ActiveWiredFaults list Wired Power Current wired power fault list
0x0B BatVoltage uint32 Battery Basics Battery voltage (mV)
0x0C BatPercentRemaining uint8 Battery Basics Battery remaining percentage (divide by 2)
0x0D BatTimeRemaining uint32 Battery Basics Estimated remaining time (seconds)
0x0E BatChargeLevel enum8 Battery Basics Battery charge level
0x0F BatReplacementNeeded bool Battery Basics Whether battery replacement is needed
0x10 BatReplaceability enum8 Battery Basics Battery replaceability
0x11 BatPresent bool Battery Basics Whether battery is present
0x12 ActiveBatFaults list Battery Basics Current battery fault list
0x13 BatReplacementDescription string Battery Basics Battery replacement description
0x14 BatCommonDesignation enum16 Battery Specifications Battery common designation code
0x15 BatANSIDesignation string Battery Specifications ANSI designation
0x16 BatIECDesignation string Battery Specifications IEC designation
0x17 BatApprovedChemistry enum16 Battery Specifications Battery chemistry type
0x18 BatCapacity uint32 Battery Specifications Battery capacity (mAh)
0x19 BatQuantity uint8 Charging Information Battery quantity
0x1A BatChargeState enum8 Charging Information Charge state
0x1B BatTimeToFullCharge uint32 Charging Information Estimated time to full charge (seconds)
0x1C BatFunctionalWhileCharging bool Charging Information Whether device is functional while charging
0x1D BatChargingCurrent uint32 Charging Information Charging current (mA)
0x1E ActiveBatChargeFaults list Charging Information Current charging fault list
0x1F EndpointList list Charging Information List of Endpoints powered by this source

Status Information (0x00 – 0x02)

Required base attributes for every PowerSource instance, describing the power source's current state and identity.

ID Name Type Description
0x00 Status enum8 Current power source operating state (see enum below)
0x01 Order uint8 Power source priority. When a device has multiple sources, lower value = higher priority
0x02 Description string Power source description text, e.g. "Battery", "USB-C", "DC Power"

Status Enum Values

0
Unspecified Unspecified
1
Active Actively powering (normal operating state)
2
Standby Standby (not the primary power source)
3
Unavailable Unavailable (battery removed or power fault)

Wired Power (0x03 – 0x0A)

Describes wired power source electrical parameters and status. These attributes are only meaningful when the power source type is wired.

Applicable Scope

Most battery-powered devices (e.g. door locks, sensors) do not report wired power attributes. These attributes mainly appear on devices powered by AC/DC adapters, USB, or PoE.

ID Name Type Description
0x03 WiredAssessedInputVoltage uint32 Actual assessed voltage of wired input, in mV
0x04 WiredAssessedInputFrequency uint16 Actual assessed frequency of wired input, in Hz. Only meaningful for AC power
0x05 WiredCurrentType enum8 Current type: 0 = AC, 1 = DC
0x06 WiredAssessedCurrent uint32 Actual assessed current of wired input, in mA
0x07 WiredNominalVoltage uint32 Nominal voltage of wired power source, in mV
0x08 WiredMaximumCurrent uint32 Maximum current supported by wired power source, in mA
0x09 WiredPresent bool Whether wired power is connected. true = plugged in, false = not connected
0x0A ActiveWiredFaults list Active fault list for the wired power source, such as overvoltage, overcurrent, etc.

Battery Basics (0x0B – 0x13)

The most commonly used attribute group for battery-powered devices — Apps rely on these for displaying battery level and low-battery alerts.

ID Name Type Description
0x0B BatVoltage uint32 Current battery voltage, in mV
0x0C BatPercentRemaining uint8 Battery remaining percentage. Actual percentage = value / 2, range 0~200 maps to 0%~100%. Nullable; returns null when device doesn't support precise level
0x0D BatTimeRemaining uint32 Estimated battery remaining time, in seconds. Nullable
0x0E BatChargeLevel enum8 Battery charge level (see enum below)
0x0F BatReplacementNeeded bool Whether battery needs replacement. true = should be replaced soon
0x10 BatReplaceability enum8 Battery replaceability method (see enum below)
0x11 BatPresent bool Whether battery is installed. true = installed
0x12 ActiveBatFaults list Active fault list for the battery, such as overheating, voltage anomaly, etc.
0x13 BatReplacementDescription string Battery replacement instructions, including model and specifications, e.g. "4x AA", "CR2032"

BatChargeLevel Enum Values

0
OK Battery level normal
1
Warning Low battery warning
2
Critical Critically low battery, requires immediate attention

BatReplaceability Enum Values

0
Unspecified Unspecified
1
NotReplaceable Not replaceable (built-in battery)
2
UserReplaceable User replaceable
3
FactoryReplaceable Factory replaceable (requires professional service)

Battery Specifications (0x14 – 0x18)

Describes specific battery model and technical specifications to guide users in selecting the correct replacement battery.

ID Name Type Description
0x14 BatCommonDesignation enum16 Battery common designation numeric code, e.g. AA=15, AAA=10, CR2032=40, etc.
0x15 BatANSIDesignation string Battery's ANSI standard designation
0x16 BatIECDesignation string Battery's IEC standard designation
0x17 BatApprovedChemistry enum16 Battery chemistry type, e.g. Alkaline=1, LithiumIon=6, etc.
0x18 BatCapacity uint32 Battery capacity, in mAh

BatCommonDesignation Enum Values

10
AAA
15
AA
17
C
18
D
40
CR2032
41
CR2025

BatApprovedChemistry Enum Values

1
Alkaline Alkaline
6
LithiumIon Lithium-Ion
8
LithiumPolymer Lithium Polymer
10
NickelMetalHydride Nickel Metal Hydride

Charging Information (0x19 – 0x1F)

Describes battery charging status, charging parameters, and the mapping between power sources and Endpoints.

ID Name Type Description
0x19 BatQuantity uint8 Number of batteries used by the device
0x1A BatChargeState enum8 Current charge state (see enum below)
0x1B BatTimeToFullCharge uint32 Estimated time to full charge, in seconds. Nullable
0x1C BatFunctionalWhileCharging bool Whether the device remains functional while charging. true = functional
0x1D BatChargingCurrent uint32 Current charging current, in mA
0x1E ActiveBatChargeFaults list Active fault list during charging
0x1F EndpointList list List of Endpoint numbers powered by this source. Used to identify which functional endpoints a power source supplies

BatChargeState Enum Values

0
Unknown Charge state unknown
1
IsCharging Charging
2
IsAtFullCharge Fully charged
3
IsNotCharging Not charging (typical for non-rechargeable battery devices)

Example Data

A typical battery-powered device's PowerSource Cluster read result:

{
  // --- Status Information ---
  "0x0": 1,                  // Status = Active (currently powering)
  "0x1": 0,                  // Order = 0 (highest priority)
  "0x2": "Battery",          // Description = "Battery"

  // --- Battery Basics ---
  "0xB": 3200,               // BatVoltage = 3200 mV
  "0xC": 180,                // BatPercentRemaining = 180 → actual 90%
  "0xD": 7776000,            // BatTimeRemaining = 7776000 seconds (approx. 90 days)
  "0xE": 0,                  // BatChargeLevel = OK
  "0xF": false,              // BatReplacementNeeded = false
  "0x10": 2,                 // BatReplaceability = UserReplaceable
  "0x11": true,              // BatPresent = true (battery installed)
  "0x13": "4x AA",           // BatReplacementDescription

  // --- Battery Specifications ---
  "0x14": 15,                // BatCommonDesignation = 15(AA)
  "0x18": 2800,              // BatCapacity = 2800 mAh

  // --- Charging Information ---
  "0x1A": 3                  // BatChargeState = IsNotCharging (non-rechargeable battery)
}
Battery Level Display Logic

Typical processing flow when displaying battery information:

  1. Read BatPercentRemaining (0x0C), divide by 2 to get percentage
  2. Determine icon color based on BatChargeLevel (0x0E): OK = green, Warning = yellow, Critical = red
  3. If BatReplacementNeeded (0x0F) is true, show an additional replacement prompt
  4. Note that BatPercentRemaining is Nullable and may be null (when device doesn't support precise levels); in that case, use BatChargeLevel for a rough display