mirror of
https://github.com/warkanum/warkanums-pi-device-snippets.git
synced 2025-05-18 18:47:30 +00:00
Client interface to display the sensor data from another machine.
This commit is contained in:
parent
3db86a779c
commit
c98df8c1da
89
build1/cli/display.py
Executable file
89
build1/cli/display.py
Executable file
@ -0,0 +1,89 @@
|
||||
import tkinter as tk
|
||||
import psycopg2 as pg
|
||||
import datetime as dt
|
||||
|
||||
SQL_SRV='192.168.89.6'
|
||||
SQL_USR='pistats'
|
||||
SQL_PWD='pistats'
|
||||
SQL_DB='pistats'
|
||||
|
||||
class Application(tk.Frame):
|
||||
def __init__(self, master=None):
|
||||
tk.Frame.__init__(self, master)
|
||||
self.pack()
|
||||
master.title("PiTool Client")
|
||||
self.grid(column=0, row=0, sticky=(tk.N, tk.W, tk.E, tk.S))
|
||||
self.columnconfigure(0, weight=1)
|
||||
self.rowconfigure(0, weight=1)
|
||||
self.data_temp = tk.StringVar()
|
||||
self.data_humidity = tk.StringVar()
|
||||
self.data_light = tk.StringVar()
|
||||
self.data_motion = tk.StringVar()
|
||||
self.data_time = tk.StringVar()
|
||||
self.sqlcon = None
|
||||
self.sqlcur = None
|
||||
self.createWidgets()
|
||||
|
||||
def createWidgets(self):
|
||||
self.lbl_temp = tk.Label(self, textvariable=self.data_temp, width=20).grid(row=0, column=0, sticky=(tk.W, tk.N))
|
||||
self.lbl_humidity = tk.Label(self, textvariable=self.data_humidity, width=20).grid(row=0, column=1, sticky=(tk.E, tk.N))
|
||||
self.lbl_light = tk.Label(self, textvariable=self.data_light, width=20).grid(row=1, column=0, sticky=(tk.W, tk.N))
|
||||
self.lbl_motion = tk.Label(self, textvariable=self.data_motion, width=20).grid(row=1, column=1, sticky=(tk.E, tk.N))
|
||||
self.lbl_motion = tk.Label(self, textvariable=self.data_time, width=20).grid(row=2, column=3, sticky=(tk.E, tk.S))
|
||||
self.btn_update = tk.Button(self, text="Update Now", command=self.do_update).grid(column=0, row=2, sticky=(tk.W, tk.S))
|
||||
|
||||
def updateLabels(self):
|
||||
self.data_time.set("" + str(dt.datetime.now()))
|
||||
|
||||
if self.sqlcur is not None:
|
||||
self.sqlcur.execute("""select id, sensor_type, data_read, time_read from v_sensordata_current""")
|
||||
while True:
|
||||
data = self.sqlcur.fetchone()
|
||||
|
||||
if data and str(data[1]) == 'motion':
|
||||
self.data_motion.set("Motion: " + str(data[2]))
|
||||
elif data and str(data[1]) == 'light':
|
||||
self.data_light.set("Light: " + str(data[2]))
|
||||
elif data and str(data[1]) == 'temperature':
|
||||
self.data_temp.set("Temp: " + str(data[2]) + ' C')
|
||||
elif data and str(data[1]) == 'humidity':
|
||||
self.data_humidity.set("Humidity: " + str(data[2]) + ' %')
|
||||
|
||||
if not data:
|
||||
break
|
||||
|
||||
self.after(2000, self.updateLabels)
|
||||
|
||||
#self.QUIT = tk.Button(self, text="QUIT", fg="red",command=master.destroy)
|
||||
#self.QUIT.pack(side="bottom")
|
||||
|
||||
def do_update(self):
|
||||
print("hi there, everyone!")
|
||||
self.updateLabels()
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
root = tk.Tk()
|
||||
app = Application(master=root)
|
||||
app.sqlcon = pg.connect(host=SQL_SRV,user=SQL_USR,password=SQL_PWD,database=SQL_DB)
|
||||
app.sqlcur = app.sqlcon.cursor()
|
||||
|
||||
|
||||
app.updateLabels()
|
||||
app.mainloop()
|
||||
|
||||
app.sqlcur.close()
|
||||
app.sqlcon.close()
|
||||
print('Exit')
|
||||
|
||||
|
||||
except pg.Error as e:
|
||||
print("Sql error: " + str(e))
|
||||
|
||||
except Exception as e:
|
||||
print("Unknow error: " + str(e))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue
Block a user