30 Nov 2017, 23:55

Pour les modifications. En fait le sleep ne fonctionnait pas et il faisait la mesure en temps réel aulieu de la faire toutes les quelque secondes. Ce qui bouffait du temps CPU et faisait monter la température....
Maintenant cela fonctionne très bien et en mode repos allumé (sans jeu actif) le ventilateur se met en route de temps en temps seulement. Si on enlève le # devant print, il écrit la température à chaque lecture avec putty.

#!/usr/bin/env python3
# Author: Edoardo Paolo Scalafiotti
import os
from time import sleep
import signal
import sys
import RPi.GPIO as GPIO
pin = 18 # The pin ID, edit here to change it
maxTMP = 60 # The maximum temperature in Celsius after which we trigger the fan
def setup():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(pin, GPIO.OUT)
    GPIO.setwarnings(False)
    return()
def getCPUtemperature():
    res = os.popen('vcgencmd measure_temp').readline()
    temp =(res.replace("temp=","").replace("'C\n",""))
    #print("temp is {0}".format(temp)) #Uncomment here for testing
    return temp
def fanON():
    setPin(True)
    return()
def fanOFF():
    setPin(False)
    return()
def getTEMP():
    CPU_temp = float(getCPUtemperature())
    if CPU_temp>maxTMP:
        fanON()
    if CPU_temp<maxTMP-5:
        fanOFF()
    return()
def setPin(mode): # A little redundant function but useful if you want to add logging
    GPIO.output(pin, mode)
    return()
try:
    setup() 
    while True:
        sleep(5) # Read the temperature every x sec, increase or decrease this limit if you want
	getTEMP()
except:
	GPIO.cleanup() # resets all GPIO ports used by this program