2016-02-19 155 views
0

我想计算直到笔记本电脑中的电池已经放电的时间。我可以使用的数据是通过sysfs中可用,但我不知道要使用的文件和算法:计算电池剩余时间直到电池放电?

$ ls /sys/class/power_supply/BAT0/ | sort 
alarm 
charge_full 
charge_full_design 
charge_now 
current_now 
cycle_count 
device 
manufacturer 
model_name 
power 
present 
serial_number 
status 
subsystem 
technology 
type 
uevent 
voltage_min_design 
voltage_no 

什么是正确的算法来确定留在小时和分钟前的电池是空的时间呢?

+1

尝试类似:charge_now/charge_full =%_left,time_left =(uptime /%_ left) - 正常运行时间; (我只是把它从耳朵里拿出来 - 它在几个快速情况下看起来很近) – marklark

回答

1

为了扩展上述我的意见...

charge_now = 75%(情况1),25%(情况2)

charge_full = 100%的正常运行时间 =2小时

= >%_used = 0.75(情况1),25%(情况2)

(情况1)TIME_LEFT =(2小时/ 0.75) - 2小时=(2.67 - 2)小时

(情况2) time_left =(2小时/ 0.25) - 2小时=(8 - 2)小时

您的里程可能会有所不同...:^)

+0

2小时正常运行时间,充电25%,还剩6小时?在还剩75%的时候?对我来说似乎很奇怪...... – Murphy

+0

它们是不同情况或不同电池的示例(不在我头顶)。他们对同一台笔记本电脑没有意义,所以请选择其他输入并查看输出是否有意义。 – marklark

1

要计算剩余时间,使用POWER_SUPPLY_CHARGE_NOW/POWER_SUPPLY_CURRENT_NOW这将让你离开秒。

现在是消费率的快照,现在收费是剩余金额。使用acpi -b会给你相同的答案。