Mein Raspi wird ab zu zu warm… um das zu verhindern habe ich einen 5V Lüfter von Noctua erstanden ( https://noctua.at/de/nf-a4x10-5v ). Weiter brauchte ich einen NPN 107B Transistor und einen 650 Ohm Wiederstand.
Ich habe dann mit dem GPIO Pin 21 eine Schaltung gebaut, sodass ich über den Transistor den Lüfter schalten kann. (Berechnung VOrwiederstand Transistor: https://www.mikrocontroller.net/articles/Basiswiderstand ) Das scheint super zu laufen.
Zuerst müssen wir die GPIO Pins aktivieren
#gpio pins für die lüftersteuerung
echo "21" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio21/direction
echo "1" > /sys/class/gpio/gpio21/value
Diese Zeilen habe ich auch der /etc/rc.local angefügt (vor das EXIT ), damit überlegt es wohl auch nen Neustart (yet to prove)
Ich habe das folgende Script geschrieben (/usr/bin/tempdaemon)
#!/bin/bash
while true; do
# date;
TC=$(awk '{printf("%.1f\n",$1/1e3)}' /sys/class/thermal/thermal_zone0/temp)
BIGGER55=$(awk -v a="$TC" -v b="55.0" 'BEGIN{print(a>b)}')
SMALLER45=$(awk -v a="$TC" -v b="45.0" 'BEGIN{print(a<b)}')
# echo $TC;
# echo $BIGGER55;
# echo $SMALLER45;
if [ $BIGGER55 == "1" ]; then
# echo "Mehr als 55, Lüfter an";
echo "1" > /sys/class/gpio/gpio21/value ;
sleep 60;
elif [ $SMALLER45 == "1" ]; then
#Lüfter aus
# echo "Lüfter aus";
echo "0" > /sys/class/gpio/gpio21/value;
else
# echo "weder noch, sweetspot?!?";
sleep 1;
fi
sleep 10;
done
Danach habe ich es ausführbar gemacht (sudo chmod +x /usr/bin/tempdaemon)
Anschließend habe ich die Servicedatei dafür geschrieben (sudo nano /etc/systemd/system/tempdaemon.service)
[Unit]
Description=Arnes Lüfterdaemon
[Service]
ExecStart=/usr/bin/tempdaemon
Restart=on-failure
[Install]
WantedBy=multi-user.target
Und dann den Service enabled (damit er nach nem neustart automatisch mitstartet) und ihn einmal von hand gestartet
sudo systemctl enable tempdaemon
sudo systemctl start tempdaemon
Ausserdem habe ich mir zwei aliase in die ~/.bash_alias eingefügt, mit denen ich die aktuelle temperatur und den zustand des lüfters beobachten kann.
alias temp='/opt/vc/bin/vcgencmd measure_temp'
alias lufter='cat /sys/class/gpio/gpio21/value'