Nachdem ich mir einen Raspberry Pi 4 mit dem schicken Magnet Gehäuse mit den bereits integrierten Lüftern besorgt hatte, störte mich das ständige Geräusch der kleinen Lüfter.
Deshalb musste eine Lösung her, die die Lüfter deaktiviert, wenn die Temperatur ok ist.
Vorbereitung
Auf dem Raspberry Pi sollte python und die GPIO Bibliothek installiert sein. Die notwendigen Packages für Python installiert man über apt:
pi@host:~$ sudo apt install python-dev python-pip
Die GPIO Bibliothek am besten über pip:
pi@host:~$ pip install RPi.GPIO
Hardware
Zuerst habe ich mir bei Conrad den Transistor BC547B besorgt. Dazu noch ein Set mit Widerständen
Schaltung
Da das Widerstand Set keinen richtig passenden Widerstand hatte habe ich einen 4,7k Ohm und einen 1k Ohm Widerstand in Serie zusammen gelötet.
Damit war der Transistor ausreichend geschützt.
Python Script
Dann habe ich noch ein Python Script zusammen geklöppelt welches ich unter /opt/fancontrol abgelegt habe.
Der Name des Skripts ist “fancontrol.py”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import io
import sys
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT)
while True:
try:
temperatureFile = open("/sys/class/thermal/thermal_zone0/temp", "r")
temperatureString = temperatureFile.readline()
temperatureFile.close()
temperatureFloat = float(temperatureString)
temperature = temperatureFloat/1000
if temperature > 45.0:
GPIO.output(14, True)
elif temperature <= 41.0:
GPIO.output(14, False)
print "Temperature " + str(temperature)
time.sleep(10.0)
except:
temperatureFile.close()
GPIO.cleanup()
sys.exit()
Die Temperatur Bereiche können individell noch angepasst werden indem man einfach die entsprechenden Werte im Skript anpasst.
Startup Skript
Damit das Python Skript auch bei jedem Neustart immer wieder gestartet wird habe ich noch folgende Zeile in die “/etc/rc.local” Datei eingefügt:
python /opt/fancontrol/fancontrol.py >/dev/null 2>&1 &