Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[HOWTO] Come spegnere il tuo laptop se la batteria e' finita
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page Previous  1, 2  
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
lucapost
Veteran
Veteran


Joined: 24 Nov 2005
Posts: 1419
Location: <ud|me|ts> - Italy

PostPosted: Sun Apr 22, 2007 8:50 pm    Post subject: Reply with quote

Ne ho fatto uno anche io utilizzando le info acpi.
Quando la batteria arriva al 3%, incomincia un fastidioso /root/sound/beep.wav e dopo circa 1 minuto spegne il notebook.
L'ho salvato in /root/script/battery:
Code:
#!/bin/bash                                                                                     

WARNING=3
TMP=60
FULL=`cat /proc/acpi/battery/BAT0/info |awk '/full\ capacity:/ { print $4 }'`

while true ; do

PRESENT=`cat /proc/acpi/battery/BAT0/state |awk '/present:/ { print $2}'`
STATE=`cat /proc/acpi/battery/BAT0/state |awk '/charging\ state:/ { print $3 }'`
REMAINING=`cat /proc/acpi/battery/BAT0/state |awk '/remaining\ capacity:/ { print $3 }'`

  sleep 5
 
  if [ "$PRESENT" = "yes" ] ; then
     case $STATE in
       charged)
             TMP=60 ;;
       charging)
             TMP=60 ;;
       discharging)
         CHARGE=$((${REMAINING}*100/${FULL}))
         if [ "$CHARGE" -le "$WARNING" ] ; then
             let "TMP -=5"
             aplay /root/sound/beep.wav &>/dev/null
           if [ "$TMP" -le 1 ] ; then
             /sbin/shutdown -h now
           fi
         else
             TMP=60
         fi
       ;;
     esac
  fi
done


La cosa carina è che anche dopo il beep, se si attacca l'alimentazione ac entro un minuto si salva la sessione.
Questo sopra può andare bene per tutti, ma ne ho fatta una versione, leggermente più complessa per integrarlo con dwm, se vi interessa lo potete trovare in questo post 4021898

EDIT: dimenticavo, nello script originale in perl, l'ultimo elseif è un elsif!
_________________
LP
Back to top
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Tue Apr 24, 2007 8:31 am    Post subject: Reply with quote

quindi questo script parte dal presupposto che il pc ci metta almeno 60 secondi a passare da batteria=3 a batteria=1 ...
_________________
Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne
Back to top
View user's profile Send private message
lucapost
Veteran
Veteran


Joined: 24 Nov 2005
Posts: 1419
Location: <ud|me|ts> - Italy

PostPosted: Tue Apr 24, 2007 9:59 am    Post subject: Reply with quote

non ho capito bene....
Comunque, lo script suppone che la batteria per passare dal 3% al 1% ci metta più di 1minuto naturalmente.
Secondo me è una buona stima, infatti facendo due conti, supponendo che la batteria si scarichi linearmente ad abbia un'autonomia di almeno 2 ore, il 2% percento di 2 ore è più di 2 minuti, quindi il mio minuto è più che "abbondante"...
Casomai si può sempre aumentare la percentuale di WARNING.

Mandi.
_________________
LP
Back to top
View user's profile Send private message
table
Apprentice
Apprentice


Joined: 17 Feb 2007
Posts: 279
Location: Gazzaniga (BG) Italy

PostPosted: Fri Mar 06, 2009 9:48 am    Post subject: Reply with quote

Ciao,
mi riallaccio a questo argomento.
Ho notato che il mio laptop si spegne bruscamente senza fare nulla quando la batteria va a 0. Quindi stavo pensando si usare questo script.
Il problema però è che il percorso della batteria sotto proc non esiste:
Code:
stealth / # ls -l /proc/acpi/
total 0
dr-xr-xr-x 4 root root 0 Mar  6 10:42 button
dr-xr-xr-x 3 root root 0 Mar  6 10:42 embedded_controller
dr-xr-xr-x 2 root root 0 Mar  6 10:42 power_resource
dr-xr-xr-x 4 root root 0 Mar  6 10:42 processor
dr-xr-xr-x 2 root root 0 Mar  6 10:42 thermal_zone
-rw-r--r-- 1 root root 0 Mar  6 10:42 wakeup


nel kernel ho abilitato in built.in tutti i moduli per i quali ho bisogno di gestire l'ACPI:
Code:

--- ACPI (Advanced Configuration and Power Interface) Support
 [ ]   Deprecated /proc/acpi files
 [ ]   Deprecated power /proc/acpi directories
 [*]   Future power /sys interface
 [ ]   Deprecated /proc/acpi/event support
 <*>   AC Adapter
 <*>   Battery
 <*>   Button
 <*>   Fan
  -*-   Dock
 < >     Removable Drive Bay (EXPERIMENTAL)
 <*>   Processor
 <*>     Thermal Zone
 -*-   ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)
 <*>   Smart Battery System


l'output di dmesg invece non mostra problemi di riconoscimento della batteria:
Code:
stealth linux # dmesg | grep -e "BAT"
[    0.346953] ACPI: Battery Slot [BAT1] (battery present)


:roll:
_________________
Pulisci l'html con:
Code:
sed 's/<[Bb][Rr][ \t]*\/*>/\n/g;s/<\/*[^>]\+\/*>//g'

skype: matteopinguino
Back to top
View user's profile Send private message
Scen
Retired Dev
Retired Dev


Joined: 29 Jul 2003
Posts: 2470
Location: Padova, Italy

PostPosted: Fri Mar 06, 2009 10:34 am    Post subject: Reply with quote

table wrote:
Il problema però è che il percorso della batteria sotto proc non esiste:
Code:
stealth / # ls -l /proc/acpi/
total 0
dr-xr-xr-x 4 root root 0 Mar  6 10:42 button
dr-xr-xr-x 3 root root 0 Mar  6 10:42 embedded_controller
dr-xr-xr-x 2 root root 0 Mar  6 10:42 power_resource
dr-xr-xr-x 4 root root 0 Mar  6 10:42 processor
dr-xr-xr-x 2 root root 0 Mar  6 10:42 thermal_zone
-rw-r--r-- 1 root root 0 Mar  6 10:42 wakeup



Devi abilitare anche le voci "Deprecated /proc/acpi ecc. ecc.", per cui:
Code:

--- ACPI (Advanced Configuration and Power Interface) Support
 [*]   Deprecated /proc/acpi files
 [*]   Deprecated power /proc/acpi directories
 [*]   Future power /sys interface
 [*]   Deprecated /proc/acpi/event support
 <*>   AC Adapter
 <*>   Battery
 <*>   Button
 <*>   Fan
  -*-   Dock
 < >     Removable Drive Bay (EXPERIMENTAL)
 <*>   Processor
 <*>     Thermal Zone
 -*-   ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)
 <*>   Smart Battery System

_________________
I was born in a deep forest/I wish I could live here all my life/I am made from stones and roots/My home, these woods and roads
All my life I loved this sound/Of the woods all around/Eagles flies where the winds blows free
Journey is my destiny
Back to top
View user's profile Send private message
table
Apprentice
Apprentice


Joined: 17 Feb 2007
Posts: 279
Location: Gazzaniga (BG) Italy

PostPosted: Fri Mar 06, 2009 11:48 am    Post subject: Reply with quote

Scen wrote:

Devi abilitare anche le voci "Deprecated /proc/acpi ecc. ecc.", per cui:


hai ragione, grazie :wink:
_________________
Pulisci l'html con:
Code:
sed 's/<[Bb][Rr][ \t]*\/*>/\n/g;s/<\/*[^>]\+\/*>//g'

skype: matteopinguino


Last edited by table on Fri Mar 06, 2009 12:29 pm; edited 1 time in total
Back to top
View user's profile Send private message
lucapost
Veteran
Veteran


Joined: 24 Nov 2005
Posts: 1419
Location: <ud|me|ts> - Italy

PostPosted: Fri Mar 06, 2009 12:28 pm    Post subject: Reply with quote

se ti riferisci al mio script, nei mesi ho raggiunto anche queste modifiche:
Code:
      FULL=`cat /sys/class/power_supply/BAT0/charge_full'
      PRESENT=`cat /sys/class/power_supply/BAT0/present`
      CHARGE=`cat /sys/class/power_supply/BAT0/charge_now`
      STATUS=`cat /sys/class/power_supply/BAT0/status`

e senza moduli deprecati.

/EDIT:

da qualche mese gestisco lo spegnimento del laptop a batteria scarica direttamente tramite l'acpi:
Code:
#> cat /etc/acpi/events/hotkey
event=.*
action=/etc/acpi/hotkey.sh %e

Code:

#> grep -vE '(^[[:space:]]*($|(#|!|;|//)))' /etc/acpi/hotkey.sh
ac_offline () {
        CHARGE=`cat /sys/class/power_supply/BAT0/charge_now`
        FULL=`cat /sys/class/power_supply/BAT0/charge_full`
        AC=`cat /sys/class/power_supply/AC0/online`
        PERC=5
        TIME=55
        if test "$AC" != "1" && test "$((${CHARGE}*100/${FULL}))" -le "$PERC";then
            sleep $TIME
          if test "$AC" != "1";then
            /sbin/halt
          fi
        fi
}
[ "$1:$2" = hotkey:ATKD ] && case "$3" in
        00000057) ac_offline ;;
esac

funge solamente quando serve! :wink:
_________________
LP
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum