from flask import Flask, render_template, request, session, redirect
from flask_mqtt import Mqtt
import numpy as np
import json
import re
from utils import query
from utils import getData
app = Flask(__name__)
app.secret_key = 'nongpi'
app.config['MQTT_BROKER_URL'] = '101.43.164.154'
app.config['MQTT_BROKER_PORT'] = 1883
app.config['MQTT_USERNAME'] = 'admin' # 当你需要验证用户名和密码时,请设置该项
app.config['MQTT_PASSWORD'] = 'zhangxinke233' # 当你需要验证用户名和密码时,请设置该项
app.config['MQTT_KEEPALIVE'] = 5 # 设置心跳时间,单位为秒
app.config['MQTT_CLIENT_ID'] = 'something'
topic = 'test'
mqtt_client = Mqtt(app)
@mqtt_client.on_connect()
def handle_connect(client, userdata, flags, rc):
if rc == 0:
print('Connected successfully')
mqtt_client.subscribe(topic)
else:
print('Bad connection. Code:', rc)
@mqtt_client.on_message()
def handle_mqtt_message(client, userdata, message):
print("client: ", client)
jsondata = json.loads(message.payload)
print("msg payload", jsondata)
query.sqlsave(jsondata)
@app.route('/')
def all_request():
return redirect('/login')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
elif request.method == 'POST':
request.form = dict(request.form)
def filter_fn(item):
return request.form['email'] in item and request.form['password'] in item
users = query.querys('select * from user', [], 'select')
filter_user = list(filter(filter_fn, users))
if len(filter_user):
session['email'] = request.form['email']
return redirect('/home')
else:
return render_template('error.html', message='邮箱或密码错误')
@app.route('/loginOut')
def login_out():
session.clear()
return redirect('/login')
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'GET':
return render_template('register.html')
elif request.method == 'POST':
request.form = dict(request.form)
print(request.form)
if request.form['password'] != request.form['passwordChecked']:
return render_template("error.html", message="两次密码不匹配")
def filter_fn(item):
return request.form['email'] in item
users = query.querys('select * from user', [], 'select')
filter_list = list(filter(filter_fn, users))
if len(filter_list):
return render_template('error.html', message='该用户已被注册')
else:
query.querys('insert into user(email,password) values(%s,%s)',
[request.form['email'], request.form['password']])
return redirect('/login')
@app.route('/home', methods=['GET', 'POST'])
def home():
email = session.get('email')
df = query.read_sql()
device_num, device_data = getData.get_device_data(df)
return render_template(
'index.html',
email=email,
devicenum=device_num,
device_id=device_data.tolist(),
)
@app.route('/system_chart_refresh', methods=['GET', 'POST'])
def system_chart_refresh():
df = query.read_sql()
device_num, device_data = getData.get_device_data(df)
timenow = query.gettime()
num = getData.get_alarm_num(df)
return [[timenow, device_num],
[timenow, device_num*8],
[timenow, int(num)]]
@app.route('/tables', methods=['GET', 'POST'])
def tables():
email = session.get('email')
df = query.read_sql()
device_num, device_data = getData.get_device_data(df)
return render_template(
'tables.html',
email=email,
devicenum=device_num,
device_id=device_data.tolist(),
sqldata=df,
)
@app.route('/table_refresh')
def table_refresh():
df = query.read_sql()
X = np.array(df).tolist()
# print(df)
return X
@app.route('/date')
def get_date():
return getData.get_date()
@app.route('/time')
def get_time():
return getData.get_time()
@app.route('/device')
def get_device():
df = query.read_sql()
device_num, device_data = getData.get_device_data(df)
return str(device_num)
@app.route('/alarm')
def get_alarm():
df = query.read_sql()
num = getData.get_alarm_num(df)
return str(num)
@app.route('/device_card_refresh')
def device_card_refresh():
df = query.read_sql()
device_num, device_data = getData.get_device_data(df)
return [device_num, device_data.tolist()]
@app.route('/devicepage/<int:deviceid>')
def devicepage(deviceid, methods=['GET', 'POST']):
email = session.get('email')
df = query.read_sql()
device_num, device_data = getData.get_device_data(df)
return render_template(
'devicepage.html',
email=email,
deviceid=deviceid,
devicenum=device_num,
device_id=device_data.tolist(),
)
@app.route('/device_chart_refresh/<string:id>')
def device_chart_refresh(id):
df = query.read_sql()
df = getData.alive(df)
df = df[df['id'] == id]
na = np.array(df).tolist()
k = []
for i in range(2, 10):
p = []
for j in na:
p = p + [[j[0], j[i]]]
k = k + [p]
return k
@app.route('/alarm_svg_refresh/<string:id>')
def alarm_svg_refresh(id):
df = query.read_sql()
df = getData.get_alarm(df)
return np.array(df.loc[df['id'] == id]).tolist()[0]
@app.before_request
def before_requre():
pat = re.compile(r'^/static')
if re.search(pat, request.path):
return
if request.path == "/login":
return
if request.path == '/register':
return
email = session.get('email')
if email:
return None
return redirect('/login')
if __name__ == '__main__':
app.run(host='0.0.0.0')

MarcoPage
- 粉丝: 4523
- 资源: 8834
最新资源
- COMSOL Solar Cell:光生载流子、吸收、透射谱与电势电场分布研究.pdf
- Comsol SPP波导EIT中的两个模型.pdf
- Comsol with Matlab:生成并导入随机产状裂隙模型,可修改模型产状参数.pdf
- COMSOL with MATLAB 代码:二维三维随机分布球_圆模型及多孔介质模拟.pdf
- Comsol SPP全光逻辑门:一个小案例.pdf
- COMSOL with MATLAB代码:随机分布小圆柱体模型.pdf
- COMSOL 三维多孔介质水驱及气驱油模型(CO2_H2):用于石油开采及煤层气驱替的两相流研究(包含驱油过程、压力场、速度场).pdf
- COMSOL with MATLAB代码:二维三维随机分布球_圆模型及多孔介质模拟程序.pdf
- COMSOL 6.1版:仿真实验模型下的光纤等波导三维弯曲仿真、模场分布及波束包络方法.pdf
- COMSOL 6.1版本:激光选区融化SLM单道多道温度场应力场仿真模型(涉及固体力学、增材制造、活化及圆柱形增材的热固耦合优势).pdf
- COMSOL 6.1 激光粉末床熔融气孔缺陷演化仿真案例模型:深入探究熔融过程中的多物理效应.pdf
- COMSOL 6.1版本:激光选区融化颗粒粉末增材制造模型——涵盖颗粒融化、马兰戈尼效应、熔池凝固与液体流动的全面模型.pdf
- COMSOL 6.1版本Ti-6Al-4V合金激光打孔熔池(含浮升力等多物理效应模型).pdf
- COMSOL 6.1版本:三维飞秒多脉冲激光烧蚀玻璃模型——双温模型与多物理场交互分析.pdf
- COMSOL 6.1版本皮秒多脉冲激光烧蚀模型:双温模型、变形几何与烧蚀效应的深度探讨.pdf
- COMSOL 6.1版激光超声仿真:3D Lamb波数值模拟.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


