X-Git-Url: https://git.toastfreeware.priv.at/chrisu/seepark.git/blobdiff_plain/5a46011332bbb5252b14d5cc1828772b09c3225e..ca2ff71b9a5b9d5efcdec8ec56c43c74f0818f4f:/web/seepark_web.py?ds=sidebyside diff --git a/web/seepark_web.py b/web/seepark_web.py index f53585e..3ee9d94 100644 --- a/web/seepark_web.py +++ b/web/seepark_web.py @@ -7,7 +7,7 @@ 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 app_path = os.path.dirname(os.path.realpath(__file__)) @@ -39,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 @@ -51,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) @@ -94,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): @@ -130,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/') @@ -180,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',