-
-
Save dushyantahuja/01c9c31fe4120ac038bb to your computer and use it in GitHub Desktop.
CHIP Auto Shutdown based upon battery level
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# 2016 ROBERT WOLTERMAN (xtacocorex) (modified by Dushyant Ahuja) | |
# WITH HELP FROM CHIP-hwtest/battery.sh | |
# THIS NEEDS TO BE RUN AS ROOT | |
# PROBABLY SET AS A CRON JOB EVERY 5 OR 10 MINUTES | |
# SIMPLE SCRIPT TO POWER DOWN THE CHIP BASED UPON BATTERY VOLTAGE | |
# CHANGE THESE TO CUSTOMIZE THE SCRIPT | |
MINVOLTAGELEVEL=2500 | |
MINCHARGECURRENT=10 | |
# TALK TO THE POWER MANAGEMENT | |
i2cset -y -f 0 0x34 0x82 0xC3 | |
# GET POWER OP MODE | |
POWER_OP_MODE=$(i2cget -y -f 0 0x34 0x01) | |
# SEE IF BATTERY EXISTS | |
BAT_EXIST=$(($(($POWER_OP_MODE&0x20))/32)) | |
if [ $BAT_EXIST == 1 ]; then | |
BAT_VOLT_MSB=$(i2cget -y -f 0 0x34 0x78) | |
BAT_VOLT_LSB=$(i2cget -y -f 0 0x34 0x79) | |
BAT_BIN=$(( $(($BAT_VOLT_MSB << 4)) | $(($(($BAT_VOLT_LSB & 0x0F)) )) )) | |
BAT_CRITICAL=$(echo "($BAT_BIN*1.1)<=$MINVOLTAGELEVEL"|bc) | |
# CHECK BATTERY LEVEL AGAINST MINVOLTAGELEVEL | |
if [ "$BAT_CRITICAL" == "1" ] ; then | |
# GET THE CHARGE CURRENT | |
BAT_ICHG_MSB=$(i2cget -y -f 0 0x34 0x7A) | |
BAT_ICHG_LSB=$(i2cget -y -f 0 0x34 0x7B) | |
BAT_ICHG_BIN=$(( $(($BAT_ICHG_MSB << 4)) | $(($(($BAT_ICHG_LSB & 0x0F)) )) )) | |
BAT_ICHG_CRITICAL=$(echo "($BAT_ICHG_BIN*0.5) <= $MINCHARGECURRENT"|bc) | |
# IF CHARGE CURRENT IS LESS THAN MINCHARGECURRENT, WE NEED TO SHUTDOWN | |
if [ "$BAT_ICHG_CRITICAL" = "1" ]; then | |
shutdown -h now | |
fi | |
fi | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment