Script para ahorrar energía. Alarma sonora que avisa cuando la batería está descargada y cuando se termina de cargar

Hace un tiempo, tanto mi amigo Néstor como yo, venimos buscando en la web algún “programita” para GNU/Linux que avise en forma sonora cuando la batería se está terminando o cuando se terminó de cargar, con el objetivo de ahorrar energía y a la vez extender la vida útil de la batería.

Lamentablemente no encontramos nada y decidimos ponernos a escribir código, que resultó mucho más sencillo de lo esperado.

El script está programado en Bash (seguramente se puede mejorar) y tiene un par de parámetros editables, que son:

  • El porcentaje de batería para el que sonará la alarma de “batería descargada”.
  • El porcentaje de batería para el que sonará la alarma de “batería cargada”.
  • El nombre de los archivos .wav que se reproducirán en cada caso.

El nombre del archivo puede ser cualquiera. Yo le puse bat.sh y lo guardé en un directorio llamado “bateria” dentro de mi /home.

El programita depende de bash (ya que es un script de este tipo) que ya viene instalado con el sistema operativo, pero además usa un programa que deberás instalar. Este se llama acpi y sirve para obtener resultados de diferentes dispositivos de hardware, entre ellos la batería. También usaremos aplay para reproducir sonidos.

Para instalarlo, en las distribuciones basadas en Debian, ejecutar como root o usando sudo:

apt-get install acpi aplay

Luego crear un directorio dentro de tu home y usando algún editor (como gedit) escribir el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
bateria=`acpi -V | grep ', 5%'`;
 if [ -z "$bateria" ]
 then
  echo ""
 else
  for contador in 1 2 3 4 5
  do
   aplay beep.wav
   sleep 1s
  done
 fi;
 
bateriacargada=`acpi -V | grep ', 100%'`;
 if [ -z "$bateriacargada" ]
 then
  echo ""
 else
  for contador2 in 1 2 3 4 5
  do
   aplay beep2.wav
   sleep 1s
  done
 fi;

Guardar el archivo dentro del directorio creado. Ponerle el nombre que quieras. Yo le puse bat.sh

Darle permisos de ejecución. En una terminal, dentro del directorio donde está el script:

chmod 777 bat.sh

En el mismo directorio, poner los archivos .wav que vamos a reproducir, con los mismos nombres que en el script (yo les llamé beep.wav y beep2.wav).

Por supuesto puedes crear tus propios archivos wav con textos como “enchufame, la batería ya se está acabando” y “desenchufame, no gastes electricidad al cuete” 😀

Lo único que queda por hacer es agregar el script al cron, para que se ejecute una vez por minuto. Como es muy sencillo, no usará recursos del sistema y no estará ejecutándose permanentemente.

Para agregar esto al cron, abrimos el archivo /etc/crontab con un editor de textos (puede ser gedit) pero usando permisos de root o usando sudo.

En una terminal, loguearse como root y llamar a gedit así:

sudo gedit /etc/crontab

Agregar al final la siguiente línea:

* * * * * usuario /home/usuario/directorio/bat.sh

Los asteriscos al principio le dicen al sistema que el programa se ejecute en todos los minutos, en todas las horas, todos los días.

Reemplazar usuario por tu nombre de usuario y directorio por el directorio donde guardaste el script.

Listo, eso es todo. Es muy sencillo y ahora tendrás avisos sonoros cuando la batería se esté agotando y cuando esté cargada.

Te invito a crear tus propios wav y a compartirlos.

Nota: El script es totalmente básico. Se puede mejorar mucho. Lo dejo a tu imaginación.

Descarga de los wav que yo use:

beep.wav

beep2.wav

2 comments

  1. Nestor dice:

    no se olviden reiniciar el cron

    sudo service cron restart

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *