|
1 | 1 | #!/usr/bin/python
|
2 | 2 |
|
| 3 | +""" Simple Python datalogger for the Raspberry PI """ |
| 4 | + |
3 | 5 | import datetime
|
4 | 6 | import sys
|
5 | 7 |
|
|
9 | 11 |
|
10 | 12 |
|
11 | 13 | def get_dbhandle():
|
| 14 | + """ Return a database handle to the SQLite file """ |
12 | 15 | con = None
|
13 | 16 | con = sqlite3.connect('/var/lib/rpi-datalogger/database.db')
|
14 | 17 | return con
|
15 | 18 |
|
16 | 19 | def get_temp(file_link):
|
17 |
| - file = open(file_link) |
18 |
| - text = file.read() |
19 |
| - file.close() |
20 |
| - firstline = text.split("\n")[0] |
21 |
| - if not 'YES' in firstline: |
22 |
| - sys.exit(0) |
23 |
| - secondline = text.split("\n")[1] |
24 |
| - temp = secondline.split(" ")[9] |
25 |
| - temp = round((int(temp[2:])/1000.0)*1.8+32,2) |
26 |
| - return temp |
| 20 | + """ Given a file_link to a dallas one-wire device return the |
| 21 | + temperature in fahrenheit """ |
| 22 | + |
| 23 | + with open(file_link) as sensor: |
| 24 | + text = sensor.read() |
| 25 | + |
| 26 | + firstline = text.split("\n")[0] |
| 27 | + secondline = text.split("\n")[1] |
| 28 | + if not 'YES' in firstline: |
| 29 | + sys.exit(0) |
| 30 | + temp = secondline.split(" ")[9] |
| 31 | + |
| 32 | + # Sensor reads in celsius, C * 1.8 + 32 = F |
| 33 | + temp = round((int(temp[2:])/1000.0)*1.8+32, 2) |
| 34 | + return temp |
27 | 35 |
|
28 | 36 | def main():
|
| 37 | + """ Where the magic happens. """ |
| 38 | + |
29 | 39 | inside = get_temp("/sys/bus/w1/devices/28-000003d37411/w1_slave")
|
30 | 40 | outside = get_temp("/sys/bus/w1/devices/28-000003ea8a14/w1_slave")
|
31 | 41 |
|
| 42 | + curdate = str(datetime.datetime.now())[0:19] |
| 43 | + |
32 | 44 | con = get_dbhandle()
|
33 | 45 | cur = con.cursor()
|
34 |
| - sql = 'insert into trends (timestamp, insidetemp_f, outsidetemp_f) values ("%s", %s, %s)' % ( str(datetime.datetime.now())[0:19], inside, outside) |
| 46 | + sql = 'insert into trends (timestamp, insidetemp_f, outsidetemp_f) \ |
| 47 | + values ("%s", %s, %s)' % (curdate, inside, outside) |
35 | 48 |
|
36 |
| - |
37 |
| - print sql |
38 | 49 | cur.execute(sql)
|
39 | 50 | con.commit()
|
40 |
| - print str(datetime.datetime.now())[0:19],",",inside,",",outside |
| 51 | + |
| 52 | + curdate = str(datetime.datetime.now())[0:19] |
| 53 | + |
| 54 | + print curdate, ",", inside, ",", outside |
| 55 | + |
41 | 56 | lcd = lcddriver.lcd(init=False)
|
42 |
| - lcd.lcd_display_string("Inside : " +str(inside)+' F ',2) |
| 57 | + lcd.lcd_display_string("Inside : " +str(inside)+' F ', 2) |
43 | 58 | lcd.lcd_display_string("Outside: " + str(outside) + " F ", 3)
|
44 |
| - lcd.lcd_display_string(str(datetime.datetime.now())[0:19],4) |
45 |
| - |
| 59 | + lcd.lcd_display_string(curdate, 4) |
46 | 60 |
|
47 | 61 | if __name__ == "__main__":
|
48 | 62 | main()
|
|
0 commit comments