Friday, February 3, 2012

A simple laptop battery monitor script

The script displays alert when the battery falls below 20% or charges up beyond 80% which should be the optimal range of its working.The code is as below. Just copy and paste and save as any file name but preferably battery-notify.sh. The script can independent of what name it is given. Needs to have acpi (default install) and notify-send installed (sudo apt-get install notify-osd).


============================================

#!/bin/bash


# battery-notify v2.5.1 by JOnes


# It is a script to monitor battery and keep it between 20% to 80% the optimal battery working range. If the battery goe beyonds the set limit it gives pop-ups every 10 seconds. No sound warning as sound can easily be muted and ignored.
# Things that could be added : 1> The flexibilty of range. But it is not recommended hence not implemented. 2> Notification in form of email or sms. 3> Sound / beep for critical state of battery.
# The script goes into background. To kill it at any time use : battery-notify.sh kill

# do not have to edit beyond this line
#------------------------------------------


if [ "$1" == "kill" ]
then
# if command line parameter is "kill" then kill all running instances of this script.

nnn=`ps aux | grep $0 | tr -s " " | cut -d" " -f2 `
echo -e $$ "\n====" # prints PID of this instance of script. make sure not to kill itself.
for ii in `echo $nnn`
do
if [ "$ii" -ne "$$" ]
then
echo "Killing PID:" $ii
kill -9 $ii
fi
done
exit
fi



# exit if another instance is running

process=$0
# value of this exp_count depends on the number of cores of CPU. check the process on first run and apply the value here. Need to uncomment the line #echo ${run_count} to chcck no. of cores used by kernel. It maybe different for the physical no. of cores.
exp_count=2

run_count=`ps aux | grep $process | grep -v 'grep' | wc -l`

# uncomment this line to chcck no. of cores used by kernel. It maybe different for the physical no. of cores.
#echo ${run_count}

if [ ${exp_count} -eq ${run_count} ] ; then
# do nothing; just exit the if statement
echo
else
echo "another instance is running"
echo -e "The script goes into background. To kill it at any time use : " `basename $0` "kill"
exit
fi


if [ ! `which acpi` ] ; then
echo -e "Install acpi \nsudo apt-get install acpi"
exit 0
fi

if [ ! `which notify-send` ] ;then
echo -e "Install notify-send \nsudo apt-get install libnotify-bin"
exit 0
fi

v1=`echo $0 | sed 's/\.//' | sed 's|\/||' `


echo -e "The script goes into background. To kill it at any time use : " `basename $0` "kill"

echo "----------------------"
acpi | cut -d" " -f4
echo "----------------------"
sensors | grep "Core"
echo "----------------------"


{
while [ 1 ]
do
# this snippet extracts the battery status as percentage
aa=`acpi | cut -d"," -f2 | tr -d "% "`
# grep -c counts the no. of occurance of the text
bb1=`acpi | grep -c "Discharging"`
bb2=`acpi | grep -c "Charging"`
#echo $bb1 $bb2


# if discharging then
if [[ $bb1 > 0 ]] ; then
if [[ $aa < 20 ]] ; then
notify-send -t 100 "Battery Status: $aa%. Plug charger"
fi
fi


# if charging then
if [[ $bb2 > 0 ]] ; then
if [[ $aa > 80 ]] ; then
notify-send -t 1000 "Battery Status: $aa%. Unplug charger."
fi
fi


sleep 10
done


}&


No comments:

OK GOOGLE on Samsung Galaxy S7 doesn’t work

To make Ok Google detection work on Galaxy S7 (Galaxy series phones) we need to perform a couple of steps. 1. As long as Samsung S vo...