# How much power is your laptop using?

Products like Kill-A-Watt show how much power appliances are using. It’s good way to measure your computer’s power consumption — when it’s plugged in. But what if I want to know how much power my laptop is using when I’m not plugged in? Turns out it’s fairly easy to get battery info. Running `cat /proc/acpi/battery/BAT0/state` should return the current discharge rate and total battery capacity.

The trouble is that the “current rate” field sometimes switches between mW and mA. I have no idea why this is the case. Oh well, we can easily convert mA to mW with the formula: \$latex watts = amps times volts \$.

The end result is this conky friendly bash script:

[bash]
#!/usr/bin/env bash
# Print the current power consumption in watts.
# The script pulls the power consumption info
# from /proc/acpi/battery/BAT0/state
#
# Usage: power.sh [battery_num]
#
# \${execi 10 ~/conkyscripts/power.sh 0}
#

# Default is BAT0
BATTERY=0
if [ \$1 ]; then
BATTERY=\$1
fi

# Sometimes the "present rate" is returned in milliwatts,
# but sometimes it is in milliamps. If it’s in milliwatts,
# we just convert to watts and return. Otherwise we
# convert to watts with the formula:
# Watts = Amps * Volts

UNIT=`cat /proc/acpi/battery/BAT\$BATTERY/state |
grep "present rate:" | awk ‘{ print \$(NF) }’`

if [ \$UNIT == "mW" ]; then
MILLI_WATTS=`cat /proc/acpi/battery/BAT\$BATTERY/state |
grep "present rate:" | awk ‘{ print \$(NF-1) }’`
e cho \$[ \$MILLI_WATTS / 1000 ].\$[ (\$MILLI_WATTS % 1000) / 100 ]
else
MILLI_AMPS=`cat /proc/acpi/battery/BAT\$BATTERY/state |
grep "present rate:" | awk ‘{ print \$(NF-1) }’`
MILLI_VOLTS=`cat /proc/acpi/battery/BAT\$BATTERY/state |
grep "present voltage:" | awk ‘{ print \$(NF-1) }’`
POWER=\$[\$MILLI_AMPS * \$MILLI_VOLTS]
echo \$[ \$POWER / 1000000 ].\$[ (\$POWER % 1000000) / 100000 ]
fi
[/bash]