2013-07-25 4 views
0

Я недавно обновился до Ubuntu 12.10 (ранее был пользователем 11,04), и одна из вещей, которые я заметил, это то, что когда я работаю от аккумулятора, это не дает вам время, в течение которого ваша батарея должна прослужить дольше.Ubuntu 12.10 Battery Estimator

Я нашел что-то, что даст процент, но мне было интересно, есть ли программа для установки, которая даст определенное время.

Спасибо!

+6

Этот вопрос не соответствует теме, поскольку он принадлежит Ask Ask Ubuntu –

ответ

1

Это сценарий Python-2, который я написал некоторое время назад для наблюдения за моей батареей ноутбуков. Он печатает текущий процент заряда батареи, предполагаемое время выполнения (хотя имеет смысл сохранить историю и применить к ней некоторый стохастический вес). Если зарядка - это срок до полной зарядки аккумулятора. Кроме того, если выгрузка выводит общее время работы от батареи, учитывая текущую потребляемую мощность и состояние батареи. Все данные приведены консервативными, т. Е. Более низкие оценки времени работы батареи и верхней оценки времени зарядки до полной.

#!/usr/bin/python2 

import os 
import sys 
import math 

for psup in os.listdir('/sys/class/power_supply'): 
    if not psup.startswith('BAT'): 
     continue 

    charge_now = int(open('/sys/class/power_supply/%s/charge_now' % psup).read()) 
    charge_full = int(open('/sys/class/power_supply/%s/charge_full' % psup).read()) 
    charge_full_design = int(open('/sys/class/power_supply/%s/charge_full_design' % psup).read()) 
    current_now = int(open('/sys/class/power_supply/%s/current_now' % psup).read()) 
    status = open('/sys/class/power_supply/%s/status' % psup).read().strip() 

    t_full_seconds_total = None 
    t_remain_seconds_total = None 
    if status == 'Charging': 
     t_remain_seconds_total = max((float(charge_full - charge_now)/float(current_now)) , 
             (float(charge_full_design - charge_now)/float(current_now))) * 3600. 
    elif status == 'Discharging': 
     t_remain_seconds_total = float(charge_now)/float(current_now) * 3600. 
     t_full_seconds_total = (float(max(charge_full_design, charge_full))/float(current_now)) * 3600. 

    t_charge_percentage = float(charge_now)/float(max(charge_full, charge_full_design)) 

    if t_remain_seconds_total: 
     t_remain_hours = math.floor(t_remain_seconds_total/3600) 
     t_remain_minutes = math.floor((t_remain_seconds_total - t_remain_hours * 3600)/60.) 
     t_remain_seconds = (t_remain_seconds_total - t_remain_hours * 3600 - t_remain_minutes * 60) 

     t_remain = ' %0.2dh%0.2dm%0.2ds left' % (t_remain_hours, t_remain_minutes, t_remain_seconds) 
    else: 
     t_remain = '' 

    t_full = None 
    if t_full_seconds_total: 
     t_full_hours = math.floor(t_full_seconds_total/3600) 
     t_full_minutes = math.floor((t_full_seconds_total - t_full_hours * 3600)/60.) 
     t_full_seconds = (t_full_seconds_total - t_full_hours * 3600 - t_full_minutes * 60) 

     t_full = ' %0.2dh%0.2dm%0.2ds runtime from fully charged battery' % (t_full_hours, t_full_minutes, t_full_seconds) 

    print psup + ' ['+ ('='*int(60*t_charge_percentage)).ljust(60) +'] ' + '%d%% %s' % (100*t_charge_percentage, status) + t_remain 

    if t_full: 
     print psup + t_full 

 Смежные вопросы

  • Нет связанных вопросов^_^