Batería: Bash Script

1 minuto(s) de lectura

Debian

Esta entrada voy a compartir un sencillo Bash Script, que nos va a notificar sobre la carga disponible en la batería de nuestro dispositivo para alargar la vida de la misma.

Un posible cliente de este tipo de script puede ser por ejemplo:

  • Un PC Portatil
  • Una Raspberry u otra placa SBC alimentada con batería

Para configurarlo sobre nuestra base Debian seguimos este mini-tutorial.

Creamos la carpeta de trabajo donde alojaremos el script, entramos en ella y satisfacemos dependencias del script:

mkdir -p $HOME/scripts && cd $HOME/scripts && \
sudo apt-get update && \
sudo apt-get -y install libnotify-bin

A continuación creamos el script:

nano bateria.sh

Añadimos el contenido del fichero con las contraseñas generadas:

#!/bin/bash
#
# https://lordpedal.github.io
# Another fine release by Lordpedal
#
# Variables trabajo
export DISPLAY=:0
ALARMA="/tmp/batwarn"
BATLVL=$(cat /sys/class/power_supply/BAT0/capacity)
ADPSTS=$(cat /sys/class/power_supply/ADP1/online)
# Condicional carga
if [ $ADPSTS == 1 ] && [ $BATLVL -ge 85 ]; then
        notify-send --urgency=normal \
         --expire-time=8000 --app-name=Bateria \
         --icon=battery 'Carga de batería '$BATLVL'%' 'Desconecta el cargador por favor'
        touch $ALARMA
elif [ $ADPSTS == 0 ] && [ $BATLVL -le 20 ]; then
        notify-send --urgency=low \
         --expire-time=8000 --app-name=Bateria \
         --icon=battery 'Carga de batería '$BATLVL'%' 'Conecta el cargador por favor'
        touch $ALARMA
else
    if [ -f $ALARMA ]; then
        rm $ALARMA
    fi
fi
# Condicionales apagado
if [ $ADPSTS == 0 ] && [ $BATLVL == 10 ]; then
        notify-send --urgency=normal \
         --expire-time=8000 --app-name=Bateria \
         --icon=battery 'Alarma LSL '$BATLVL'%' 'Guarda los trabajos...'
        touch $ALARMA
elif [ $ADPSTS == 0 ] && [ $BATLVL -lt 5 ]; then
        notify-send --urgency=critical \
         --expire-time=8000 --app-name=Bateria \
         --icon=battery 'Alarma LSLL '$BATLVL'%' 'Ciao CMON!'
        touch $ALARMA
        sleep 5
        # Apagado sistema
        sudo poweroff
else
    if [ -f $ALARMA ]; then
        rm $ALARMA
    fi
fi
exit 0

Guardamos el fichero, salimos del editor y le damos permisos de ejecución:

chmod +x bateria.sh

Vamos a crear una tarea programa en cron para su ejecución en segundo plano:

crontab -e

Añadiendo el siguiente código al final del fichero para que sea ejecutado cada 20 segundos:

*/1 * * * * ~/scripts/bateria.sh >/dev/null 2>&1
*/1 * * * * sleep 20 && ~/scripts/bateria.sh >/dev/null 2>&1
*/1 * * * * sleep 40 && ~/scripts/bateria.sh >/dev/null 2>&1

Guardamos y salimos del editor.

El script admite múltiples mejoras, pero cumple de sobra la idea inicial de hacer algo sencillo y funcional. Siéntete libre de adaptarlo y mejorarlo.

Y listo!