Skip to content

Commit

Permalink
Retrieve alert config settings from database
Browse files Browse the repository at this point in the history
* Get settings from db

* Alert based on threshold values

* Reorganize files
  • Loading branch information
vishnuravi authored Nov 10, 2019
1 parent 39b63a2 commit 646ddf8
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 30 deletions.
6 changes: 3 additions & 3 deletions webapp/app.py → app.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

app = Flask(__name__)

db = "sensor.db"
db = 'sensor.db'

def create_connection(db):
con = None
Expand Down Expand Up @@ -55,11 +55,11 @@ def update_settings():

# clear existing settings
cur = con.cursor()
cur.execute("DELETE from settings")
cur.execute('DELETE from settings')
con.commit()

# insert the updated settings
sql = "INSERT INTO settings (userid,low_temp,high_temp,low_humidity,high_humidity,low_pressure,high_pressure,polling_frequency) VALUES (?,?,?,?,?,?,?,?)"
sql = 'INSERT INTO settings (userid,low_temp,high_temp,low_humidity,high_humidity,low_pressure,high_pressure,polling_frequency) VALUES (?,?,?,?,?,?,?,?)'
cur.execute(sql, (userid, low_temp, high_temp, low_humidity,
high_humidity, low_pressure, high_pressure, polling_frequency))
con.commit()
Expand Down
96 changes: 71 additions & 25 deletions sense.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,42 +3,88 @@
import time
import requests
import os
import sqlite3
from sqlite3 import Error

sense = SenseHat()

sleep = lambda x: time.sleep(x / 1000.0)
db = 'sensor.db'

high_temp_threshold = 40
low_temp_threshold = 0
def sleep(x):
return time.sleep(x / 1000.0)

api_url = 'https://navi-backend.onrender.com/api/log/2'
# connect to database
def create_connection(db):
con = None
try:
con = sqlite3.connect(db)
except Error as e:
print(e)

while True:
return con

temp = sense.get_temperature()
humidity = sense.get_humidity()
pressure = sense.get_pressure()

sensor_data = {
"temperature": str(round(temp)),
"humidity": str(round(humidity)),
"pressure": str(round(pressure))
# get settings from database
def get_settings():
con = create_connection(db)
cur = con.cursor()
cur.execute('SELECT * FROM settings')
results = cur.fetchone()
settings = None
if results is not None:
settings = {
'userid': results[0],
'low_temp': results[1],
'high_temp': results[2],
'low_humidity': results[3],
'high_humidity': results[4],
'low_pressure': results[5],
'high_pressure': results[6],
'polling_frequency': results[7]
}
return settings

api_post_data = json.dumps(sensor_data)

response = requests.post(api_url, json=api_post_data)

print("Data to POST to API: ", api_post_data)
def safe():
sense.show_message('OK', text_colour=[255, 255, 255], back_colour=[0, 255, 0])

print("API response: ", response)

temp = 50

if(temp > high_temp_threshold or temp < low_temp_threshold):
os.system('omxplayer warning.mp3')
sense.show_message("HIGH", text_colour=[255,255,255], back_colour=[255,0,0])
else:
sense.show_message("OK", text_colour=[255,255,255], back_colour=[0,255,0])
def unsafe():
os.system('omxplayer warning.mp3')
sense.show_message('UNSAFE', text_colour=[255, 255, 255], back_colour=[255, 0, 0])

sleep(2000)

def main():
settings = get_settings()
print('Settings: ', settings)

while True:

temp = sense.get_temperature()
humidity = sense.get_humidity()
pressure = sense.get_pressure()

data = {
'timestamp': time.time(),
'temp': temp,
'humidity': humidity,
'pressure': pressure
}

if settings is not None:
if(temp > settings['high_temp'] or temp < settings['low_temp']
or humidity > settings['high_humidity'] or humidity < settings['low_humidity']
or pressure > settings['high_pressure'] or pressure < settings['low_pressure']):
unsafe()
else:
safe()
else:
print('Unable to retrieve alert settings.')

print(data)

sleep(2000)


if __name__ == '__main__':
main()
3 changes: 1 addition & 2 deletions webapp/setup.py → setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import sqlite3
from sqlite3 import Error

db = 'sensor.db'

def open_database(db):
con = None
Expand All @@ -23,8 +24,6 @@ def create_table(con, sql):

def main():

db = 'sensor.db'

# create settings table
create_settings_sql = (' CREATE TABLE IF NOT EXISTS settings ('
'userid text,'
Expand Down
File renamed without changes.
File renamed without changes.

0 comments on commit 646ddf8

Please sign in to comment.