Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
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)