Páginas

19 de agosto de 2015

Script para controlar los ciclos de carga y descarga de la batería de tu Laptop

Dicen los que saben, que para mantener en buen estado la batería de litio de una Laptop, se debe conectar a la corriente cuando está en un 40% de descarga, y desconectar cuando tiene un 80% de carga.
Muchos fabricantes, incluyen en el bios la opción de “desactivar” el flujo de corriente hacia la batería cuando llega a un determinado porciento, y que el equipo solo use la corriente a partir de ese momento, sin embargo, en mi caso particular, mi Lenovo IdeaPad U510 no tiene esa opción.
No conozco en Linux ninguna aplicación que haga esto a nivel de Software, o que tan solo nos notifique cuando la batería llega a un % en específico, por lo que decidí crear un pequeño Script que me notifica cuando necesito conectar y desconectar la corriente.

Requisitos

Lo primero que necesitamos es tener instalado el paquete acpi en nuestro ordenador. En mi caso como uso ArchLinux solo tengo que ejecutar:
$ sudo pacman -S acpi
¿Para que necesitamos ACPI? Pues para saber el estado de nuestra batería. Si lo ejecutamos nos devuelve algo como esto:
leni :: ~ » acpi
Battery 0: Discharging, 76%, 02:20:07 remaining
Lo siguiente es crear el fichero que ejecutará la notificación, en mi caso, lo puse dentro de la carpeta ~/.bateria, y lo nombré bat_notificacion.sh. Adentro le puse lo siguiente:
#!/bin/bash
#
# -*- ENCODING: UTF-8 -*-
# Este programa es software libre. Puede redistribuirlo y/o
# modificarlo bajo los términos de la Licencia Pública General
# de GNU según es publicada por la Free Software Foundation,
# bien de la versión 2 de dicha Licencia o bien (según su
# elección) de cualquier versión posterior.
#
# Si usted hace alguna modificación en esta aplicación,
# deberá siempre mencionar al autor original de la misma.
#
# DesdeLinux.net CC-BY-SA 2015
# Autor: ELAV <elav@desdelinux.net> <http://www.systeminside.net>

# Obtenemos el estado de la batería, pero solamente el porciento:
BATERIA=`acpi | awk '{print $4}'`

# Pasamos al estado a un fichero de texto:
echo $BATERIA > tmp_bateria.txt

# Eliminamos información innecesaria del fichero de texto:
RESULTADO=`cut -c 1-2 tmp_bateria.txt`

if [ $RESULTADO -ge 80 ]; then
        notify-send --urgency=critical --expire-time=5000 --app-name=Bateria --icon=battery "Notificacion de Bateria" "Desconecta la corriente eléctrica por favor"
elif [ $RESULTADO -le 40 ]; then
        notify-send --urgency=critical --expire-time=5000 --app-name=Bateria --icon=battery "Notificacion de Bateria" "Conecta la corriente eléctrica por favor"
else
    $BATERIA > /dev/null

fi

La explicación de como funciona está adentro, pero lo explico brevemente.
Primero, usando awk extraigo solamente el valor del porciento de la batería, lo cual me devuelve algo como 76%,. Este resultado lo paso a un fichero de texto para posteriormente, eliminar los caracteres innecesarios dejando solamente el valor numérico.
Le damos los permisos necesarios al fichero:
$ chmod a+x ~/.bateria/bat_notificacion.sh
Como ArchLinux usa SystemD y no tiene el viejo crontab, me instalo cronie. Ahora editamos el crontab para que el script esté chequeando el estado de la batería todo el tiempo.
$ crontab -e
Y le añado adentro:
# Revisión de la Batería
* *     * * *   cd /home/elav/.bateria/ && ./bat_notificacion.sh
Y listo, cuando el porciento de la batería sea igual o menor de 40%, o sea igual o mayor que 80%, obtendré una notificación como esta:
Notificacion Bateria
Y esto es todo.. Cualquier aporte que quieran hacer, sugerencia de código y demás, pueden hacerlo mediante mi repositorio en Bitbucket.


from Desde Linux http://blog.desdelinux.net/script-controlar-ciclos-carga-bateria-laptop/
via IFTTT