#! /usr/bin/env python #-*- coding: utf-8 -*- from cl_taskbaricon import Tray import os,sys import wx import datetime PATH=os.path.abspath(os.path.dirname(sys.argv[0])) + '/' TEMPERATURE_FILE = '/sys/class/thermal/thermal_zone0/temp' TEMPERATURE_DIVISOR = 1000 GOUV_FILE='/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor' FREQ_AUTO_TEMP_MAX = [60, 65, 70] FREQ_AUTO_TEMP_MIN = [55, 60, 65] PIC_TIME = [ [ datetime.time(hour=6, minute=30), datetime.time(hour=8, minute=30) ], / [ datetime.time(hour=11, minute=45), datetime.time(hour=13, minute=0) ] ] del sys def GetTemp(): ofi=open(TEMPERATURE_FILE) f=ofi.read() return int(f)/TEMPERATURE_DIVISOR def GetGouv(): ofi=open(GOUV_FILE) f=ofi.read() return f class Tray_action(Tray): """ Classe dérivée de la gestion de l'icone et du menu qui gère les actions en plus """ def __init__(self, app): Tray.__init__(self, app) self.mode = 'vide' self.prev_gouv = '' self.timer = wx.Timer(self) self.timer.Start(3000) self.Bind(wx.EVT_TIMER, self.EachSecond) def OnTaskBarActivate(self, evt): self.CreatePopupMenu() print "clic sur l'icone" def OnTaskBarClose(self, evt): print "Au revoir !" self.Destroy() def OnTaskBarSetPowersave(self, evt): print "appel de OnTaskBarSetPowersave" self.mode = 'MANUEL' os.system("sudo cpufreq-set -g powersave") #self.ChangeIcon(PATH + "cpu_powersave.png") def OnTaskBarSetOndemand(self, evt): print "appel de OnTaskBarSetOndemand" self.mode = 'MANUEL' os.system("sudo cpufreq-set -g ondemand") #self.ChangeIcon(PATH + "cpu_ondemand.png") def OnTaskBarSetEco(self, evt): print "appel mode Eco" self.mode = 'ECO' os.system("sudo cpufreq-set -g ondemand") def OnTaskBarSetAutomatic1(self, evt): self.mode = 'AUTO_1' def OnTaskBarSetAutomatic2(self, evt): self.mode = 'AUTO_2' def OnTaskBarSetAutomatic3(self, evt): self.mode = 'AUTO_3' def OnTaskBarParam(self, evt): if self.mode: self.IconMonitor(1,4) else: self.ChangeIcon(PATH + "cpu.png") self.mode=not(self.mode) def Each10Seconds(self, evt): def EachSecond(self, evt): if 'AUTO' in self.mode: mode_auto = int(self.mode[5]) if GetTemp() >= FREQ_AUTO_TEMP_MAX[mode_auto] and GetGouv != 'powersave\n': os.system("sudo cpufreq-set -g powersave") #self.ChangeIcon(PATH + "cpu_powersave.png") print "Passage automatique en mode «Économie d'énergie»" if GetTemp() <= FREQ_AUTO_TEMP_MIN[mode_auto] and GetGouv() != 'ondemand\n': os.system("sudo cpufreq-set -g ondemand") #self.ChangeIcon(PATH + "cpu_ondemand.png") print "Passage automatique en mode «À la demande»" # Devrait être fait à une fréquence plus basse ! if 'ECO' in self.mode: maintenant = time.localtime() maintenant = datetime.time(hour=maintenant.tm_hour, minute=maintenant.tm_min) #Suivant l'heure, on passe en mode Powersave ou Ondemand # Pic du matin if ( maintenant > PIC_TIME[0][0] and maintenant < PIC_TIME[0][1] ) \ or ( maintenant > PIC_TIME[1][0] and maintenant < PIC_TIME[1][1] ) \ or ( maintenant > PIC_TIME[2][0] and maintenant < PIC_TIME[2][1] ): os.system("sudo cpufreq-set -g powersave") print "Passage automatique (ECO) en mode « Économie d'énergie »" else: os.system("sudo cpufreq-set -g ondemand") print "Passage automatique (ECO) en mode « À la demande »" # Met à jour l'icône si besoin nouv_gouv = GetGouv() if nouv_gouv != self.prev_gouv: self.prev_gouv = nouv_gouv if nouv_gouv == 'ondemand\n': self.ChangeIcon(PATH + "cpu_ondemand.png") if nouv_gouv == 'powersave\n': self.ChangeIcon(PATH + "cpu_powersave.png")