Il sistema ora è più preciso.
Leonardo Robol [2010-02-05 15:35]
Il sistema ora è più preciso.
diff --git a/BatteryMonitor.py b/BatteryMonitor.py
index 5b2f505..23f239a 100755
--- a/BatteryMonitor.py
+++ b/BatteryMonitor.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-import subprocess, re, gtk, gobject
+import subprocess, re, gtk, gobject, time
from numpy.linalg import lstsq
class BatteryMonitor():
@@ -36,7 +36,7 @@ class BatteryMonitor():
Restituisce l'energia nella batteria
"""
energy = float(self.GetDevKitOutput("energy:[\s|\t]*([\d|\.]*)"))
- return energy
+ return [time.time (), energy]
class BatteryIcon():
@@ -65,11 +65,23 @@ class BatteryIcon():
return "%d secondi" % int(time)
elif (time < 3600):
minutes = int(time/60)
- return "%d minuti" % minutes
+ if minutes > 1:
+ return "%d minuti" % minutes
+ else:
+ return "%d minuto" % minutes
else:
hours = int(time/3600)
minutes = int( (time - hours * 3600)/60)
- return "%d ore %d minuti" % (hours, minutes)
+ if minutes == 0:
+ min_string = ""
+ elif minutes == 1:
+ min_string = "ed 1 minuto"
+ else:
+ min_string = "e %d minuti" % minutes
+ if hours > 1:
+ return "%d ore %s" % (hours, min_string)
+ else:
+ return "%d ora %s" % (hours, min_string)
def UpdateData(self):
if not self.bm.OnBattery ():
@@ -81,7 +93,7 @@ class BatteryIcon():
energy = self.bm.GetEnergy ()
self.energy.append (energy)
- if (len(self.energy) < 5):
+ if (len(self.energy) < 6):
self.tray.set_tooltip ("Sto aspettando più dati per il calcolo")
self.ScheduleNext ()
return
@@ -90,14 +102,17 @@ class BatteryIcon():
del self.energy[0]
times = []
- counter = 0
+ starting = self.energy[0][0]
for value in self.energy:
- times.append( [ 1, counter ] )
- counter = counter + 10
+ times.append( [ 1, value[0] - starting ] )
- rate = (-1) * lstsq(times, self.energy)[0][1]
+ values = []
+ for value in self.energy:
+ values.append (value[1])
+
+ rate = (-1) * lstsq(times, values)[0][1]
- time_to_discharge = energy / rate
+ time_to_discharge = energy[1] / rate
self.tray.set_tooltip("Tempo alla scarica: %s" % self.GetTimeString(time_to_discharge))