-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimport_csv.py
80 lines (68 loc) · 3.18 KB
/
import_csv.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import csv # lib csv for excel
import serial # lib serial for read the port usb Arduino uno
from datetime import datetime
import os
from datetime import date
import time
from datetime import date
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
import serial
import time
import os
import csv # lib csv for excel
import requests
import time
from datetime import datetime
from firebase import firebase
cred = credentials.Certificate('file_data.json')
firebase_admin.initialize_app(cred,{'databaseURL': "https://aquaponicsapp-d4dda-default-rtdb.firebaseio.com/"})
ref = db.reference('DATA')
ser = serial.Serial("COM3", 9600) # open serial port
ser.flushInput() # input data Arduino uno
def createfile():
current_date_and_time = date.today().strftime('%Y-%m-%d')
current_date_and_time_string = str(current_date_and_time)
file_name = current_date_and_time_string + ".csv"
if not os.path.isfile(file_name):
with open(file_name, "a", newline='') as f: # create and open the file csv
writer = csv.writer(f, delimiter=",") # Split the string, using comma, followed by a space, as a separator
writer.writerow(
["date", "Time","Humidity","Temperature", "WaterTemp","pH"]) # titles for columns file excel
f.close() # close file test_file.csv
else:
pass
while True:
createfile()
ser_bytes = ser.readline().decode().strip().split(',') # use split(',') to seperate ser_byte string to list
new_ser_bytes = [float(i) for i in ser_bytes] # using list comprehension to perform conversion to float
humidity = new_ser_bytes[0]
temperature = new_ser_bytes[1]
WaterTemp =new_ser_bytes[2]
ph =new_ser_bytes[3]
t = time.localtime() # time location
decoded_time1 = time.strftime('%Y-%m-%d', t) # for date
decoded_time2 = time.strftime('%H:%M:%S', t) # for time
current_date_and_time = date.today().strftime('%Y-%m-%d')
current_date_and_time_string = str(current_date_and_time)
file_name = current_date_and_time_string + ".csv"
print(decoded_time1, decoded_time2, ser_bytes) # print date , time, and data Arduino uno
with open(file_name, "a", newline='') as f: # create and open the file csv
writer = csv.writer(f, delimiter=",") # Split the string, using comma, followed by a space, as a separator
writer.writerow([decoded_time1, decoded_time2, ser_bytes[0], ser_bytes[1],
ser_bytes[2], ser_bytes[3]]) # writerow with seperate data, time , data1 and data2
f.close() # close file test_file.csv
if humidity is not None and temperature is not None and WaterTemp is not None and ph is not None:
time.sleep(5)
print('Humidity={0:0.2f} % Temperature={1:0.2f} °C WaterTemp={2:0.2f} °C pH={3:0.2f}'.format(humidity, temperature, WaterTemp, ph))
else:
print('Failed to get reading. Try again!')
time.sleep(10)
ref.set({
'Humidity': {"Data":' %.2f %%' % humidity},
'Temperature':{"Data":' %.2f °C' % temperature},
'WaterTemp':{"Data": ' %.2f °C' % WaterTemp},
'pH':{"Data": ' %.2f' % ph}
})
time.sleep(900)