· 5 years ago · May 31, 2020, 06:34 AM
1from urllib.request import urlopen
2from tkinter import *
3from random import uniform
4import json
5import sqlite3
6import os
7os.system('clear')
8
9root = Tk()
10root.title("Aplikasi Data Tanaman")
11root.geometry("600x250")
12
13# Databases
14
15# create a database or connect to one
16conn = sqlite3.connect("kebun.db")
17
18# Create cursor
19kursor = conn.cursor()
20
21# Create table
22kursor.execute("""CREATE TABLE IF NOT EXISTS data_pohon (
23 id_tree INTEGER PRIMARY KEY,
24 sensor_tree INTEGER,
25 loc_lat REAL,
26 loc_lon REAL,
27 id_value REAL,
28 id_when TEXT)""")
29
30# Create Function to Sensor Tree
31def option_sensor():
32 option_sensor = Tk()
33 option_sensor.title("Sensor Tanaman")
34 option_sensor.geometry("600x200")
35 # create a database or connect to one
36 conn = sqlite3.connect("kebun.db")
37 # Create cursor
38 kursor = conn.cursor()
39 # Result the database
40 kursor.execute("SELECT *, oid FROM data_pohon")
41 records = kursor.fetchall()
42
43 # loop thur Result
44 print_records = ""
45 for record in records:
46 # Print for looping
47 print_records += f"\n id : {record[0]} sensor : {record[1]} value : {record[4]} Date : {record[5]}"
48
49 # Result in window option_result
50 sensor_lbl= Label(option_sensor, text=print_records);sensor_lbl.grid(row=14, column=0, columnspan=2)
51 # Commit changes
52 conn.commit()
53 # Close connection
54 conn.close()
55
56
57
58
59# Create Function to Delete A Record
60def option_delete():
61 # delete from ID data
62 def delete_1():
63 # create a database or connect to one
64 conn = sqlite3.connect("kebun.db")
65 # Create cursor
66 kursor = conn.cursor()
67 # Delete a record
68 kursor.execute("DELETE FROM data_pohon WHERE oid = " + delete_box.get())
69 delete_box.delete(0, END)
70 # Commit changes
71 conn.commit()
72 # Close connection
73 conn.close()
74
75 # Delete a Tabel data_pohon
76 def delete_2():
77 # create a database or connect to one
78 conn = sqlite3.connect("kebun.db")
79 # Create cursor
80 kursor = conn.cursor()
81 # Delete a tabel
82 kursor.execute("DROP TABLE IF EXISTS data_pohon;")
83 # Create table
84 kursor.execute("""CREATE TABLE IF NOT EXISTS data_pohon (
85 id_tree INTEGER PRIMARY KEY,
86 sensor_tree INTEGER,
87 loc_lat REAL,
88 loc_lon REAL,
89 id_value REAL,
90 id_when TEXT)""")
91 # Commit changes
92 conn.commit()
93 # Close connection
94 conn.close()
95
96
97 global option_delete
98 option_delete = Tk()
99 option_delete.title("Hapus Data")
100 option_delete.geometry('450x200')
101
102 # Create Text Boxes
103 delete_box = Entry(option_delete, width=30)
104 delete_box.grid(row=3, column=1, pady=5)
105 # Create a label delete
106 delete_box_lbl = Label(option_delete, text="Select ID : ")
107 delete_box_lbl.grid(row=3, column=0, pady=5)
108 # Create a Delete Button
109 delete_btn = Button(option_delete, text="Hapus Data ID", command=delete_1)
110 delete_btn.grid(row=4, column=1, columnspan=1, pady=11, padx=11, ipadx=22)
111 # Create a Delete All Button
112 del_all_btn = Button(option_delete, text="Hapus Semua Data", command=delete_2)
113 del_all_btn.grid(row=5, column=1, columnspan=1, ipadx=7)
114
115
116# Create submit function for database
117def add_tree():
118 tree = id_tree.get()
119 sensor = sensor_tree.get()
120
121 # connect to API WEB
122 # Document Address
123 address = f"https://belajar-python-unsyiah.an.r.appspot.com/sensor/read?npm=1904105010004&id_tree={tree}&sensor_type={sensor}"
124 # Open Url
125 url = urlopen(address)
126 # Get documents
127 documents = url.read().decode("utf-8")
128 #proses
129 data = json.loads(documents)
130 # Result data
131 result_id = f"{data['id_tree']}"
132 result_sensor = f"{data['sensor_type']}"
133 result_value = f"{data['value']}"
134 result_when = f"{data['when']}"
135
136 # Search Random location Latitude & Longitude
137 for i in range(100):
138 loc_lat = uniform(1, 20)
139 for j in range(100):
140 loc_lon = uniform(1, 360)
141
142 # create a database or connect to one
143 conn = sqlite3.connect("kebun.db")
144 # Create cursor
145 kursor = conn.cursor()
146 # Insert Into Table
147 kursor.execute("INSERT INTO data_pohon VALUES (:id_tree, :sensor_tree, :loc_lat, :loc_lon, :id_value, :id_when)",
148 {
149 'id_tree': result_id,
150 'sensor_tree': result_sensor,
151 'loc_lat': loc_lat,
152 'loc_lon': loc_lon,
153 'id_value': result_value,
154 'id_when': result_when
155 })
156
157 # Commit changes
158 conn.commit()
159 # Close connection
160 conn.close()
161
162 # Clear The Text Boxes
163 id_tree.delete(0, END)
164 sensor_tree.delete(0, END)
165
166# Create result function
167def result():
168 option_result = Tk()
169 option_result.title("Tampilkan Data")
170 option_result.geometry("600x300")
171 # create a database or connect to one
172 conn = sqlite3.connect("kebun.db")
173 # Create cursor
174 kursor = conn.cursor()
175 # Result the database
176 kursor.execute("SELECT *, oid FROM data_pohon")
177 records = kursor.fetchall()
178
179 # loop thur Result
180 print_records = ""
181 for record in records:
182 # Print for looping
183 print_records += f"\n id : {record[0]} sensor : {record[1]} Latitude : - {record[2]:1.7f} Longitude : {record[3]:1.7f}"
184
185 # Result in window option_result
186 result_lbl= Label(option_result, text=print_records);result_lbl.grid(row=14, column=0, columnspan=2)
187 # Commit changes
188 conn.commit()
189 # Close connection
190 conn.close()
191
192# Show a application information
193def option_info():
194 option_info = Tk()
195 option_info.title("Informasi App")
196 option_info.geometry("400x400")
197 info_txt = ""
198 ok_btn = Button(option_info, text="OK!", command=main())
199 ok_btn.grid(row=20, column=1, columnspan=1)
200
201# Create Text Boxes
202id_tree = Entry(root, width=20)
203id_tree.grid(row=0, column=1, padx=20, pady=(10,0))
204sensor_tree = Entry(root, width=20)
205sensor_tree.grid(row=1, column=1)
206
207# Create Text Box Labels
208id_tree_lbl = Label(root, text="ID Tanaman\t\t: ")
209id_tree_lbl.grid(row=0, column=0, pady=(10,0))
210sensor_tree_lbl = Label(root, text="No. Sensor (0 s/d 9)\t\t: ")
211sensor_tree_lbl.grid(row=1, column=0)
212
213
214# Create information Button
215#info_btn = Button(root, text="Application\ninformation", command=optioninfo_tree)
216#info_btn.grid(row=0, column=2, columnspan=1, ipadx=2)
217
218# Create submit Button
219submit_btn = Button(root, text="Tambahkan Data", command=add_tree)
220submit_btn.grid(row=6, column=0, columnspan=1, pady=10, padx=10, ipadx=42)
221
222# Create Result Button
223result_btn = Button(root, text="Tampilkan Data", command=result)
224result_btn.grid(row=7, column=0, columnspan=1, ipadx=46)
225
226# Create Delete Button
227delete_btn = Button(root, text="Hapus Data", command=option_delete)
228delete_btn.grid(row=8, column=0, columnspan=1, ipadx=60)
229
230# Create Sensor Button
231sensor_btn = Button(root, text="Sensor Tanaman", command=option_sensor)
232sensor_btn.grid(row=7, column=1, columnspan=2, pady=11, padx=11, ipadx=42)
233
234
235'''
236# Create an Update Button
237edit_btn = Button(root, text="Edit Records", command=edit)
238edit_btn.grid(row=11, column=0, columnspan=2, pady=10, padx=10, ipadx=143)
239'''
240
241# Commit changes
242conn.commit()
243# Close connection
244conn.close()
245# Main loop
246root.mainloop()