dies ist mein erster Post - bitte insoweit um Nachsicht !
Ich möchte über ein Python-Skript auf einem Raspberry Sensordaten einer Solarthermieanlage aus einer Datei iterierend einzulesen und graphisch darzustellen. Dabei bin ich auf ein tkinter-Skript gestossen, dass ich für meinen Zweck angepasst habe und das aktuell bis auf einen letzten Punkt lauffähig ist:
Die Ausgabezeile für den Pumspenstatus soll je nach Inhalt des Textfeldes (AN oder AUS) in verschiedenen Farben (grün / rot) dargestellt werden. Ich habe unterschiedlichste Dinge erfolglos probiert - mir fehlen einfach die Basiskenntnisse in Python / Tkinter und nicht zuletzt bin ich auch in OO noch nicht sehr bewandert. Hier das Skript:
Code: Alles auswählen
#!/usr/local/bin/python
# coding: latin-1
import Tkinter as tk
COL_PUMP="white"
EINHEIT = " °C "
COL_FOR = "yellow"
COL_BACK= "black"
FONT1="Helvetica 70 bold"
FONT2="Helvetica 55 bold"
LOG_FILE = "/home/pi/dlogg/UVR31-last.log"
class MainWin(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.attributes("-fullscreen", True)
self.configure(background=COL_BACK)
self.kollektor = tk.StringVar()
self.speicherOben = tk.StringVar()
self.speicherUnten = tk.StringVar()
self.pumpe = tk.StringVar()
self.pumpcol = tk.StringVar()
self.datum = tk.StringVar()
self.uhrzeit = tk.StringVar()
self.zeitpunkt = tk.StringVar()
tk.Label(self, text="Solaranlagenstatus", fg=COL_FOR, bg=COL_BACK, font=FONT1).grid(row=0,column=0)
tk.Label(self, text="Kollektor: ", fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=1,column=0)
tk.Label(self, textvariable=self.kollektor, fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=1,column=1)
tk.Label(self, text="Speicher oben: ",fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=2,column=0)
tk.Label(self, textvariable=self.speicherOben, fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=2,column=1)
tk.Label(self, text="Speicher unten:",fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=3,column=0)
tk.Label(self, textvariable=self.speicherUnten, fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=3,column=1)
tk.Label(self, text=" Pumpe: ",fg=COL_FOR,bg=COL_BACK, font=FONT2).grid(row=4,column=0)
p = tk.Label(self, textvariable=self.pumpe, fg=COL_PUMP, bg=COL_BACK, font=FONT2)
p.grid(row=4,column=1)
if self.pumpe.get() == "AN":
p.configure(fg="green")
else:
p.configure(fg="red")
tk.Label(self, text=" Uhrzeit: ", fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=5,column=0)
tk.Label(self, textvariable=self.uhrzeit,fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=5,column=1)
tk.Label(self, text=" Datum: ", fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=6,column=0)
tk.Label(self, textvariable=self.datum,fg=COL_FOR, bg=COL_BACK, font=FONT2).grid(row=6,column=1)
tk.Button (self, text='Exit', fg=COL_FOR, bg=COL_BACK, font="Helvetica 20 bold",command=self.quit).grid(row=14,column=1
)
self.after(1000, self.read)
def read(self):
with open(LOG_FILE) as lines:
for line in lines:
pass
self.datum.set(line.rstrip()[8:10] + '.' + line.rstrip()[5:7] + '.' + line.rstrip()[0:4])
self.uhrzeit.set(line.rstrip()[11:20])
self.zeitpunkt.set(self.uhrzeit.get() + ' / ' + self.datum.get())
self.kollektor.set(line.rstrip()[30:35] + ' °C ')
self.speicherUnten.set(line.rstrip()[40:45] + ' °C ')
self.speicherOben.set(line.rstrip()[50:55] + ' °C ')
self.pumpe.set(line.rstrip()[59:60])
if self.pumpe.get() == "0" :
self.pumpe.set("AUS")
if self.pumpe.get() == "1" :
self.pumpe.set("AN")
self.after(1000, self.read)
def main():
root = MainWin()
root.mainloop()
if __name__ == '__main__':
main()
Wäre toll, wenn mir jemand helfen könnte, den "letzten Schliff" hinzukriegen.
Viele Grüße
Jürgen