电源 Cluster(PowerSource)
Cluster ID: 0x002F | 所在 Endpoint: 通常在 Endpoint 1(功能端点)
PowerSource 描述设备的电源信息,包括电源状态、有线供电参数、电池电量与充电信息。 这个 Cluster 是只读的 —— 没有 Command,只有 Attribute。
电量计算陷阱
BatPercentRemaining 的值需要除以 2 才是实际百分比。 例如设备返回 200,实际电量是 100%;返回 150,实际电量是 75%。 如果直接拿原始值当百分比显示,用户会看到 "200%" 的电量。
属性总览
PowerSource 的属性按功能分为五组。点击属性 ID 可跳转到对应的详细说明。
| ID | 名称 | 类型 | 分组 | 说明 |
|---|---|---|---|---|
0x00 | Status | enum8 | 状态信息 | 电源状态 |
0x01 | Order | uint8 | 状态信息 | 电源优先级排序 |
0x02 | Description | string | 状态信息 | 电源描述文字 |
0x03 | WiredAssessedInputVoltage | uint32 | 有线供电 | 检测输入电压(mV) |
0x04 | WiredAssessedInputFrequency | uint16 | 有线供电 | 检测输入频率(Hz) |
0x05 | WiredCurrentType | enum8 | 有线供电 | 电流类型(AC/DC) |
0x06 | WiredAssessedCurrent | uint32 | 有线供电 | 检测电流(mA) |
0x07 | WiredNominalVoltage | uint32 | 有线供电 | 额定电压(mV) |
0x08 | WiredMaximumCurrent | uint32 | 有线供电 | 最大电流(mA) |
0x09 | WiredPresent | bool | 有线供电 | 有线电源是否连接 |
0x0A | ActiveWiredFaults | list | 有线供电 | 当前有线电源故障列表 |
0x0B | BatVoltage | uint32 | 电池基础 | 电池电压(mV) |
0x0C | BatPercentRemaining | uint8 | 电池基础 | 电池剩余百分比(需除以 2) |
0x0D | BatTimeRemaining | uint32 | 电池基础 | 预估剩余时间(秒) |
0x0E | BatChargeLevel | enum8 | 电池基础 | 电池电量等级 |
0x0F | BatReplacementNeeded | bool | 电池基础 | 是否需要更换电池 |
0x10 | BatReplaceability | enum8 | 电池基础 | 电池可更换性 |
0x11 | BatPresent | bool | 电池基础 | 电池是否安装 |
0x12 | ActiveBatFaults | list | 电池基础 | 当前电池故障列表 |
0x13 | BatReplacementDescription | string | 电池基础 | 电池更换说明 |
0x14 | BatCommonDesignation | enum16 | 电池规格 | 电池通用型号代码 |
0x15 | BatANSIDesignation | string | 电池规格 | ANSI 标准编号 |
0x16 | BatIECDesignation | string | 电池规格 | IEC 标准编号 |
0x17 | BatApprovedChemistry | enum16 | 电池规格 | 电池化学类型 |
0x18 | BatCapacity | uint32 | 电池规格 | 电池容量(mAh) |
0x19 | BatQuantity | uint8 | 充电信息 | 电池数量 |
0x1A | BatChargeState | enum8 | 充电信息 | 充电状态 |
0x1B | BatTimeToFullCharge | uint32 | 充电信息 | 充满预估时间(秒) |
0x1C | BatFunctionalWhileCharging | bool | 充电信息 | 充电时设备是否可用 |
0x1D | BatChargingCurrent | uint32 | 充电信息 | 充电电流(mA) |
0x1E | ActiveBatChargeFaults | list | 充电信息 | 当前充电故障列表 |
0x1F | EndpointList | list | 充电信息 | 该电源供电的 Endpoint 列表 |
状态信息(0x00 – 0x02)
每个 PowerSource 实例必须具备的基础属性,描述电源的当前状态和身份。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x00 | Status(电源状态) | enum8 | 当前电源工作状态(见下方枚举) |
0x01 | Order(优先级) | uint8 | 电源优先级排序。设备有多个电源时,数值越小优先级越高 |
0x02 | Description(描述) | string | 电源描述文字,如 "Battery"、"USB-C"、"DC Power" |
Status 枚举值
0
Unspecified未指定
1
Active正在供电(正常工作状态)
2
Standby待机(未作为主要电源)
3
Unavailable不可用(电池已取出或电源故障)
有线供电(0x03 – 0x0A)
描述有线电源的电气参数和状态。这组属性仅在电源类型为有线时才有意义。
适用范围
大多数电池供电设备(如门锁、传感器)不会上报有线供电属性。 这组属性主要出现在使用 AC/DC 适配器、USB 或 PoE 供电的设备上。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x03 | WiredAssessedInputVoltage(检测输入电压) | uint32 | 有线输入的实际检测电压,单位 mV |
0x04 | WiredAssessedInputFrequency(检测输入频率) | uint16 | 有线输入的实际检测频率,单位 Hz。仅交流供电时有意义 |
0x05 | WiredCurrentType(电流类型) | enum8 | 电流类型:0 = AC(交流),1 = DC(直流) |
0x06 | WiredAssessedCurrent(检测电流) | uint32 | 有线输入的实际检测电流,单位 mA |
0x07 | WiredNominalVoltage(额定电压) | uint32 | 有线电源的额定电压,单位 mV |
0x08 | WiredMaximumCurrent(最大电流) | uint32 | 有线电源支持的最大电流,单位 mA |
0x09 | WiredPresent(有线电源在位) | bool | 有线电源是否已连接。true = 已插入,false = 未连接 |
0x0A | ActiveWiredFaults(有线故障列表) | list | 当前有线电源的活跃故障列表,如过压、过流等 |
电池基础(0x0B – 0x13)
电池供电设备最常用的属性组 —— App 展示电池电量和低电提醒都依赖这些属性。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x0B | BatVoltage(电池电压) | uint32 | 当前电池电压,单位 mV |
0x0C | BatPercentRemaining(剩余百分比) | uint8 | 电池剩余百分比。实际百分比 = 值 / 2,范围 0~200 对应 0%~100%。Nullable,设备不支持精确电量时返回 null |
0x0D | BatTimeRemaining(预估剩余时间) | uint32 | 电池预估可用时间,单位秒。Nullable |
0x0E | BatChargeLevel(电量等级) | enum8 | 电池电量等级(见下方枚举) |
0x0F | BatReplacementNeeded(需要更换) | bool | 是否需要更换电池。true = 应尽快更换 |
0x10 | BatReplaceability(可更换性) | enum8 | 电池的可更换方式(见下方枚举) |
0x11 | BatPresent(电池在位) | bool | 电池是否已安装。true = 已安装 |
0x12 | ActiveBatFaults(电池故障列表) | list | 当前电池的活跃故障列表,如过热、电压异常等 |
0x13 | BatReplacementDescription(更换说明) | string | 电池更换说明,包括型号、规格等,如 "4x AA"、"CR2032" |
BatChargeLevel 枚举值
0
OK电量正常
1
Warning低电量警告
2
Critical严重低电量,需要立即处理
BatReplaceability 枚举值
0
Unspecified未指定
1
NotReplaceable不可更换(内置电池)
2
UserReplaceable用户可自行更换
3
FactoryReplaceable需要专业人员更换
电池规格(0x14 – 0x18)
描述电池的具体型号和技术规格,用于指导用户选择正确的替换电池。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x14 | BatCommonDesignation(通用型号代码) | enum16 | 电池通用型号的数字代码,如 AA=15, AAA=10, CR2032=40 等 |
0x15 | BatANSIDesignation(ANSI 编号) | string | 电池的 ANSI 标准编号 |
0x16 | BatIECDesignation(IEC 编号) | string | 电池的 IEC 标准编号 |
0x17 | BatApprovedChemistry(化学类型) | enum16 | 电池化学类型,如 Alkaline=1, LithiumIon=6 等 |
0x18 | BatCapacity(电池容量) | uint32 | 电池容量,单位 mAh |
BatCommonDesignation 枚举值
10
AAA
15
AA
17
C
18
D
40
CR2032
41
CR2025
BatApprovedChemistry 枚举值
1
Alkaline碱性
6
LithiumIon锂离子
8
LithiumPolymer锂聚合物
10
NickelMetalHydride镍氢
充电信息(0x19 – 0x1F)
描述电池的充电状态和充电参数,以及电源与 Endpoint 的映射关系。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x19 | BatQuantity(电池数量) | uint8 | 设备使用的电池数量 |
0x1A | BatChargeState(充电状态) | enum8 | 当前充电状态(见下方枚举) |
0x1B | BatTimeToFullCharge(充满时间) | uint32 | 预估充满剩余时间,单位秒。Nullable |
0x1C | BatFunctionalWhileCharging(充电时可用) | bool | 充电期间设备是否仍可正常使用。true = 可用 |
0x1D | BatChargingCurrent(充电电流) | uint32 | 当前充电电流,单位 mA |
0x1E | ActiveBatChargeFaults(充电故障列表) | list | 当前充电过程中的活跃故障列表 |
0x1F | EndpointList(供电端点列表) | list | 该电源所供电的 Endpoint 编号列表。用于标识一个电源为哪些功能端点供电 |
BatChargeState 枚举值
0
Unknown充电状态未知
1
IsCharging正在充电
2
IsAtFullCharge已充满
3
IsNotCharging未在充电(干电池设备通常为此值)
示例数据
一个典型电池供电设备的 PowerSource Cluster 读取结果:
{
// --- 状态信息 ---
"0x0": 1, // Status = Active(正在供电)
"0x1": 0, // Order = 0(最高优先级)
"0x2": "Battery", // Description = "Battery"
// --- 电池基础 ---
"0xB": 3200, // BatVoltage = 3200 mV
"0xC": 180, // BatPercentRemaining = 180 → 实际 90%
"0xD": 7776000, // BatTimeRemaining = 7776000 秒(约 90 天)
"0xE": 0, // BatChargeLevel = OK
"0xF": false, // BatReplacementNeeded = false
"0x10": 2, // BatReplaceability = UserReplaceable
"0x11": true, // BatPresent = true(电池已安装)
"0x13": "4x AA", // BatReplacementDescription
// --- 电池规格 ---
"0x14": 15, // BatCommonDesignation = 15(AA)
"0x18": 2800, // BatCapacity = 2800 mAh
// --- 充电信息 ---
"0x1A": 3 // BatChargeState = IsNotCharging(干电池不充电)
}电量展示处理逻辑
展示电量信息时,典型的处理流程:
- 读取
BatPercentRemaining (0x0C),除以 2 得到百分比 - 根据
BatChargeLevel (0x0E)决定图标颜色:OK 绿色,Warning 黄色,Critical 红色 - 如果
BatReplacementNeeded (0x0F)为true,额外显示更换提示 - 注意
BatPercentRemaining是 Nullable,可能为null(设备不支持精确电量时),此时用BatChargeLevel做粗略展示