Skip to content
This repository was archived by the owner on Dec 9, 2022. It is now read-only.

Commit 2eec4a1

Browse files
committed
sensorLogger is now support all kinds of sensors not just temperature
1 parent e23e598 commit 2eec4a1

3 files changed

Lines changed: 51 additions & 23 deletions

File tree

readSensor.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,31 @@
33
def readSensor():
44
ser = serial.Serial(port="/dev/ttyUSB0", baudrate=9600, timeout=3)
55
ser.open()
6-
value = ser.readline()
6+
input = ser.readline()
77
try:
8-
sensor = re.split(" Sensor: | ", value)[1]
8+
sensor = re.split(" Sensor: | ", input)[1]
99
except:
10-
print "Incorretly formated:", value
10+
#print "Incorretly formated:", input
1111
return readSensor()
1212

1313
if sensor == "Temp":
14-
id = re.split("Sensor: | ID: | Temp: |C\r\n", value)[2]
15-
temp = re.split("Sensor: | ID: | Temp: |C\r\n", value)[3]
14+
id = re.split("Sensor: | ID: | Temp: |C\r\n", input)[2]
15+
value = re.split("Sensor: | ID: | Temp: |C\r\n", input)[3]
1616
elif sensor == "Error":
17-
print value
17+
print input
1818
else:
19-
print "Incorretly formated:", value
19+
print "Incorretly formated:", input
2020

2121
ser.close()
2222

23-
return temp, id
23+
return value, id, sensor
2424

2525
def main():
26-
temp, id = readSensor()
27-
print "ID:", id, "Temp: ", temp, "C"
26+
value, id, sensor = readSensor()
27+
if sensor == "Temp":
28+
print "ID:", id, "Temp: ", value, "C"
29+
else:
30+
print "Sensor:", sensor, "ID:", id, "Value:", value
2831

2932
if __name__ == "__main__":
3033
main()

sensorLogger.py

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,57 @@
1-
import sqlite3, sys, datetime
1+
import sqlite3, time, datetime
22
import readSensor
33

44
#settings
5+
loggTime = 5 # nr of minutes between logging to db
56
sensorLookUp = {"10 DE C6 35 1 8 0 86" : "outside", \
67
"10 C4 EB 35 1 8 0 6" : "test"}
78

89
def logging():
910
date = datetime.datetime.now().strftime("%Y-%m-%d")
1011
time = datetime.datetime.now().strftime("%H:%M")
1112
sensorReadings = {}
13+
readings = 0
1214
while 1:
1315
try:
14-
temp, rom = getTemp.getTemp()
16+
value, id, sensor = readSensor.readSensor()
1517
except:
16-
print "not able to get temp at", date, time
17-
sys.exit()
18-
if rom != "null":
19-
sensorReadings[sensorLookUp[rom]] = temp
20-
else:
21-
break
22-
18+
print "not able to get sensor reading:", date, time
19+
return False # unsuccesfully logged
20+
21+
try:
22+
#if sensor allready have been read then we read them all
23+
if sensorReadings.has_key(sensorLookUp[id]):
24+
break
2325

26+
sensorReadings[sensorLookUp[id]] = (sensor, value)
27+
except:
28+
print "ID:", id, "not found in sensorLookUp, please add"
29+
2430

25-
conn = sqlite3.connect("/home/simon/tempLog/temp.db")
31+
conn = sqlite3.connect("/home/simon/logger/sensors.db")
2632
c = conn.cursor()
27-
for sensor in sensorReadings:
28-
c.execute("insert into temp values(?, ?, ?, ?)",\
29-
[date, time, sensorReadings[sensor], sensor])
33+
for name in sensorReadings:
34+
#date, time, value, sensor, name
35+
c.execute("insert into sensors values(?, ?, ?, ?, ?)",\
36+
[date, time, sensorReadings[name][0], \
37+
sensorReadings[name][1], name])
3038

3139
conn.commit();
3240
c.close()
41+
print "Successfully written readings to db at:", date, time
42+
return True # succesfully logged
43+
44+
def main():
45+
lastLoged = 0
46+
while 1:
47+
timetuple = datetime.datetime.now().timetuple()
48+
minutesToday = timetuple[3] * 60 + timetuple[4]
49+
#if its time to logg and not allready logged
50+
if minutesToday % loggTime == 0 and lastLoged != minutesToday:
51+
lastLoged = minutesToday
52+
logging()
53+
time.sleep(30) # sleep 30 seconds
54+
55+
56+
if __name__ == "__main__":
57+
main()

sensors.db

8 KB
Binary file not shown.

0 commit comments

Comments
 (0)