Pois que, com essa semana, serão três semanas pensando sobre os artigos de economia de energia. Cada vez tenho menos vontade de escreve-los. Veja. São artigos que se forem investidos 5 minutos no google, são encontrados diversos similares e de excelente qualidade.
(10 minutos depois) Bem… Como o objetivo deste blog é ajudar e informar, nós lusófonos, abordando assuntos sobre linux, computação e tecnologias em geral, tomo fôlego… e vamos adiante.
Antes de qualquer tópico específico é conveniente pensar em alguma maneira de automatizar as mudanças de estados. Assim ao desconectar o cabo de energia não é preciso rodar trocentas linhas de comando pra aumentar a autonomia desejada. Da mesma forma quando estamos conectados na energia não é necessário economizar migalhas. Para os politicamente corretos, é possível adaptar os scripts nos posts referentes ao assunto para que o seu notebook sempre economize energia mesmo comprometendo o desempenho.
Portanto, para economizar energia até dos dedos, existem os eventos acpi. Esses eventos tem um grupo e uma ação. Eles são disparados quando o usuário modifica ( voluntaria ou involutariamente ) alguma coisa no acpi. Alguns são disparados, por exemplo, quando botões são pressionados, cabos de energia são conectados ou bateria chega a carga completa. Caso tenha curiosidade, basta dar uma olhada /var/log/messages
Oct 15 20:26:58 Amitt logger: ACPI group battery / action BAT0 is not defined
Oct 15 20:27:03 Amitt logger: ACPI group battery / action BAT0 is not defined
Oct 15 20:36:08 Amitt logger: ACPI group battery / action BAT0 is not defined
Oct 15 20:36:13 Amitt logger: ACPI group battery / action BAT0 is not defined
Oct 15 20:47:35 Amitt logger: ACPI group battery / action BAT0 is not defined
Esse log foi gerado quando desconectei e conectei o conector de energia. Algumas vezes = P.
Poderia abordar o problema por duas ópticas, a da bateria e a do conector de energia. Escolhi a segunda. O próximo passo é saber da existência do arquivo /etc/acpi/acpi_handler.sh , que, adivinhe só, administra os eventos disparados pelo ACPI.
Alterando algumas poucas linhas, meu script /etc/acpi/acpi_handler.sh ficou assim:
#!/bin/sh
# Default acpi script that takes an entry for all actions
IFS=${IFS}/
set $@
case "$1" in
button)
case "$2" in
power) /sbin/init 0
;;
*) logger "ACPI action $2 is not defined"
;;
esac
;;
ac_adapter)
case $2 in
ADP1) /etc/acpi/plug
;;
*) logger "ACPI action $2 is not defined"
;;
esac
;;
*)
logger "ACPI group $1 / action $2 is not defined"
;;
esac
Que nada mais faz do que chamar o script /etc/acpi/plug quando algum evento relacionado ao ac_adapter for disparado. Veja. Esse será chamado tanto quando o cabo de energia for conectado quanto desconectado. E como saberemos qual dos dois é o caso ?
O arquivo /proc/acpi/ac_adapter/ADP1/state tem essa informação. Então o beta do script preguiçoso seria:
#!/bin/bash
_plugged(){
logger "Cabo conectado"
}
_unplugged(){
logger "Cabo desconectado"
}
STATE=`cat /proc/acpi/ac_adapter/ADP1/state | awk '{print $2}'`
if [ $STATE == "on-line" ]; then
_plugged
else
_unplugged
fi
Nosso Beta do Script preguiçoso já escreve no /var/log/messages as mensagens “Cabo conectado” e “Cabo desconectado” quando conectamos ou desconectamos o cabo de energia
E digo mais, o apelido do script me inspirou. Vou parar por aqui. Já que é bem fácil imaginar o que vem adiante. Acompanhe os próximos posts sobre o assunto! Vamos transformar o preguiçoso em não tão preguiçoso assim.
Economia de Energia – 0