Script para notificar estado de batería

By | 3 noviembre, 2017

Recientemente cambié de trabajo y con ello también la notebook que uso para trabajar, esto implica que además de la instalación inicial, durante las primeras horas o días uno va instalando el software necesario, configurando el sistema a gusto y necesidad, y entendiendo las particularidades del dispositivo en cuestión (que en este caso por tratarse de un modelo muy similar al que anteriormente usaba no tuve grandes dificultades).

Tambien he de decir que tengo parcialmente automatizada la instalación de paquetes con un script en bash que agrega repositorios e instala los paquetes que suelo usar siempre, otros tantos los instalo a mano y la personalización del escritorio la hago más o menos de memoria según lo que aprendí en esta guía.

Mientras realizaba esto charlaba con un compañero que se encontraba en la misma tarea de instalar su nueva notebook y recordamos alguna cosa leída sobre las buenas prácticas respecto a la carga de la batería, que en estos dispositivos es quizá la parte que más se desgasta con el uso. Recordé una notebook que tuve la oportunidad de usar y la cual disponía de una opción en su configuración que permitía limitar la carga máxima de la batería al 80%, agregándole a esto la recomendación de que la carga no baje del 20% y realizar ciclos completos de carga y descarga cada 30 o 50 ciclos (hay mucha literatura al respecto, estos números que menciono se basan en una aproximación a la que arribé en una charla de oficina).

Comentado lo anterior, surgió la idea de realizar un script para monitorear el estado de carga de la batería y al llegar a los valores definidos emitir una alerta para conectar o desconectar el cargador según sea el caso. El mencionado compañero hizo lo suyo con PowerShell para Windows, y yo lo mismo pero con bash/zsh en GNU/Linux.

Para conocer toda la información relativa a la energía en nuestra PC podemos emplear herramientas que trabajen con ACPI (“Interfaz Avanzada de Configuración y Energía”), un estándar que proporciona a la BIOS/UEFI y al sistema operativo mecanismos para obtener información y gestionar la energía. En GNU/Linux y sistemas afines normalmente tendremos el comando acpi para esto; y en particular usaremos acpi -b para obtener información de la batería. Por otra parte, para emitir notificaciones que se integren con las notificaciones nativas del sistema una buena opción es utilizar el comando notify-send.

Así lo que hice fue un script con un bucle que cada 10 minutos ejecuta el comando anteriormente mencionado y guarda el porcentaje de carga (2 cifras, usando grep) en una variable, y verifica el valor de la misma: si es mayor a 80% emite una alerta, si es menor a 20% emite una alerta, y si no cumple ninguno de estas condiciones no realiza ninguna acción.

#!/bin/bash
 while true
 do
 bat_level=`acpi -b | grep -oP '[0-9]+(?=%)'`
 if [ $bat_level -ge 80 ]; then
 notify-send "Battery is above 80%" "Current charge: ${bat_level}%"
 elif [ $bat_level -le 20 ]; then
 notify-send "Battery is lower 20%" "Current charge: ${bat_level}%"
 else
 echo "" > /dev/null
 fi
 sleep 600
 done

Luego lo configuré para que se ejecute al inicio de sesión (basta con ejecutarlo una vez ya que los comandos while y sleep se encargan de que se mantenga en ejecución) y con esto ya tengo alertas para saber cuando puedo desconectar y conectar el cargador:

Deja un comentario