Temperaturen unter Linux auslesen
Die Überwachung von Temperaturen insbesondere in Servern kann helfen frühzeitig eine Überhitzung zu erkennen und so Schäden vorzubeugen.
Auf vielen System kann man Temperatursensoren auslesen indem man im Ordner /sys/class/thermal nach Unterordnern sucht die mit thermal_zone beginnen. Normalerweise sind die Ordner fortlaufend nummeriert. In diesen Ordnern befindet sich eine Datei mit dem namen temp in dem die Temperatur für diesen Sensor in tausendstel Grad zu finden ist.
cat /sys/class/thermal/thermal_zone*/temp
Ausgabe:
27800
29800
42000
Um den Wert eines bestimmten Sensors als Kommazahl zu bekommen, kann man z.B. folgendes machen:
cat /sys/devices/virtual/thermal/thermal_zone0/temp | awk '{print $1/1000}'
Ausgabe
27.8
Raspian auf Raspberry Pi
Auf dem Raspberry kann man sich, sofern man Raspian benutzt, die Temperatur mit dem Befehl vcgencmd anzeigen lassen.
vcgencmd measure_temp
Ergibt eine Ausgabe von
temp=64.5'C
Möchte man nur die Temperatur als numerischen Wert kann man so den Rest wegschneiden:
/opt/vc/bin/vcgencmd measure_temp | cut -d '=' -f2 | sed 's/..$//'
Auf MQTT Server publizieren
Man kann diese Temperaturwerte jetzt z.B. auf einem MQTT Server publizieren und ggf. eine Hausautomationssoftware darauf reagieren lassen.
/opt/vc/bin/vcgencmd measure_temp | cut -d '=' -f2 | sed 's/..$//' | /usr/bin/mosquitto_pub -h mqtt -t home/groundfloor/office/sensor/temperature/myserver/cpu -l