Il sistema ora è più preciso.

Leonardo Robol [2010-02-05 15:35]
Il sistema ora è più preciso.
Filename
BatteryMonitor.py
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))
ViewGit