这是一个非常简单的问题,但我认为就其简单性而言,它具有 aqua 输出。
案例是我有兴趣更好地了解托管在中的文件,这些文件/sys/class/power_supply
管理系统的电池监控。就我而言,我使用带电池的笔记本电脑,其目录位于/sys/class/power_supply/BAT0
. 另一方面,据我从这里了解到,我有ac-ADaPter接口。/sys/class/power_supply/AC0
在电池接口里面,我找到了各种文件:
/sys/class/power_supply/BAT0$ ls
alarm model_name
capacity power
capacity_level present
charge_full serial_number
charge_full_design status
charge_now subsystem
current_now technology
cycle_count type
device uevent
hwmon2 voltage_min_design
manufacturer voltage_now
我理解是capacity
指当前电池百分比。我也理解上下文capacity_level
和status
:
/sys/class/power_supply/BAT0$ cat capacity
81
/sys/class/power_supply/BAT0$ cat capacity_level
Normal
/sys/class/power_supply/BAT0$ cat status
Discharging
但是,我不理解其他文件,例如charge_full
、charge_full_design
、或:charge_now
current_now
cycle_count
/sys/class/power_supply/BAT0$ cat charge_full
900000
/sys/class/power_supply/BAT0$ cat charge_full_design
4100000
/sys/class/power_supply/BAT0$ cat charge_now
630000
/sys/class/power_supply/BAT0$ cat current_now
1191000
/sys/class/power_supply/BAT0$ cat cycle_count
0
在uevent
课程中,您可以查看之前的每个变量,并提供更多详细信息:
POWER_SUPPLY_NAME=BAT0
POWER_SUPPLY_TYPE=Battery
POWER_SUPPLY_STATUS=Discharging
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CYCLE_COUNT=0
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11400000
POWER_SUPPLY_VOLTAGE_NOW=11759000
POWER_SUPPLY_CURRENT_NOW=1089000
POWER_SUPPLY_CHARGE_FULL_DESIGN=4100000
POWER_SUPPLY_CHARGE_FULL=900000
POWER_SUPPLY_CHARGE_NOW=675000
POWER_SUPPLY_CAPACITY=75
POWER_SUPPLY_CAPACITY_LEVEL=Normal
POWER_SUPPLY_MODEL_NAME=standard
POWER_SUPPLY_MANUFACTURER=OEM
POWER_SUPPLY_SERIAL_NUMBER=00001
了解清楚电池容量的百分比来自于POWER_SUPPLY_CHARGE_NOW
(/sys/class/power_supply/BAT0/charge_now
)对POWER_SUPPLY_CHARGE_FULL
(/sys/class/power_supply/BAT0/charge_full
)的计算:100*675000/900000=75。
但是你怎么能理解这些价值观呢?从哪里来POWER_SUPPLY_CHARGE_NOW
?上述值的电压会干扰什么吗?
您可能想了解 Linux 电源设备类是如何在 Linux 内核源代码的include/linux/power_supply.h中定义的。那里描述的数据结构中的值按原样显示在
/sys/class/power_supply/*
:所以所有的
charge_*
数值都是以微安小时为单位的,单位current_now
是微安。电池的最低设计电压(= 绝不能放电到低于此电压)为 11400000 微伏 = 11.4 伏。
当前电压水平为 11.759 伏。
电池现在提供 1.089 安培的电流。
当它是新的时,电池声称具有 4.10 安培小时的充满电容量,但此后电池性能下降,因此当前充满电的容量仅为 0.9 安培小时。目前,它还剩下 0.675 安培小时的电量。
因此,作为一个简单的估计,根据您现在从电池获取的电流,您将有 0.675 Ah / 1.089 A = 大约 0.62 小时,或大约 37 分钟的剩余电量。
该
power_supply.h
文件有很多其他信息注释,直接描述各种值的含义。您可能想阅读这些评论。