esp32获取云平台天气数据(以下为两种方法,其中json解析可能较难理解,请自行百度)
esp32获取和风天气数据(或者这个:https://blog.csdn.net/qidianzhang/article/details/125622823)(部分库有问题的注意修改一下文件或者函数名)
建议
为了验证程序的可靠性,最好get一下平台。
心知天气实时获取:获取指定城市的天气实况。付费用户可获取全部数据,免费用户只返回天气现象文字、代码和气温 3 项数据。注:中国城市暂不支持云量和露点温度。
和风天气实时获取:每天只支持获取1000条数据。
python环境搭建、mysql安装、navicat安装(大佬可全用黑框框)
Navicat安装较为简单,不再多赘述。
mysql具体设置
数据库bs
表名 hykqzljc
python接收串口数据并上传到数据库
python接收串口代码
import serial
from time import sleep
def recv(serial):
while True:
data = serial.read_all().decode() # str
if data == '':
continue
else:
break
sleep(0.02)
return data
if __name__ == '__main__':
serial = serial.Serial('COM16', 115200, timeout=0.5)
if serial.isOpen():
print("serial open success")
else:
print("serial open failed")
while True:
data = recv(serial)
print(data) # str
python连接数据库代码
#!/usr/bin/python3
import pymysql
# 打开数据库连接
db = pymysql.connect(host='localhost',
user='testuser',
password='test123',
database='TESTDB')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接
db.close()
整合(大佬勿喷)
import serial
from time import sleep
import re
from pymysql import Connection
def recv(serial):
while True:
data = serial.readline().decode() # str
if data == '':
continue
else:
break
sleep(0.02)
return data
if __name__ == '__main__':
serial = serial.Serial('COM6', 115200, timeout=0.5)
while True:
data = recv(serial)
print(data)
pattern = r"202"
if(re.match(pattern, data)):
list=data.split(",")
UpdateTime = list[0]
Weather = list[1]
WindDir = list[2]
WindScale = list[3]
Precip = list[4]
Pressure = list[5]
Tem = list[6]
Hum = list[7]
UV = list[8]
PM = list[9]
conn = Connection(
host="localhost",
port=3306,
user="root",
password="123456",
autocommit=True
)
# 获取游标对象
cursor = conn.cursor()
# 选择数据库
conn.select_db("bs")
sql = f"insert into hykqzljc(UpdateTime,Weather,WindDir,WindScale,Precip,Pressure,Tem,Hum,UV,PM) values ('{UpdateTime}','{Weather}','{WindDir}','{WindScale}','{Precip}','{Pressure}','{Tem}','{Hum}','{UV}','{PM}')"
cursor.execute(sql)
pattern = r"202" 解释:本人读取的数据(CSV格式)为
为了防止无用数据造成影响,所以只向数据库中输入开头为202的数据。
成果展示
(Tem,Hum,UV,PM数据为传感器获取,作者比较懒,没有连接。)