esp32获取云平台天气数据并上传mysql

  1. arduino搭建esp32环境

  1. esp32获取云平台天气数据(以下为两种方法,其中json解析可能较难理解,请自行百度)

  1. esp32获取心知天气数据

  1. esp32获取和风天气数据(或者这个:https://blog.csdn.net/qidianzhang/article/details/125622823)(部分库有问题的注意修改一下文件或者函数名)

建议

  1. 为了验证程序的可靠性,最好get一下平台。

  1. 心知天气实时获取:获取指定城市的天气实况。付费用户可获取全部数据,免费用户只返回天气现象文字、代码和气温 3 项数据。注:中国城市暂不支持云量和露点温度。

  1. 和风天气实时获取:每天只支持获取1000条数据。

  1. python环境搭建、mysql安装、navicat安装(大佬可全用黑框框)

  1. python环境搭建

  1. mysql安装教程

  1. Navicat安装较为简单,不再多赘述。

  1. mysql具体设置

数据库bs

表名 hykqzljc

  1. python接收串口数据并上传到数据库

  1. 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
  1. 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()
  1. 整合(大佬勿喷)

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的数据。

  1. 成果展示

(Tem,Hum,UV,PM数据为传感器获取,作者比较懒,没有连接。)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值