电源 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(干电池不充电)
}
电量展示处理逻辑

展示电量信息时,典型的处理流程:

  1. 读取 BatPercentRemaining (0x0C),除以 2 得到百分比
  2. 根据 BatChargeLevel (0x0E) 决定图标颜色:OK 绿色,Warning 黄色,Critical 红色
  3. 如果 BatReplacementNeeded (0x0F) 为 true,额外显示更换提示
  4. 注意 BatPercentRemaining 是 Nullable,可能为 null(设备不支持精确电量时),此时用 BatChargeLevel 做粗略展示