Repository URL to install this package:
|
Version:
2.4-r1 ▾
|
enigma2-plugin-systemplugins-pwe
/
usr
/
lib
/
enigma2
/
python
/
Plugins
/
SystemPlugins
/
PWemulator
/
plugin.py
|
|---|
from __future__ import print_function
from __future__ import division
#
# PWemulator Plugin by gutemine
#
pwe_version="2.4-r1"
#
from Components.ActionMap import ActionMap
from Components.Label import Label
from Components.config import config, configfile, ConfigSubsection, ConfigText, ConfigBoolean, ConfigInteger, ConfigSelection, getConfigListEntry
from Components.ConfigList import ConfigListScreen
from Plugins.Plugin import PluginDescriptor
from Components.Pixmap import Pixmap
from Screens.Screen import Screen
from Screens.MessageBox import MessageBox
from Screens.InputBox import InputBox
from Components.Input import Input
from Screens.ChoiceBox import ChoiceBox
from Components.AVSwitch import AVSwitch
from Components.SystemInfo import SystemInfo
from Screens.Console import Console
from Components.MenuList import MenuList
from Components.Slider import Slider
from Components.Sources.Clock import Clock
from Components.Sources.StaticText import StaticText
from Components.Sources.Progress import Progress
from enigma import ePoint, eLCD, fbClass, eRCInput, eDBoxLCD, getDesktop, quitMainloop, eConsoleAppContainer, eDVBVolumecontrol, eTimer, eActionMap
from Tools.LoadPixmap import LoadPixmap
from os import path as os_path
import Components.Sensors
import Components.FanControl
from Components.FanControl import fancontrol
pwe_plugindir="/usr/lib/enigma2/python/Plugins/SystemPlugins/PWemulator"
tempfancontrol_plugindir="/usr/lib/enigma2/python/Plugins/SystemPlugins/TempFanControl"
fancontrol2_plugindir="/usr/lib/enigma2/python/Plugins/Extensions/FanControl2"
global startedFromTempFanControl
startedFromTempFanControl=False
global startedFromPWemulator
startedFromPWemulator=False
YELLOWC = '\033[33m'
ENDC = '\033[m'
def cprint(text):
print(YELLOWC+"[PWemulator] "+text+ENDC)
def PWe_blueKey(self):
cprint("blue pressed ...")
fanstr=_("Fan %d") % 1
fanstr=fanstr.rstrip(" 1")
if self.SpeedSetup:
self.SpeedSetup=False
self["blue"].setText(_("Speed"))
else:
self.SpeedSetup=True
self.TemperatureSetup=False
self["blue"].setText(fanstr)
self["yellow"].setText(_("Temperature"))
self.saveSpeed()
self.createSetup()
def PWe_saveSpeed(self, file=True):
if int(config.plugins.pwe.speed.max.value)<500:
config.plugins.pwe.speed.max.value="500"
config.plugins.pwe.speed.max.save()
if int(config.plugins.pwe.speed.min.value)*2 > int(config.plugins.pwe.speed.max.value):
config.plugins.pwe.speed.min.value=str(int(config.plugins.pwe.speed.max.value)/2)
config.plugins.pwe.speed.min.save()
if file:
# write to config file so that pwe can use it immediately ...
configfile.save()
def PWe_createSetup(self):
self.list = []
fanstr=_("Fan %d") % 1
fanstr=fanstr.rstrip(" 1")
# check for first run ...
if not hasattr(self, 'TemperatureSetup'):
self.TemperatureSetup=False
if not hasattr(self, 'SpeedSetup'):
self.SpeedSetup=False
if self.TemperatureSetup:
deg = u"\xb0"
self.list.append(getConfigListEntry(_("Temperature and Fan control"), config.plugins.pwe.temperature.control))
if config.plugins.pwe.temperature.control.value != "none":
self.list.append(getConfigListEntry(fanstr+" "+_("on")+" "+_("max")+" "+_("Temperature")+" [%sC]" % deg.encode('utf8'), config.plugins.pwe.temperature.max))
self.list.append(getConfigListEntry(fanstr+" "+_("off")+" "+_("min")+" "+_("Temperature")+" [%sC]" % deg.encode('utf8'), config.plugins.pwe.temperature.min))
elif self.SpeedSetup:
self.list.append(getConfigListEntry(fanstr+" "+_("max")+" "+_("Speed")+" ["+_("rpm")+"]", config.plugins.pwe.speed.max))
self.list.append(getConfigListEntry(fanstr+" "+_("min")+" "+_("Speed")+" ["+_("rpm")+"]", config.plugins.pwe.speed.min))
else: # FanSetup
for count in range(fancontrol.getFanCount()):
self.list.append(getConfigListEntry(_("Fan %d Voltage") % (count + 1), fancontrol.getConfig(count).vlt))
self.list.append(getConfigListEntry(_("Fan %d PWM") % (count + 1), fancontrol.getConfig(count).pwm))
self.list.append(getConfigListEntry(_("Standby Fan %d Voltage") % (count + 1), fancontrol.getConfig(count).vlt_standby))
self.list.append(getConfigListEntry(_("Standby Fan %d PWM") % (count + 1), fancontrol.getConfig(count).pwm_standby))
self["config"].list = self.list
self["config"].l.setList(self.list)
def PWe_yellowKey(self):
cprint("yellow pressed ...")
fanstr=_("Fan %d") % 1
fanstr=fanstr.rstrip(" 1")
if self.TemperatureSetup:
self.TemperatureSetup=False
self["yellow"].setText(_("Temperature"))
else:
self.TemperatureSetup=True
self.SpeedSetup=False
self["yellow"].setText(fanstr)
self["blue"].setText(_("Speed"))
self.saveTemperature()
self.createSetup()
def PWe_saveTemperature(self, file=True):
if config.plugins.pwe.temperature.control.value == "none":
config.plugins.pwe.temperature.max.value="0"
config.plugins.pwe.temperature.min.value="0"
if int(config.plugins.pwe.temperature.max.value) < 25:
config.plugins.pwe.temperature.max.value="0"
if int(config.plugins.pwe.temperature.max.value) == "100": # always on
config.plugins.pwe.temperature.min.value="0"
config.plugins.pwe.temperature.max.save()
if (int(config.plugins.pwe.temperature.min.value)+2) > int(config.plugins.pwe.temperature.max.value):
cprint("min temp has to be at least 2 degrees lower than max temp")
config.plugins.pwe.temperature.min.value=str(int(config.plugins.pwe.temperature.max.value)-2)
config.plugins.pwe.temperature.min.save()
config.plugins.pwe.temperature.control.save()
if file:
# write to config file so that pwe can use it immediately ...
configfile.save()
def PWe_setWindowTitle(self):
self.setTitle(_("Temperature and Fan control")+" + "+_("PWe"))
self.TemperatureSetup=False
self.SpeedSetup=False
self["yellow"].setText(_("Temperature"))
self["blue"].setText(_("Speed"))
# re-label for PWemulator
self["SensorText"].setText(_("Sensor"))
self["TemperatureText"].setText(_("Temperature"))
self["SpeedText"].setText(_("Speed"))
if os_path.exists(tempfancontrol_plugindir):
import Plugins.SystemPlugins.TempFanControl.plugin
from Plugins.SystemPlugins.TempFanControl.plugin import TempFanControl
# overwrite during startup
Plugins.SystemPlugins.TempFanControl.plugin.TempFanControl.yellowKey=PWe_yellowKey
Plugins.SystemPlugins.TempFanControl.plugin.TempFanControl.blueKey=PWe_blueKey
Plugins.SystemPlugins.TempFanControl.plugin.TempFanControl.createSetup=PWe_createSetup
Plugins.SystemPlugins.TempFanControl.plugin.TempFanControl.saveTemperature=PWe_saveTemperature
Plugins.SystemPlugins.TempFanControl.plugin.TempFanControl.saveSpeed=PWe_saveSpeed
Plugins.SystemPlugins.TempFanControl.plugin.TempFanControl.setWindowTitle=PWe_setWindowTitle
def PWe_FanControl2Plugin__init__(self, session, args = 0):
global LastVLT
global LastPWM
self.session = session
Screen.__init__(self, session)
cprint(">>> FanControl2Plugin.__init__")
self.fan_timer = eTimer()
self.fan_timer_conn = self.fan_timer.timeout.connect(self.updateFanStatus)
self.list = []
ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.selectionChanged)
self.createSetup2()
LastVLT = config.plugins.FanControl.vlt.value
LastPWM = config.plugins.FanControl.pwm.value
self["red"] = StaticText(_("Cancel"))
self["green"] = StaticText(_("Save"))
self["yellow"] = StaticText(_("Check"))
self["blue"] = StaticText(_("PWe"))
self["introduction"] = StaticText()
self["Version"] = StaticText(Version)
self["TxtTemp"] = StaticText()
self["TxtZielRPM"] = StaticText()
self["TxtRPM"] = StaticText()
self["TxtVLT"] = StaticText()
self["TxtPWM"] = StaticText()
self["PixTemp"] = Progress()
self["PixZielRPM"] = Progress()
self["PixRPM"] = Progress()
self["PixVLT"] = Progress()
self["PixPWM"] = Progress()
self["PixERR"] = Progress()
self["TxtERR"] = StaticText()
self["T10ERR"] = StaticText()
self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "MenuActions", "EPGSelectActions", "InfobarTeletextActions"],
{
"ok": self.save,
"cancel": self.cancel,
"red": self.cancel,
"green": self.save,
"yellow": self.pruefen,
"blue": self.keyPWe,
"menu": self.SetupMenu,
"info": self.monitor,
"startTeletext": self.help
}, -1)
if not self.selectionChanged in self["config"].onSelectionChanged:
self["config"].onSelectionChanged.append(self.selectionChanged)
self.selectionChanged()
self.onLayoutFinish.append(self.updateFanStatus)
def PWe_createSetup2(self):
self.list = []
fanstr=_("Fan %d") % 1
fanstr=fanstr.rstrip(" 1")
# check for first run ...
if not hasattr(self, 'PWeSetup'):
self.PWeSetup=False
if self.PWeSetup:
deg = u"\xb0"
self.list.append(getConfigListEntry(_("Temperature and Fan control"), config.plugins.pwe.temperature.control))
self.list.append(getConfigListEntry(fanstr+" "+_("on")+" "+_("max")+" "+_("Temperature")+" [%sC]" % deg.encode('utf8'), config.plugins.pwe.temperature.max))
self.list.append(getConfigListEntry(fanstr+" "+_("off")+" "+_("min")+" "+_("Temperature")+" [%sC]" % deg.encode('utf8'), config.plugins.pwe.temperature.min))
self.list.append(getConfigListEntry(fanstr+" "+_("max")+" "+_("Speed")+" ["+_("rpm")+"]", config.plugins.pwe.speed.max))
self.list.append(getConfigListEntry(fanstr+" "+_("min")+" "+_("Speed")+" ["+_("rpm")+"]", config.plugins.pwe.speed.min))
else: # FanControl2Setup
self.list.append(getConfigListEntry(_("Fan type"), config.plugins.FanControl.Fan))
self.list.append(getConfigListEntry(_("Fan off in Idle Mode"), config.plugins.FanControl.StandbyOff))
self.list.append(getConfigListEntry(_("min Speed rpm"), config.plugins.FanControl.minRPM))
self.list.append(getConfigListEntry(_("max Speed rpm"), config.plugins.FanControl.maxRPM))
self.list.append(getConfigListEntry(_("Static temp C"), config.plugins.FanControl.temp))
self.list.append(getConfigListEntry(_("End temperature C"), config.plugins.FanControl.tempmax))
self.list.append(getConfigListEntry(_("Initial Voltage"), config.plugins.FanControl.vlt))
self.list.append(getConfigListEntry(_("Initial PWM"), config.plugins.FanControl.pwm))
self["config"].list = self.list
self["config"].l.setList(self.list)
def PWe_keyPWe(self):
if self.PWeSetup:
cprint("save PWe settings and return to FanControl2 settings")
self["blue"].setText(_("PWe"))
self.saveSpeed()
self.saveTemperature()
self.PWeSetup=False
else:
cprint("show PWe settings")
self.PWeSetup=True
self["blue"].setText(_("FC2"))
self.createSetup2()
if os_path.exists(fancontrol2_plugindir):
import Plugins.Extensions.FanControl2.plugin
from Plugins.Extensions.FanControl2.plugin import FanControl2Plugin
from Plugins.Extensions.FanControl2.globals import Version
Plugins.Extensions.FanControl2.plugin.FanControl2Plugin.__init__=PWe_FanControl2Plugin__init__
Plugins.Extensions.FanControl2.plugin.FanControl2Plugin.createSetup2=PWe_createSetup2
Plugins.Extensions.FanControl2.plugin.FanControl2Plugin.keyPWe=PWe_keyPWe
Plugins.Extensions.FanControl2.plugin.FanControl2Plugin.saveTemperature=PWe_saveTemperature
Plugins.Extensions.FanControl2.plugin.FanControl2Plugin.saveSpeed=PWe_saveSpeed
yes_no_descriptions = {False: _("no"), True: _("yes")}
def stepped_range(start, stop, step):
r = start
while r < stop:
yield r
r += step
config.plugins.pwe = ConfigSubsection()
temps=[]
temps.append(("0",_("off")))
for temp in stepped_range(20,71,1):
temps.append((str(temp),str(temp)))
temps.append(("100",_("on")))
controls=[]
controls.append(("none",_("none")))
controls.append(("temperature",_("Temperature")))
controls.append(("speed",_("Speed")))
config.plugins.pwe.temperature = ConfigSubsection()
config.plugins.pwe.temperature.control = ConfigSelection(default = "none", choices=controls)
config.plugins.pwe.temperature.max = ConfigSelection(default = "0", choices=temps)
config.plugins.pwe.temperature.min = ConfigSelection(default = "0", choices=temps)
rpms=[]
for speed in stepped_range(100,500,50):
rpms.append((str(speed),str(speed)))
for speed in stepped_range(500,1000,100):
rpms.append((str(speed),str(speed)))
for speed in stepped_range(1000,2000,200):
rpms.append((str(speed),str(speed)))
for speed in stepped_range(2000,3200,400):
rpms.append((str(speed),str(speed)))
for speed in stepped_range(3200,6400,800):
rpms.append((str(speed),str(speed)))
for speed in stepped_range(6400,16000,3200):
rpms.append((str(speed),str(speed)))
config.plugins.pwe.speed = ConfigSubsection()
config.plugins.pwe.speed.max = ConfigSelection(default = "2800", choices=rpms)
config.plugins.pwe.speed.min = ConfigSelection(default = "700", choices=rpms)
def PWemulator_getSensorValue(self, sensorid):
value = -1
sensor = self.sensors_list[sensorid]
if sensor[0] == self.TYPE_TEMPERATURE:
if sensor[3] == "/sys/class/thermal/thermal_zone0/temp":
f = open(sensor[3], "r")
value = int(f.readline().strip())/1000
else:
f = open("%s/value" % sensor[3], "r")
try:
value = int(f.readline().strip())
except:
cprint("temperature glitch")
f.close()
elif sensor[0] == self.TYPE_FAN_RPM:
value = fancontrol.getFanSpeed(sensor[3])
return value
#rename on startup
Components.Sensors.Sensors.getSensorValue=PWemulator_getSensorValue
def PWemulator_getFanSpeed(self, fanid):
value=0
f = open("/proc/stb/fp/fan_speed", "r")
try:
value = int(f.readline().strip()[:-4])
# cprint("fan speed read")
except:
cprint("fan speed glitch")
f.close()
return value
def PWemulator_getVoltage(self, fanid):
value=0
f = open("/proc/stb/fp/fan_vlt", "r")
try:
value = int(f.readline().strip(), 16)
# cprint("get voltage read")
except:
cprint("get voltage glitch")
f.close()
return value
def PWemulator_getPWM(self, fanid):
value=0
f = open("/proc/stb/fp/fan_pwm", "r")
try:
value = int(f.readline().strip(), 16)
# cprint("get pwm read")
except:
cprint("get pwm glitch")
f.close()
return value
#rename on startup
Components.FanControl.FanControl.getFanSpeed=PWemulator_getFanSpeed
Components.FanControl.FanControl.getVoltage=PWemulator_getVoltage
Components.FanControl.FanControl.getPWM=PWemulator_getPWM
def autostart(reason,**kwargs):
if kwargs.has_key("session") and reason == 0:
session = kwargs["session"]
cprint("autostart")
def stepped_range(start, stop, step):
r = start
while r < stop:
yield r
r += step
def main(session,**kwargs):
if os_path.exists(tempfancontrol_plugindir):
session.open(TempFanControl)
else:
cprint("TempFanControl no found")
def Plugins(**kwargs):
return PluginDescriptor(name=_("Temperature and Fan control"), description=_("Temperature and Fan control")+" + "+_("PWM Emulator"), where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)