#!/usr/bin/python3 # Temperaturmessung mit DS18S20 und T.-Kurve mit Gnuplot from glob import glob # um den Pfad zum Sensorzu finden from subprocess import run # Zugriff auf Betriebssystem import time # kein Modul für den 1-Wire Bus notwendig s = glob("/sys/bus/w1/devices/10-*")[0]+"/temperature" v = "T-"+time.strftime("%y%m%d%H%M%S") # Namensanfang dat_name = v + ".dat" ; plt_name = v + ".png" td = open(dat_name,'w') # Dateiobjekt für Temp.daten print("\nTemperaturmessung, Abbruch durch Ctrl-C") print("in der Graphik-Datei",plt_name) print("Beenden der Graphik-Anzeige fbi durch q") print("***************************************") iv = int(input("Zeit in s zwischen zwei Messungen: ")) try: # Folgendes normalerweise, ohne Drücken von Ctrl-C while True: # Endlosschleife zur Temperaturmessung zeit = time.strftime("%d.%m.%y/%H:%M:%S") # Zeit with open(s,"r") as f: T_roh = f.read() # T_roh T = round(float(T_roh)/1000,2) # Temperatur T temp = "%5.1f 'C" % round(T,1) # T, gerundet print(temp,end="\r",flush=True) # Ausgabe von T td.write(zeit+' '+ "%6.2f" % round(T,2) +'\n') time.sleep(iv) # Warten in s bis nächste Messung except KeyboardInterrupt: # nach dem Drücken von Ctrl-C td.close() # Schließen der Temperaturdaten-Datei gd = open("batch",'w') # Dateiobjekt für Gnuplot aus = "set encoding iso_8859_1\n" aus = aus + "set title 'DS18S20, Messung " + v + \ ", Mess-Intervall " + str(iv) +" s'\n" aus = aus + 'set format x "%H:%M\\n %S s"\n' aus = aus + "set ylabel 'Temperatur [\260C]'\n" aus = aus + "set xdata time\n" aus = aus + "set timefmt '%d.%m.%y/%H:%M:%S'\n" aus = aus + "set terminal pngcairo mono\n" aus = aus + "set output '" + plt_name + "'\n" aus = aus + "p '" + dat_name + "' using 1:2 w l t ''" gd.write(aus) ; gd.close() # Schreiben, Schließen und run(["gnuplot","batch"]) # Ausführen der Gnuplot-Datei run(["fbi",plt_name]) # Anzeige der Graphik-Datei