Samstag, 18. Januar 2014

Temperaturmessung per Cronjob

Eine simple Möglichkeit die Temperatur des RPi's aufzuzeichnen, ist einen CRON - Job dafür anzulegen.
Dieser bietet die Möglichkeit ein Script automatisch nach einer vorgegeben Zeit auszuführen.

Ich nutzte diese Möglichkeit, um im Minutentakt die Temperatur der CPU und der GPU abzurufen und in eine Textdatei zu schreiben. Dabei verwende ich CSV als Dateiformat, mit folgendem Aufbau:

Datum Uhrzeit,GPU Temperatur,CPU Temperatur

Zur Temperaturmessung habe ich die beiden Python Scripte zur CPU und GPU Temperaturabfrage zu einem Script zusammengefasst. Um dieses per Cron - Job auszuführen, muss beachtet werden, dass der Cron - Daemon die PATH Variable nicht kennt. D.h. für alle Programm- und Dateioperationen müssen absolute Pfadangaben verwendet werden. Dies betrifft in diesem Fall das Programm vcgencmd zur GPU Temperaturabfrage und der Speicherort der CSV-Datei.

#!/usr/bin/python
import os
import csv
import time
from time import gmtime, strftime

def getGpuTemperature():
 #use full path to use in cron job
 ret = os.popen('/opt/vc/bin/vcgencmd measure_temp').readline();
 temperature = ret.replace("temp=","").replace("'C\n","");
 
 return(float(temperature))

def getCpuTemperature():
 tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
 cpu_temp = tempFile.read()
 tempFile.close()
 return float(cpu_temp)/1000

def main(): 
          
    file = open("/home/pi/rpi_temperature.csv","ab")
    writer = csv.writer(file,delimiter=',')
    temperature=[]
    temperature.append(strftime("%Y-%m-%d %H:%M:%S", gmtime()))        
    temperature.append(getGpuTemperature())
    temperature.append(getCpuTemperature())
    writer.writerow(temperature)    
    file.close()
        


main();
Note: Code Formatierung mit formatmysourcecode

Um dieses Script per Cron - Job automatisch auszuführen, muss dieses in eine User eigene crontab eingetragen werden. Dies ist eine Tabelle mit allen Cron - Jobs des aktuellen Users.
Um diese zu erzeugen bzw. zu bearbeiten, muss auf der Kommandozeile folgender Befehl eingegeben werden:

crontab -e

Anschließend öffnent sich die crontab Datei zur Bearbeitung. In diese habe ich folgende Zeile eingefügt.

* * * * * /home/pi/cpu_temperature.py>>/dev/null

Die fünf Sterne am Anfang konfigurieren den Job so, dass dieser je Minute ausgeführt wird. Ausgeführt wird das python script cpu_temperature.py im home Ordner. Mögliche print Ausgaben werden nach /dev/null umgeleitet.
Durch mein Script wird im Home Ordner eine CSV-Datei erstellt, welche den Messzeitpunkt und die beiden Temperaturwerte enthält. Anbei der Auszug aus meiner Messreihe.

...
2014-01-14 09:26:02,48.2,48.692
2014-01-14 09:27:01,48.7,47.615
2014-01-14 09:28:01,48.2,48.154
2014-01-14 09:29:02,48.2,48.692
...


Keine Kommentare:

Kommentar veröffentlichen