cl_actions.py~ 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #! /usr/bin/env python
  2. #-*- coding: utf-8 -*-
  3. from cl_taskbaricon import Tray
  4. import os,sys
  5. import wx
  6. import datetime
  7. PATH=os.path.abspath(os.path.dirname(sys.argv[0])) + '/'
  8. TEMPERATURE_FILE = '/sys/class/thermal/thermal_zone0/temp'
  9. TEMPERATURE_DIVISOR = 1000
  10. GOUV_FILE='/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'
  11. FREQ_AUTO_TEMP_MAX = [60, 65, 70]
  12. FREQ_AUTO_TEMP_MIN = [55, 60, 65]
  13. PIC_TIME = [ [ datetime.time(hour=6, minute=30), datetime.time(hour=8, minute=30) ], /
  14. [ datetime.time(hour=11, minute=45), datetime.time(hour=13, minute=0) ] ]
  15. del sys
  16. def GetTemp():
  17. ofi=open(TEMPERATURE_FILE)
  18. f=ofi.read()
  19. return int(f)/TEMPERATURE_DIVISOR
  20. def GetGouv():
  21. ofi=open(GOUV_FILE)
  22. f=ofi.read()
  23. return f
  24. class Tray_action(Tray):
  25. """ Classe dérivée de la gestion de l'icone et du menu qui gère les actions en plus """
  26. def __init__(self, app):
  27. Tray.__init__(self, app)
  28. self.mode = 'vide'
  29. self.prev_gouv = ''
  30. self.timer = wx.Timer(self)
  31. self.timer.Start(3000)
  32. self.Bind(wx.EVT_TIMER, self.EachSecond)
  33. def OnTaskBarActivate(self, evt):
  34. self.CreatePopupMenu()
  35. print "clic sur l'icone"
  36. def OnTaskBarClose(self, evt):
  37. print "Au revoir !"
  38. self.Destroy()
  39. def OnTaskBarSetPowersave(self, evt):
  40. print "appel de OnTaskBarSetPowersave"
  41. self.mode = 'MANUEL'
  42. os.system("sudo cpufreq-set -g powersave")
  43. #self.ChangeIcon(PATH + "cpu_powersave.png")
  44. def OnTaskBarSetOndemand(self, evt):
  45. print "appel de OnTaskBarSetOndemand"
  46. self.mode = 'MANUEL'
  47. os.system("sudo cpufreq-set -g ondemand")
  48. #self.ChangeIcon(PATH + "cpu_ondemand.png")
  49. def OnTaskBarSetEco(self, evt):
  50. print "appel mode Eco"
  51. self.mode = 'ECO'
  52. os.system("sudo cpufreq-set -g ondemand")
  53. def OnTaskBarSetAutomatic1(self, evt):
  54. self.mode = 'AUTO_1'
  55. def OnTaskBarSetAutomatic2(self, evt):
  56. self.mode = 'AUTO_2'
  57. def OnTaskBarSetAutomatic3(self, evt):
  58. self.mode = 'AUTO_3'
  59. def OnTaskBarParam(self, evt):
  60. if self.mode:
  61. self.IconMonitor(1,4)
  62. else:
  63. self.ChangeIcon(PATH + "cpu.png")
  64. self.mode=not(self.mode)
  65. def Each10Seconds(self, evt):
  66. def EachSecond(self, evt):
  67. if 'AUTO' in self.mode:
  68. mode_auto = int(self.mode[5])
  69. if GetTemp() >= FREQ_AUTO_TEMP_MAX[mode_auto] and GetGouv != 'powersave\n':
  70. os.system("sudo cpufreq-set -g powersave")
  71. #self.ChangeIcon(PATH + "cpu_powersave.png")
  72. print "Passage automatique en mode «Économie d'énergie»"
  73. if GetTemp() <= FREQ_AUTO_TEMP_MIN[mode_auto] and GetGouv() != 'ondemand\n':
  74. os.system("sudo cpufreq-set -g ondemand")
  75. #self.ChangeIcon(PATH + "cpu_ondemand.png")
  76. print "Passage automatique en mode «À la demande»"
  77. # Devrait être fait à une fréquence plus basse !
  78. if 'ECO' in self.mode:
  79. maintenant = time.localtime()
  80. maintenant = datetime.time(hour=maintenant.tm_hour, minute=maintenant.tm_min)
  81. #Suivant l'heure, on passe en mode Powersave ou Ondemand
  82. # Pic du matin
  83. if ( maintenant > PIC_TIME[0][0] and maintenant < PIC_TIME[0][1] ) \
  84. or ( maintenant > PIC_TIME[1][0] and maintenant < PIC_TIME[1][1] ) \
  85. or ( maintenant > PIC_TIME[2][0] and maintenant < PIC_TIME[2][1] ):
  86. os.system("sudo cpufreq-set -g powersave")
  87. print "Passage automatique (ECO) en mode « Économie d'énergie »"
  88. else:
  89. os.system("sudo cpufreq-set -g ondemand")
  90. print "Passage automatique (ECO) en mode « À la demande »"
  91. # Met à jour l'icône si besoin
  92. nouv_gouv = GetGouv()
  93. if nouv_gouv != self.prev_gouv:
  94. self.prev_gouv = nouv_gouv
  95. if nouv_gouv == 'ondemand\n':
  96. self.ChangeIcon(PATH + "cpu_ondemand.png")
  97. if nouv_gouv == 'powersave\n':
  98. self.ChangeIcon(PATH + "cpu_powersave.png")