Advertisement
Guest User

Untitled

a guest
Jul 18th, 2012
484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. import os
  2. import subprocess
  3. import time
  4. import re
  5.  
  6. command = "/Applications/smcFanControl.app/Contents/Resources/smc -k F0Mn -w %s"
  7. def getFanHex(i):
  8.     return hex(int(i*4))
  9. def setFanSpeed(fanhex):
  10.     os.system(command % (fanhex))
  11. def getFanSpeed():
  12.     rawdata = subprocess.check_output(["/Applications/smcFanControl.app/Contents/Resources/smc", "-r", "-k", "F0Ac"])
  13.     speed = rawdata.split(" ")[6]
  14.     return int(speed)
  15. def getCPUTemp():
  16.     rawdata = subprocess.check_output(["/Applications/TemperatureMonitor.app/Contents/MacOS/tempmonitor", "-ds", "-a", "-f", "-l"])
  17.     CPUline = re.findall("DIODE: [1-2][0-9][0-9].{1,3}F", rawdata)
  18.     tempString = str(CPUline).split(" ")[1]
  19.     temperature = int(float(tempString))
  20.     return temperature
  21. previousTemp = 100;
  22. targetFanSpeed = 2000;
  23. data = "Temp: %d; Diff: %d; Target: %i, Current: %i"
  24. while 1:
  25.     currentTemp = getCPUTemp()
  26.     tempDiff = currentTemp - previousTemp
  27.     fanSpeed = getFanSpeed()
  28.     targetFanSpeed = (currentTemp - 100)*60 + 2000
  29.     if targetFanSpeed > 6200:
  30.         targetFanSpeed = 6200
  31.     elif targetFanSpeed < 2000:
  32.         targetFanSpeed = 2000
  33.     if ((fanSpeed >= targetFanSpeed+500) or (fanSpeed <= targetFanSpeed-500)):
  34.         fanhex = getFanHex(targetFanSpeed)[2:]
  35.         print fanhex
  36.         setFanSpeed(fanhex)
  37.     previousTemp = currentTemp
  38.     print data % (currentTemp,tempDiff,targetFanSpeed,fanSpeed)
  39.     time.sleep(10)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement