服务器端通过UDP获取单片机esp32传过来的数据 保存在mysql数据库里
然后通过flask提供web接口数据
import datetime
import socket
import threading
import pymysql
from flask import Flask, jsonify, request
# 接收客户端的数据
def recv_data():
while True:
try:
data, addr = server.recvfrom(128)
if data: # 判断data不为空
t_str = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
tmp1 = data.decode()
tmp2 = tmp1.split(':') # ['FromEsp32', '22.50', '83.00']
if tmp2[0] == "FromEsp32":
t = tmp2[1]
h = tmp2[2]
sql = "INSERT INTO shuju(t, h, sj) VALUES (%s, %s, %s)"
values = (t, h, t_str)
try:
# 执行sql语句
cursor.execute(sql, values)
# 执行sql语句
db.commit()
# print("Insert Db Success!")
except Exception as e:
print(e)
# 发生错误时回滚
db.rollback()
print("Insert Db Error!")
else:
print("Error Message!")
except Exception as e:
print("Recvive Error!")
# 打开数据库连接
db = pymysql.connect(host='localhost',
user='root',
password='EWlIuacYSXSW2Rj2',
database='wsd')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
host = ('10.0.4.11', 8081)
server.bind(host)
t0 = threading.Thread(target=recv_data)
t0.start()
# 创建应用实例
app = Flask(__name__)
# 视图函数(路由)# http://121.4.99.98:5000/?num=10
@app.route('/')
def index():
num = request.args['num']
sql = "select * from shuju order by id desc limit 0, %s" % num
cursor.execute(sql)
result = cursor.fetchall()
return jsonify(result)
# 启动实施(只在当前模块运行)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
# 关闭不使用的游标对象
# cursor.close()
# 关闭数据库连接
# db.close()