first working version of TempFanControl plugin with Sensors and FanControl component
[enigma2.git] / lib / python / Components / Sensors.py
diff --git a/lib/python/Components/Sensors.py b/lib/python/Components/Sensors.py
new file mode 100644 (file)
index 0000000..7f63455
--- /dev/null
@@ -0,0 +1,72 @@
+from Components.FanControl import fancontrol
+
+class Sensors:
+       # (type, name, unit, directory)
+       TYPE_TEMPERATURE = 0
+       # (type, name, unit, fanid)
+       TYPE_FAN_RPM = 1
+       
+       def __init__(self):
+               # (type, name, unit, sensor_specific_dict/list)
+               self.sensors_list = []
+               self.addSensors()
+               
+       def getSensorsCount(self, type = None):
+               if type is None:
+                       return len(self.sensors_list)
+               count = 0
+               for sensor in self.sensors_list:
+                       if sensor[0] == type:
+                               count += 1
+               return count
+       
+       # returns a list of sensorids of type "type"
+       def getSensorsList(self, type = None):
+               if type is None:
+                       return range(len(self.sensors_list))
+               list = []
+               for sensorid in range(len(self.sensors_list)):
+                       if self.sensors_list[sensorid][0] == type:
+                               list.append(sensorid)
+               return list
+       
+       
+       def getSensorType(self, sensorid):
+               return self.sensors_list[sensorid][0]
+       
+       def getSensorName(self, sensorid):
+               return self.sensors_list[sensorid][1]
+       
+       def getSensorValue(self, sensorid):
+               value = -1
+               sensor = self.sensors_list[sensorid]
+               if sensor[0] == self.TYPE_TEMPERATURE:
+                       f = open("%s/value" % sensor[3], "r")
+                       value = int(f.readline().strip())
+                       f.close()
+               elif sensor[0] == self.TYPE_FAN_RPM:
+                       value = fancontrol.getFanSpeed(sensor[3])
+               return value
+       
+       def getSensorUnit(self, sensorid):
+               return self.sensors_list[sensorid][2]
+
+       def addSensors(self):
+               import os
+               if os.path.exists("/proc/stb/sensors"):
+                       for dirname in os.listdir("/proc/stb/sensors"):
+                               if dirname.find("temp", 0, 4) == 0:
+                                       f = open("/proc/stb/sensors/%s/name" % dirname, "r")
+                                       name = f.readline().strip()
+                                       f.close()
+                                       
+                                       f = open("/proc/stb/sensors/%s/unit" % dirname, "r")
+                                       unit = f.readline().strip()
+                                       f.close()
+                                       
+                                       self.sensors_list.append((self.TYPE_TEMPERATURE, name, unit, "/proc/stb/sensors/%s" % dirname))
+               for fanid in range(fancontrol.getFanCount()):
+                       if fancontrol.hasRPMSensor(fanid):
+                               self.sensors_list.append((self.TYPE_FAN_RPM, _("fan"), "rpm", fanid))
+       
+sensors = Sensors()
\ No newline at end of file