电源 Cluster(PowerSource)

Cluster ID: 0x002F  | 所在 Endpoint: 通常在 Endpoint 1(功能端点)

PowerSource 描述设备的电源信息,包括电源状态、有线供电参数、电池电量与充电信息。 这个 Cluster 是只读的 —— 没有 Command,只有 Attribute。

电量计算陷阱

BatPercentRemaining 的值需要除以 2 才是实际百分比。 例如设备返回 200,实际电量是 100%;返回 150,实际电量是 75%。 如果直接拿原始值当百分比显示,用户会看到 "200%" 的电量。

属性总览

PowerSource 的属性按功能分为五组。点击属性 ID 可跳转到对应的详细说明。

ID名称类型分组说明
0x00Statusenum8状态信息电源状态
0x01Orderuint8状态信息电源优先级排序
0x02Descriptionstring状态信息电源描述文字
0x03WiredAssessedInputVoltageuint32有线供电检测输入电压(mV)
0x04WiredAssessedInputFrequencyuint16有线供电检测输入频率(Hz)
0x05WiredCurrentTypeenum8有线供电电流类型(AC/DC)
0x06WiredAssessedCurrentuint32有线供电检测电流(mA)
0x07WiredNominalVoltageuint32有线供电额定电压(mV)
0x08WiredMaximumCurrentuint32有线供电最大电流(mA)
0x09WiredPresentbool有线供电有线电源是否连接
0x0AActiveWiredFaultslist有线供电当前有线电源故障列表
0x0BBatVoltageuint32电池基础电池电压(mV)
0x0CBatPercentRemaininguint8电池基础电池剩余百分比(需除以 2)
0x0DBatTimeRemaininguint32电池基础预估剩余时间(秒)
0x0EBatChargeLevelenum8电池基础电池电量等级
0x0FBatReplacementNeededbool电池基础是否需要更换电池
0x10BatReplaceabilityenum8电池基础电池可更换性
0x11BatPresentbool电池基础电池是否安装
0x12ActiveBatFaultslist电池基础当前电池故障列表
0x13BatReplacementDescriptionstring电池基础电池更换说明
0x14BatCommonDesignationenum16电池规格电池通用型号代码
0x15BatANSIDesignationstring电池规格ANSI 标准编号
0x16BatIECDesignationstring电池规格IEC 标准编号
0x17BatApprovedChemistryenum16电池规格电池化学类型
0x18BatCapacityuint32电池规格电池容量(mAh)
0x19BatQuantityuint8充电信息电池数量
0x1ABatChargeStateenum8充电信息充电状态
0x1BBatTimeToFullChargeuint32充电信息充满预估时间(秒)
0x1CBatFunctionalWhileChargingbool充电信息充电时设备是否可用
0x1DBatChargingCurrentuint32充电信息充电电流(mA)
0x1EActiveBatChargeFaultslist充电信息当前充电故障列表
0x1FEndpointListlist充电信息该电源供电的 Endpoint 列表

状态信息(0x00 – 0x02)

每个 PowerSource 实例必须具备的基础属性,描述电源的当前状态和身份。

ID名称类型说明
0x00Status(电源状态)enum8当前电源工作状态(见下方枚举)
0x01Order(优先级)uint8电源优先级排序。设备有多个电源时,数值越小优先级越高
0x02Description(描述)string电源描述文字,如 "Battery""USB-C""DC Power"

Status 枚举值

0
Unspecified未指定
1
Active正在供电(正常工作状态)
2
Standby待机(未作为主要电源)
3
Unavailable不可用(电池已取出或电源故障)

有线供电(0x03 – 0x0A)

描述有线电源的电气参数和状态。这组属性仅在电源类型为有线时才有意义。

适用范围

大多数电池供电设备(如门锁、传感器)不会上报有线供电属性。 这组属性主要出现在使用 AC/DC 适配器、USB 或 PoE 供电的设备上。

ID名称类型说明
0x03WiredAssessedInputVoltage(检测输入电压)uint32有线输入的实际检测电压,单位 mV
0x04WiredAssessedInputFrequency(检测输入频率)uint16有线输入的实际检测频率,单位 Hz。仅交流供电时有意义
0x05WiredCurrentType(电流类型)enum8电流类型:0 = AC(交流),1 = DC(直流)
0x06WiredAssessedCurrent(检测电流)uint32有线输入的实际检测电流,单位 mA
0x07WiredNominalVoltage(额定电压)uint32有线电源的额定电压,单位 mV
0x08WiredMaximumCurrent(最大电流)uint32有线电源支持的最大电流,单位 mA
0x09WiredPresent(有线电源在位)bool有线电源是否已连接。true = 已插入,false = 未连接
0x0AActiveWiredFaults(有线故障列表)list当前有线电源的活跃故障列表,如过压、过流等

电池基础(0x0B – 0x13)

电池供电设备最常用的属性组 —— App 展示电池电量和低电提醒都依赖这些属性。

ID名称类型说明
0x0BBatVoltage(电池电压)uint32当前电池电压,单位 mV
0x0CBatPercentRemaining(剩余百分比)uint8电池剩余百分比。实际百分比 = 值 / 2,范围 0~200 对应 0%~100%。Nullable,设备不支持精确电量时返回 null
0x0DBatTimeRemaining(预估剩余时间)uint32电池预估可用时间,单位秒。Nullable
0x0EBatChargeLevel(电量等级)enum8电池电量等级(见下方枚举)
0x0FBatReplacementNeeded(需要更换)bool是否需要更换电池。true = 应尽快更换
0x10BatReplaceability(可更换性)enum8电池的可更换方式(见下方枚举)
0x11BatPresent(电池在位)bool电池是否已安装。true = 已安装
0x12ActiveBatFaults(电池故障列表)list当前电池的活跃故障列表,如过热、电压异常等
0x13BatReplacementDescription(更换说明)string电池更换说明,包括型号、规格等,如 "4x AA""CR2032"

BatChargeLevel 枚举值

0
OK电量正常
1
Warning低电量警告
2
Critical严重低电量,需要立即处理

BatReplaceability 枚举值

0
Unspecified未指定
1
NotReplaceable不可更换(内置电池)
2
UserReplaceable用户可自行更换
3
FactoryReplaceable需要专业人员更换

电池规格(0x14 – 0x18)

描述电池的具体型号和技术规格,用于指导用户选择正确的替换电池。

ID名称类型说明
0x14BatCommonDesignation(通用型号代码)enum16电池通用型号的数字代码,如 AA=15, AAA=10, CR2032=40 等
0x15BatANSIDesignation(ANSI 编号)string电池的 ANSI 标准编号
0x16BatIECDesignation(IEC 编号)string电池的 IEC 标准编号
0x17BatApprovedChemistry(化学类型)enum16电池化学类型,如 Alkaline=1, LithiumIon=6 等
0x18BatCapacity(电池容量)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名称类型说明
0x19BatQuantity(电池数量)uint8设备使用的电池数量
0x1ABatChargeState(充电状态)enum8当前充电状态(见下方枚举)
0x1BBatTimeToFullCharge(充满时间)uint32预估充满剩余时间,单位秒。Nullable
0x1CBatFunctionalWhileCharging(充电时可用)bool充电期间设备是否仍可正常使用。true = 可用
0x1DBatChargingCurrent(充电电流)uint32当前充电电流,单位 mA
0x1EActiveBatChargeFaults(充电故障列表)list当前充电过程中的活跃故障列表
0x1FEndpointList(供电端点列表)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. 注意 BatPercentRemainingNullable,可能为 null(设备不支持精确电量时),此时用 BatChargeLevel 做粗略展示