pv_forecasting/run.py

87 lines
2.9 KiB
Python
Raw Normal View History

2023-08-23 16:00:06 +08:00
# -*-coding:utf-8-*-
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
import json
from flask import Flask, request, make_response
from logzero import logger
current_path = os.path.dirname(os.path.abspath(__file__)) # for local
# current_path = "/app" # for docker
logger.info(f"{current_path}")
2023-09-07 10:16:10 +08:00
from tools import cal_generation, cal_angle, load_config, cal_complex_gen
2023-08-23 16:00:06 +08:00
app = Flask(__name__)
angle_config = load_config(f"{current_path}/config/angle.json")
@app.route('/angle/', methods=["POST"])
def get_angle_info():
resp_info = dict()
if request.method == "POST":
prov = request.json.get('province')
city = request.json.get('city')
logger.info(f"{prov}-{city}")
try:
2023-09-07 10:16:10 +08:00
best_angle = cal_angle(prov, city, angle_config)
2023-08-23 16:00:06 +08:00
resp_info["code"] = 200
resp_info["data"] = best_angle
except Exception as e:
resp_info["code"] = 406
resp_info["data"] = str(e)
resp = make_response(json.dumps(resp_info))
resp.status_code = 200
return resp
@app.route('/power/', methods=["POST"])
def get_power():
2023-09-07 10:16:10 +08:00
resp_info = dict()
if request.method == "POST":
prov = request.json.get('province')
city = request.json.get('city')
cap = float(request.json.get('capacity'))
angle = float(request.json.get('angle'))
dhi_list = request.json.get('dhi')
dhi_list = [float(x) for x in dhi_list]
logger.info(dhi_list)
try:
best_angle = cal_angle(prov, city, angle_config)[0]
power_trend = cal_generation(cap, angle, best_angle, dhi_list)
resp_info["code"] = 200
resp_info["data"] = power_trend
except Exception as e:
logger.info(e)
resp_info["code"] = 406
resp_info["data"] = str(e)
resp = make_response(json.dumps(resp_info))
resp.status_code = 200
return resp
@app.route('/power_custom/', methods=["POST"])
def get_power_custom():
2023-08-23 16:00:06 +08:00
resp_info = dict()
if request.method == "POST":
prov = request.json.get('province')
city = request.json.get('city')
cap = request.json.get('capacity')
angle = request.json.get('angle')
dhi_list = request.json.get('dhi')
2023-09-07 10:16:10 +08:00
tmp_list = request.json.get("tmp")
materials = request.json.get("materials")
sigma = request.json.get("sigma")
t_noct = request.json.get("t_noct")
2023-08-23 16:00:06 +08:00
try:
best_angle = cal_angle(prov, city)
2023-09-07 10:16:10 +08:00
power_trend = cal_complex_gen(cap, angle, best_angle, dhi_list,
tmp_list, materials, sigma, t_noct)
2023-08-23 16:00:06 +08:00
resp_info["code"] = 200
resp_info["data"] = power_trend
except Exception as e:
resp_info["code"] = 406
resp_info["data"] = str(e)
resp = make_response(json.dumps(resp_info))
resp.status_code = 200
return resp
if __name__ == '__main__':
2023-09-07 10:16:10 +08:00
app.run(port=9515, host="0.0.0.0", debug=True)