Folgendes Problem, ich habe mir Script geschrieben in dem über 1-Wire drei Temperatur ausgelesen wird und auf der GUI dargestellt wird.
Das funktioniert auch ganz gut, nun möchte ich die einzelnen Werte, da nach weitere Sensoren folgen sollen, zyklisch auf der GUI anzeigen lassen.
Versuche nun das Problem seit Tagen zu lösen, kann man die Label überschreiben oder löschen beziehungsweise muss das Fenster immer wieder neu erzeugt werden.
Für Euch sicher ein leichtes, für mich ein grosses Problem, schon mal dank im vorraus.
Code: Alles auswählen
import time
from Tkinter import *
deviceFile1 = '/sys/bus/w1/devices/28-03156396f9ff/w1_slave'
deviceFile2 = '/sys/bus/w1/devices/28-0315639b22ff/w1_slave'
deviceFile3 = '/sys/bus/w1/devices/28-021563812bff/w1_slave'
#Temperatur1
def readTemp1():
try:
with open (deviceFile1)as f:
f.readline() #erste Zeile ignorieren
s=f.readline() #zweite Zeile
n=s.find('t=') #dort 't=' suchen
if(n>0):
t=float(s[n+2:])/1000
lbl1.configure(text= '%.1f C' % t)
fenster.after(3000, readTemp1)
print ('Temp1: %.3f C°' % t)
except IOError:
print('Verbindungsfehler')
lbl1.configure(text= 'Verbindungsfehler' )
#Temperatur2
def readTemp2():
try:
with open (deviceFile2)as f:
f.readline() #erste Zeile ignorieren
s=f.readline() #zweite Zeile
n=s.find('t=') #dort 't=' suchen
if(n>0):
t=float(s[n+2:])/1000
lbl2.configure(text= '%.1f C' % t)
fenster.after(3000, readTemp2)
print ('Temp2: %.3f C°' % t)
except IOError:
print('Verbindungsfehler')
lbl2.configure(text= 'Verbindungsfehler' )
#Temperatur3
def readTemp3():
try:
with open (deviceFile3)as f:
f.readline() #erste Zeile ignorieren
s=f.readline() #zweite Zeile
n=s.find('t=') #dort 't=' suchen
if(n>0):
t=float(s[n+2:])/1000
lbl3.configure(text= '%.1f C' % t)
fenster.after(3000, readTemp3)
print ('Temp3: %.3f C°' % t)
except IOError:
print('Verbindungsfehler')
lbl3.configure(text= 'Verbindungsfehler' )
#Fenster
fenster=Tk() #Erzeugen Basis-Fenster
fenster.title('Temparaturen DS18b20') #Fenster Titel
fenster.geometry('320x200') #Fenster Groesse
#Temp1
t1=Label( #Text Temp Aufruf
text="Temp-Essen", #Text Temp Eingabe
font=('arial',17)) #Text Temp Font, Groesse
t1.pack() # Desinger t1
lbl1=Label( #Wert Label
font=("arial ",17)) #Wert Font, Groesse
lbl1.pack() # Desinger lbl1
readTemp1() # Wert lesen
#Trenner
t4=Label(
text='______________________________________________________________________________________________',
font=('arial',1))
t4.pack()
#Temp2
t2=Label( #Text Temp Aufruf
text="Temp-Wohnen", #Text Temp Eingabe
font=('arial',17)) #Text Temp Font, Groesse
t2.pack() #Text Temp Desinger
lbl2=Label( #Wert Label
font=("arial ",17)) #Wert Font, Groesse
lbl2.pack()
readTemp2()
#Trenner
t5=Label(
text='______________________________________________________________________________________________',
font=('arial ',1))
t5.pack()
#Temp3
t3=Label(
text='Temp-Aussen',
font=('arial',17))
t3.pack()
lbl3=Label( #Wert Label
font=("arial ",17)) #Wert Font, Groesse
lbl3.pack()
readTemp3()
mainloop()