# Il vostro /proc/acpi/battery/BAT*/info ? [soft aggiornato]

## federico

Non si tratta di un sondaggio per vedere chi ha la batteria piu' figa, ma dovrei scrivere una funzione che controlla la percentuale della batteria disponibile e volevo basarmi sulle informazioni restutuite dal proc. 

Quello che non so e' quali voci sono presenti sempre, se possono cambiare e cosi' via.

Postate per favore il vostro "info" di modo che io possa fare la mia statistica  :Smile: 

```

BAT1 # cat /proc/acpi/battery/BAT1/info 

present:                 yes

design capacity:         4000 mAh

last full capacity:      4000 mAh

battery technology:      rechargeable

design voltage:          14800 mV

design capacity warning: 420 mAh

design capacity low:     156 mAh

capacity granularity 1:  264 mAh

capacity granularity 2:  3780 mAh

model number:            PA3206U 

serial number:           3658Q

battery type:            Li-Ion

OEM info:                COMPAL    

altair BAT1 # 

```

EDIT:

In aggiunta potrei vedere anche il file "state"? Nel solo info non si trova tutto quello che mi serve...

```

BAT1 # cat /proc/acpi/battery/BAT1/state 

present:                 yes

capacity state:          ok

charging state:          discharging

present rate:            0 mA

remaining capacity:      3960 mAh

present voltage:         16431 mV

altair BAT1 # 

```

Federico

----------

## fedeliallalinea

E usare 

```
*  sys-apps/acpi

      Latest version available: 0.06-r5

      Latest version installed: [ Not Installed ]

      Size of downloaded files: [no/bad digest]

      Homepage:    http://packages.debian.org/unstable/utils/acpi.html

      Description: Attempts to replicate the functionality of the 'old' apm command on ACPI systems, including battery and thermal information.

```

----------

## federico

Vorrei scriverlo proprio come alternativa, ritengo di ottenere una prestazione migliore in termini di velocita/spazio e dipendenze scrivendo la funzione per conto mio.

Sono un maniaco delle dipenze  :Smile:  Mi scoccia scomodare "acpi" per valutare la percentuale di carica della batteria...

----------

## MyZelF

```
$ cat /proc/acpi/battery/C11D/info

present:                 yes

design capacity:         4046 mAh

last full capacity:      4046 mAh

battery technology:      rechargeable

design voltage:          14800 mV

design capacity warning: 405 mAh

design capacity low:     0 mAh

capacity granularity 1:  100 mAh

capacity granularity 2:  100 mAh

model number:            Primary

serial number:           3952

battery type:            4E4F494C

OEM info:                 COMPAQ

$ cat /proc/acpi/battery/C11D/state

present:                 yes

capacity state:          ok

charging state:          charged

present rate:            0 mA

remaining capacity:      4046 mAh

present voltage:         16513 mV
```

Da notare che da me i due slot per la batteria sono visti come C11C e C11D

----------

## Marculin

```

cat /proc/acpi/battery/BAT1/info

present:                 yes

design capacity:         4500 mAh

last full capacity:      4618 mAh

battery technology:      rechargeable

design voltage:          10800 mV

design capacity warning: 93 mAh

design capacity low:     0 mAh

capacity granularity 1:  1 mAh

capacity granularity 2:  1 mAh

model number:            XM2033P02   

serial number:           1700000183

battery type:            Li-ION  

OEM info:                

cat /proc/acpi/battery/BAT1/state

present:                 yes

capacity state:          ok

charging state:          charging

present rate:            1541 mA

remaining capacity:      4484 mAh

present voltage:         11330 mV

```

facci sapere  :Wink: 

----------

## .:deadhead:.

```
root@INSPIRON8600 # cat /proc/acpi/battery/BAT0/info

present:                 yes

design capacity:         72000 mWh

last full capacity:      66460 mWh

battery technology:      rechargeable

design voltage:          11100 mV

design capacity warning: 3000 mWh

design capacity low:     1000 mWh

capacity granularity 1:  200 mWh

capacity granularity 2:  200 mWh

model number:            DELL 0002P6

serial number:           998

battery type:            LION

OEM info:                Sanyo

root@INSPIRON8600 # cat /proc/acpi/battery/BAT0/state

present:                 yes

capacity state:          ok

charging state:          charged

present rate:            unknown

remaining capacity:      72000 mWh

present voltage:         12522 mV

```

----------

## OKreZ

```
okrez@gloglotto okrez $ cat /proc/acpi/battery/BAT0/info

present:                 yes

design capacity:         6450 mAh

last full capacity:      4377 mAh

battery technology:      rechargeable

design voltage:          14800 mV

design capacity warning: 437 mAh

design capacity low:     132 mAh

capacity granularity 1:  5 mAh

capacity granularity 2:  5 mAh

model number:            DELL 0008T

serial number:           591

battery type:            LION

OEM info:                Sanyo

okrez@gloglotto okrez $ cat /proc/acpi/battery/BAT0/state

present:                 yes

capacity state:          ok

charging state:          charged

present rate:            unknown

remaining capacity:      6450 mAh

present voltage:         16639 mV
```

----------

## fedeliallalinea

 *federico wrote:*   

> Vorrei scriverlo proprio come alternativa

 

Scusa non avevo capito. Purtroppo io non ho acpi quindi non posso postare niente

----------

## Sasdo

```

info:

present:                 yes

design capacity:         4000 mAh

last full capacity:      2354 mAh

battery technology:      rechargeable

design voltage:          14800 mV

design capacity warning: 300 mAh

design capacity low:     100 mAh

capacity granularity 1:  1 mAh

capacity granularity 2:  1 mAh

model number:            G733

serial number:           1

battery type:            LION

OEM info:                ECS Cop. 

state:

present:                 yes

capacity state:          ok

charging state:          charging

present rate:            625 mA

remaining capacity:      2294 mAh

present voltage:         16752 mV

```

----------

## paperp

```
l-(emanuele 2.6.7-gentoo)-(09 July 2004 - 16:47)-(dschg, 37%)-(pts/2)

mq-(~)-> cat /proc/acpi/battery/BAT1/info

present:                 yes

design capacity:         4500 mAh

last full capacity:      4500 mAh

battery technology:      rechargeable

design voltage:          14800 mV

design capacity warning: 420 mAh

design capacity low:     156 mAh

capacity granularity 1:  264 mAh

capacity granularity 2:  3780 mAh

model number:            PXBAS008

serial number:           3658Q

battery type:            LiIon

OEM info:                CPT

l-(emanuele 2.6.7-gentoo)-(09 July 2004 - 16:47)-(dschg, 37%)-(pts/2)

mq-(~)-> cat /proc/acpi/battery/BAT1/state

present:                 yes

capacity state:          ok

charging state:          discharging

present rate:            0 mA

remaining capacity:      1665 mAh

present voltage:         14400 mV

```

 :Wink: 

----------

## federico

 *fedeliallalinea wrote:*   

> Purtroppo io non ho acpi quindi non posso postare niente

 

Dopo magari passiamo a APM  :Smile: 

----------

## federico

Sono tutti simili fortunamente proprio come speravo. L'unica differenza mi pare di notarla con myzelf che non ha batX ma C11C o C11D. Chissa' che significhera' poi...

Hai due batterie? La C e' la prima e la D la seconda?

Potrei in linea di massima leggere la lista delle dir dentro /proc/acpi, sortarle in ordine alfabetico e prendere la prima e lavorare su quella... Eventualmente ricavare i dati da tutte e due ...

----------

## MonsterMord

```
cat /proc/acpi/battery/BAT0/info

present:                 yes

design capacity:         71990 mWh

last full capacity:      55300 mWh

battery technology:      rechargeable

design voltage:          11100 mV

design capacity warning: 3000 mWh

design capacity low:     1000 mWh

capacity granularity 1:  200 mWh

capacity granularity 2:  200 mWh

model number:            DELL 4P259

serial number:           294

battery type:            LION

OEM info:                Panasonic

cat /proc/acpi/battery/BAT0/state

present:                 yes

capacity state:          ok

charging state:          charged

present rate:            unknown

remaining capacity:      71990 mWh

present voltage:         12417 mV

cat /proc/acpi/battery/BAT0/alarm

alarm:                   3000 mWh

```

cat /proc/acpi/battery/BAT1/info

present:                 no  

 :Razz: 

----------

## MyZelF

 *federico wrote:*   

> Hai due batterie? La C e' la prima e la D la seconda?

 

Ho una sola batteria (C11D), ma nello slot multi funzione (cd) potrei piazzarne una seconda.

E' una seccatura che i nomi non siano "standard", visto che ho già dovuto mettere mano agli script invocati da acpid.

----------

## X-Drum

```
x-drum@Storm x-drum $ cat /proc/acpi/battery/BAT0/info

present:                 yes

design capacity:         4000 mAh

last full capacity:      4000 mAh

battery technology:      rechargeable

design voltage:          14800 mV

design capacity warning: 120 mAh

design capacity low:     120 mAh

capacity granularity 1:  10 mAh

capacity granularity 2:  4280 mAh

model number:            Bat 8Cell

serial number:           001

battery type:            Lion

OEM info:                Acer

```

```
x-drum@Storm x-drum $ cat /proc/acpi/battery/BAT0/state

present:                 yes

capacity state:          ok

charging state:          discharging

present rate:            unknown

remaining capacity:      3640 mAh

present voltage:         14800 mV
```

----------

## federico

Dunque, ho scritto un programma che vi domanderei di testare, non fa nulla di preoccupante, scrive quanta batteria e rimasta in percentuale prendendole informazioni dalla prima batteria disponibile.

Se qualcuno avesse due batterie e fosse disponibile a 10 minuti di betatesting potrebbe contattarmi in privato.

Questo e' il link al programma:

http://www.sideralis.net/blackman/bat_percent.py

potete avviarlo con "python bat_percent.py"

Ed ecco il codice:

```

#!/usr/bin/env python

# -*- coding: iso-8859-1 -*-

import os

try:

    batDir=os.listdir('/proc/acpi/battery')

    batDir.sort()

    batDir=batDir[0]

except OSError:

    import sys

    print >> sys.stderr, 'Could not find acpi battery directory'

    sys.exit(1)

def getValues(path,findMe):

    fp=file(path)

    text=fp.readlines()

    for line in text:

        if line.startswith(findMe):

            value=line.split()[-2]

            break

    fp.close()

    return value

startPath='/proc/acpi/battery/'+batDir

totCapacity=getValues(startPath+'/info','design capacity:')

remCapacity=getValues(startPath+'/state','remaining capacity:')

bat_percent=int(remCapacity)*100/int(totCapacity)

print 'La tua batteria è al %d%%' % bat_percent

```

Grazie a tutti, Federico

----------

## 4440

 *Quote:*   

> present:                 yes
> 
> design capacity:         4400 mAh
> 
> last full capacity:      3904 mAh
> ...

 

boh

----------

## federico

Perfavore provate il software ora piuttosto che postare le info, il lavoro di ricerca e' completato   :Cool: 

----------

## MyZelF

```
$ python bat_percent.py

Traceback (most recent call last):

  File "bat_percent.py", line 25, in ?

    totCapacity=getValues(startPath+'/info','design capacity:')

  File "bat_percent.py", line 22, in getValues

    return value

UnboundLocalError: local variable 'value' referenced before assignment

```

----------

## federico

Mi mostreresti perfavore anche la tua altra dir della batteria? penso che il software ti abbia letto la c11c mentre probabilmente li non trova i dati che servono...

Il tuo pc e' una buona palestra per tutto questo  :Smile: 

----------

## MyZelF

```
$ cat /proc/acpi/battery/C11C/info

present:                 no

$ cat /proc/acpi/battery/C11C/state

present:                 no

```

----------

## OKreZ

 *federico wrote:*   

> Perfavore provate il software ora piuttosto che postare le info, il lavoro di ricerca e' completato  

 

```
okrez@gloglotto okrez $ python Downloads/bat_percent.py

La tua batteria e' al 100%

okrez@gloglotto okrez $
```

----------

## federico

Grazie myzelf e okrez, sto preparando la correzione...

----------

## federico

Ecco il codice aggiornato e rivisto, dovrebbe essere in grado di maneggiare uno slot vuoto e di mostrare l'utilizzo anche per piu' di una batteria

http://www.sideralis.net/blackman/acpi.py

Questa non dovrebbe avere problemi, nel caso me lo fate sapere?

```

#!/usr/bin/env python

# -*- coding: iso-8859-1 -*-

import os

acpibattery_path='/proc/acpi/battery'

try:

    batDir=os.listdir(acpibattery_path)

    batDir.sort()

except OSError:

    import sys

    print >> sys.stderr, 'Could not find acpi battery directory'

    sys.exit(1)

def getValues(path,findMe):

    fp=file(path)

    text=fp.readlines()

    for line in text:

        if line.startswith(findMe):

            value=line.split()

            break

    fp.close()

    return value

bat_percent=[]

for batNum in batDir:

    startPath= acpibattery_path +'/'+ batNum

    isPresent=getValues(startPath+'/info','present:')[-1]

    if isPresent.lower()=='yes':

        totCapacity=getValues(startPath+'/info','design capacity:')[-2]

        remCapacity=getValues(startPath+'/state','remaining capacity:')[-2]

        bat_percent.append(int(remCapacity)*100/int(totCapacity))

    else:

        #print "Empty Slot Found"

        pass

from output import *

for i in bat_percent:

    if i>=70 :

        print green('%d%%' % i),

    elif i<=30 :

        print red('%d%%' % i),

    else :

        print yellow('%d%%' % i),

```

----------

## MyZelF

ok, ora funziona anche da me

```
$ python acpi.py

98%

```

----------

## federico

Ho fatto una funzione piu generale e ricorsiva tra tutte le directory tenendo per buone solo quelle con lo status "present: yes", se uno avesse piu' di una batteria al momento dovrebbe restituire una cosa tipo .. "100% 50%"

Grazie Myzelf sei stato prezioso!

----------

