71 lines
1.9 KiB
Python
Executable File
71 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
'''
|
|
FILE NAME
|
|
env_log.py
|
|
1. WHAT IT DOES
|
|
Takes a reading from a DHT sensor and records the values in an SQLite3 database using a Raspberry Pi.
|
|
|
|
2. REQUIRES
|
|
* Any Raspberry Pi
|
|
* A DHT sensor
|
|
* A 10kOhm resistor
|
|
* Jumper wires
|
|
3. ORIGINAL WORK
|
|
Raspberry Full stack 2015, Peter Dalmaris
|
|
4. HARDWARE
|
|
D17: Data pin for sensor
|
|
5. SOFTWARE
|
|
Command line terminal
|
|
Simple text editor
|
|
Libraries:
|
|
import sqlite3
|
|
import sys
|
|
import Adafruit_DHT
|
|
6. WARNING!
|
|
None
|
|
7. CREATED
|
|
8. TYPICAL OUTPUT
|
|
No text output. Two new records are inserted in the database when the script is executed
|
|
// 9. COMMENTS
|
|
--
|
|
// 10. END
|
|
'''
|
|
|
|
|
|
|
|
import sqlite3
|
|
import sys
|
|
import Adafruit_DHT
|
|
import ConfigParser
|
|
|
|
config = ConfigParser.ConfigParser()
|
|
config.read("config.ini")
|
|
sensor = config.get('SENSOR','TYPE')
|
|
|
|
def log_values(sensor_id, temp, hum):
|
|
conn=sqlite3.connect('/home/pi/Documents/pi-temp/pi_temp.db') #It is important to provide an
|
|
#absolute path to the database
|
|
#file, otherwise Cron won't be
|
|
#able to find it!
|
|
curs=conn.cursor()
|
|
curs.execute("""INSERT INTO temperatures values(datetime(CURRENT_TIMESTAMP, 'localtime'),
|
|
(?), (?))""", (sensor_id,temp))
|
|
curs.execute("""INSERT INTO humidities values(datetime(CURRENT_TIMESTAMP, 'localtime'),
|
|
(?), (?))""", (sensor_id,hum))
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
humidity, temperature = Adafruit_DHT.read_retry(getattr(Adafruit_DHT,sensor), 17)
|
|
temperature = temperature * 9/5.0 + 32
|
|
# If you don't have a sensor but still wish to run this program, comment out all the
|
|
# sensor related lines, and uncomment the following lines (these will produce random
|
|
# numbers for the temperature and humidity variables):
|
|
# import random
|
|
# humidity = random.randint(1,100)
|
|
# temperature = random.randint(10,30)
|
|
if humidity is not None and temperature is not None:
|
|
log_values("1", temperature, humidity)
|
|
else:
|
|
log_values("1", -999, -999)
|