X-Git-Url: https://git.toastfreeware.priv.at/chrisu/seepark.git/blobdiff_plain/2e7a9e90e40a23a7bca616fb704a8df59d17ea66..9e63b0e1f5dc5740df2fe78a6feaae5a0020733c:/web/seepark_web.py?ds=sidebyside diff --git a/web/seepark_web.py b/web/seepark_web.py index 065e3f2..c966321 100644 --- a/web/seepark_web.py +++ b/web/seepark_web.py @@ -7,10 +7,12 @@ import sys from collections import defaultdict from flask import Flask, render_template, jsonify, request import flask.json -from flask_sqlalchemy import SQLAlchemy +from flask_sqlalchemy import SQLAlchemy, inspect -sys.path.append('..') +app_path = os.path.dirname(os.path.realpath(__file__)) +lib_path = os.path.join(app_path, '..') +sys.path.append(lib_path) from seeparklib.openweathermap import openweathermap_json, OpenWeatherMapError @@ -37,6 +39,7 @@ config = configparser.ConfigParser() config.read(os.environ['SEEPARKINI']) apikey = config.get('openweathermap', 'apikey') cityid = config.get('openweathermap', 'cityid') +mainsensor = config.get('temperature', 'mainsensor') app = Flask(__name__) app.json_encoder = JSONEncoder @@ -49,6 +52,10 @@ db.reflect(app=app) class Sensors(db.Model): __tablename__ = 'sensors' + # https://stackoverflow.com/a/37350445 + def to_dict(self): + return {c.key: getattr(self, c.key) + for c in inspect(self).mapper.column_attrs} def select_sensordata(initial_where): query = Sensors.query.filter(initial_where) @@ -92,8 +99,9 @@ def select_sensordata(initial_where): c3result[row.sensor_id].append(row.value) dt = row.timestamp.strftime('%Y-%m-%d %H:%M:%S') c3result[row.sensor_id + '_x'].append(dt) - result = c3result - return result + return c3result + else: + return [row.to_dict() for row in result] def currentairtemperature(apikey, cityid): @@ -128,7 +136,7 @@ def sensorid(version, sensor_id): format=, optional. return result as returned by sqlalchemy (default) or formatted for c3.js """ result = select_sensordata(Sensors.sensor_id == sensor_id) - return jsonify([row._asdict() for row in result]) + return jsonify(result) @app.route('/api//sensor/type/') @@ -178,7 +186,7 @@ def data(timespan): @app.route("/") def index(): airvalue, airtime = currentairtemperature(apikey, cityid) - watervalue, watertime = currentwatertemperature('0316a21383ff') # config? mainwatertemp? + watervalue, watertime = currentwatertemperature(mainsensor) return render_template( 'seepark_web.html',