Saltar al contenido

Walter Elias

  • Inicio
  • Acerca de…
  • Software libre
  • Profesionales
    • Bioinformática
    • Oro Verde Digital
    • Simulación
  • Aficiones
    • Astronomía
      • Clima astronómico
    • Ciencia Ficción y animé
    • Motor
    • Informática y tips
    • Ufología científica

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

Publicada el 24 febrero, 2014 - 11 junio, 2018 por welias

ACTUALIZACIÓN 11/6/2018

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 «energia» 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 mplayer

 

NOTA: Antes este script usaba aplay pero con las nuevas 
versiones de GNU/Linux se dejó de usar alsa migrando a 
pulseaudio y aplay ya no existe. 
Por lo que lo reemplazamos, con los mismos 
resultados, por mplayer

 

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/bash
#Script para avisar cuando la batería se está agotando
#O cuando está completamente llena
 
#Función para generar la fecha y hora
fyh() {
  date +"%Y-%m-%d %H:%M:%S"
}
 
#Exportación de variables. En este caso sirve para 
#que el cron sepa a donde direccionar la salida
#del programa. Cambiar usuario por tu nombre de usuario
#y 1000 por el id de tu usuario. Para conocer el id de
#usuario, usar el comando id en una terminal.
 
export XDG_RUNTIME_DIR="/run/usuario/1000"
export DISPLAY=:0
export XAUTHORITY=/home/usuario/.Xauthority
 
bateria=`/usr/bin/acpi -V | grep ', 10%'`;
 
 if [ -z "$bateria" ]
 then
  fyh;
  echo " Carga suficiente ..."
 else
  for contador in 1 2 3 4 5
  do
   /usr/bin/mplayer -display :0 -volume 50 /home/usuario/energia/beep.wav
   sleep 1s
  done
 fi;
bateriacargada=`/usr/bin/acpi -V | grep ', 100%'`;
 if [ -z "$bateriacargada" ]
 then
  echo ""
 else
  for contador2 in 1 2 3 4 5
  do
   echo fyh;
   echo "Bateria totalmente cargada. Desenchufe cargador\n"
   /usr/bin/mplayer -display :0 -volume 50 /home/usuario/energia/beep2.wav
   sleep 1s
  done
 fi;

#!/bin/bash #Script para avisar cuando la batería se está agotando #O cuando está completamente llena #Función para generar la fecha y hora fyh() { date +"%Y-%m-%d %H:%M:%S" } #Exportación de variables. En este caso sirve para #que el cron sepa a donde direccionar la salida #del programa. Cambiar usuario por tu nombre de usuario #y 1000 por el id de tu usuario. Para conocer el id de #usuario, usar el comando id en una terminal. export XDG_RUNTIME_DIR="/run/usuario/1000" export DISPLAY=:0 export XAUTHORITY=/home/usuario/.Xauthority bateria=`/usr/bin/acpi -V | grep ', 10%'`; if [ -z "$bateria" ] then fyh; echo " Carga suficiente ..." else for contador in 1 2 3 4 5 do /usr/bin/mplayer -display :0 -volume 50 /home/usuario/energia/beep.wav sleep 1s done fi; bateriacargada=`/usr/bin/acpi -V | grep ', 100%'`; if [ -z "$bateriacargada" ] then echo "" else for contador2 in 1 2 3 4 5 do echo fyh; echo "Bateria totalmente cargada. Desenchufe cargador\n" /usr/bin/mplayer -display :0 -volume 50 /home/usuario/energia/beep2.wav sleep 1s done fi;

 

Notar que en el código las rutas son ABSOLUTAS es decir, si el directorio creado se llama energia, los archivos deberán ponerse con la ruta completa /home/usuario/energia/ donde usuario es tu nombre de usuario.

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.

Usar el comando contrab -e

Permite programar una tarea para que se ejecute a una hora específica del día.

Agregar al final la siguiente línea:

 

* * * * * /bin/sh /home/usuario/energia/bat.sh >> /home/usuario/energia/bat.log

 

Reemplazar usuario por tu nombre de usuario.

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. Además, genera un archivo bat.log donde guarda la salida de texto del programa. Esto te servirá para estimar el rendimiento de la bateria cuando lo creas necesario. Cada tanto te conviene borrar el archivo bat.log

Por último, reiniciar el servicio de cron

sudo service cron restart

 

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

Publicado en Software libreEtiquetado como ahorro, alarma, aviso, batería, energía, script

Navegación de entradas

Crece el interés por los astros

3 comentarios

  1. Nestor dice:
    25 febrero, 2014 a las 12:19 pm

    no se olviden reiniciar el cron

    sudo service cron restart

    Responder
    1. welias dice:
      27 febrero, 2014 a las 11:40 am

      Gracias Néstor por el aporte!

      Responder
  2. Miguel dice:
    8 enero, 2021 a las 11:33 pm

    Una consulta para la siguiente línea: export XAUTHORITY=/home/usuario/.Xauthority

    En mi caso es debian en español y «Home» es la «Carpeta personal»

    ¿Debo mantener «home» o cambiar por «Carpeta personal»

    Responder

Deja una respuesta Cancelar la respuesta

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

Entrenamiento y carreras

Clima

meteoblue

Entradas recientes

  • Configurar server virtual de Apache 2 en Ubuntu 20.04 (diciembre de 2020)
  • Nostalgia, volviendo al pasado con la música del futuro. Archivos .mod
  • Descubriendo la Luna (4 de marzo de 2018)
  • La superluna azul del 31 de enero de 2018
  • MySQL Error Code: 1548 Cannot load from mysql.proc

Categorías

  • Aficiones
  • Astronomía
  • Astronomía
  • Ciencia Ficción y animé
  • Informática y tips
  • Motor
  • Software libre
  • Ufología científica

Comentarios recientes

  • Mauricio Rivas en Nostalgia, volviendo al pasado con la música del futuro. Archivos .mod
  • darwin en Sobre Facebook, el devorador de CPU y como obligarlo a hacer dieta
  • Miguel en Script para ahorrar energía. Alarma sonora que avisa cuando la batería está descargada y cuando se termina de cargar
  • dataconflex en Nostalgia, volviendo al pasado con la música del futuro. Archivos .mod
  • Walter en Descubriendo la Luna (4 de marzo de 2018)

Archivos

  • diciembre 2020
  • noviembre 2018
  • marzo 2018
  • febrero 2018
  • enero 2017
  • enero 2016
  • diciembre 2015
  • octubre 2015
  • octubre 2014
  • febrero 2014

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org

Etiquetas

ahorro alarma asociación entrerriana de astronomía astronomía aviso batería ciencia energía observatorio oro verde planetario planetas script tecnología
Funciona gracias a WordPress | Tema: micro, desarrollado por DevriX.