Add API to view sensors.
authorPhilipp Spitzer <philipp@spitzer.priv.at>
Mon, 11 Jun 2018 20:55:23 +0000 (22:55 +0200)
committerPhilipp Spitzer <philipp@spitzer.priv.at>
Mon, 11 Jun 2018 20:55:23 +0000 (22:55 +0200)
web/seepark_web.py

index 526317407ed5382524d7c8198f62803b5aa12a70..b9a3bb14418312830af2c2ca6d187f1e1c3d668d 100644 (file)
@@ -3,16 +3,36 @@ from random import uniform
 import time
 import configparser
 import os
+from sqlalchemy import create_engine
 app = Flask(__name__)
 
 config = configparser.ConfigParser()
 config.read(os.environ['SEEPARKINI'])
-apikey = config.get('openweathermap', 'apikey');
+apikey = config.get('openweathermap', 'apikey')
+
+
+def open_engine(config):
+    user = config.get('database', 'user')
+    pwd = config.get('database', 'password')
+    host = config.get('database', 'hostname')
+    db = config.get('database', 'database')
+    engine = create_engine('mysql+mysqldb://{}:{}@{}/{}'.format(user, pwd, host, db), echo=False)
+    return engine
+
+
+@app.route('/api/<version>/sensors')
+def sensors(version):
+    """List all sensors found in the database"""
+    engine = open_engine(config)
+    with engine.connect() as conn:
+        cursor = conn.execute('select distinct sensor_id, sensor_name, value_type from sensors')
+        result = [dict(row) for row in cursor]
+        return jsonify(result)
+
 
 @app.route('/data/', defaults={'timespan': 1})
 @app.route("/data/<int:timespan>", methods=['GET'])
 def data(timespan):
-
     granularity = 5 * timespan               # (every) minute(s) per day
     samples = 60/granularity * 24 * timespan # per hour over whole timespan
     s4m   = []