资源简介 (共19张PPT)第14课 智能物联系统的软件设计年 级:八年级学 科:初中信息科技(浙教版)采集数据发布数据订阅/存储数据智能校园数字气象站问题思考:硬件搭建好后就能直接获取气象数据吗?软件编写发布订阅获取呈现数据知识回顾中介Wifi无线路由器任务要求:通过编程实现气象数据的实时采集,每隔一段时间获取新数据,并在屏幕上显示。日积月累Python:丰富的类库编程的过程:①导入相应库②调用相应的函数编程软件:参考函数:温度:aht20.read_temp()气压:bme.pressure()/1000风速:WindSpeed(pin16,factor=4.5)风向:WindDirection(pin14)屏幕显示:oled.print(x,y,data,num)发布数据到主题:mqtt.publish(topic,msg)订阅主题:mqtt.subscribe(topic,event)任务一:采集数据任务一:采集数据① 明确算法01Wifi连接MQTT连接采集数据OLED显示数据每隔一段时间发布数据到对应主题任务要求:将采集到的气象数据发布到物联中台。②创建项目主题1234主题名称建议首字母大写任务二:发布数据01Wifi连接MQTT连接采集数据OLED显示数据每隔一段时间发布数据到不同主题参考程序from npython import *while True:#采集气象数据,并赋值给相应变量wendu=aht20.read_temp()qiya=bme.pressure()/1000#oled屏幕显示oled.print(4,1,'校园数字气象站',1)oled.print(5,2,"温度:"+str (wendu), 1)oled.print(5,3,"气压:"+str (qiya), 1)time.sleep(5)mqtt.publish(“WenDu”,str(wendu))ipserver="xxkj" #无线名称ippass="123456789" #无线密码ip=wifi.connect(ipserver,ippass) # 网络连接server ="121.5.75.157" # MQTT服务器地址port =1883 # MQTT服务器端口号userId="4052" #用户IDprojectId="Du0oKLv6fUBRisOHxBWeAJkJ7GNZfvMf" #项目IDmqtt.config(server,port,projectId=projectId,userId=userId,keepalive=1000) #配置MQTTmqtt.connect() #连接MQTT服务器mqtt.publish(“QiYa”,str(qiya))③ 编写程序任务二:发布数据01任务二:发布数据MQTT连接订阅主题获取该主题下的数据存储在数据库文件中import mqttc,time,sqlite3 #导入MQTT库文件、time时间模块、sqlite3数据库模块srv = "121.5.75.157" # MQTT服务器地址port = 1883 # MQTT服务器端口号projectId = 'e0AUj5N84pCm9zI8ujiHrVWdNrGJfzm7' #定义项目IDuserId = '4089' #用户IDmqttc.config(srv,port,projectId=projectId,userId=userId) #mqtt连接参数配置mqttc.connect() #mqtt连接sub_topic = 'WenDu' #订阅的主题名称#定义订阅回调函数def sub_cb(topic,msg):data=msg.decode('utf-8') #将接收到的消息从字节类型转换为字符串类型cmd=eval(data) #将字符串类型的数据转换成字典类型print('订阅结果返回:',topic,cmd['msg'])try: #订阅传感器的数据 保存到数据库now=time.strftime('%Y-%m-%d %H:%M:%S') #获取当前时间uid=cmd['userId'] # 提取消息中的用户ID和数据值value=cmd['msg']# 准备插入数据库的SQL语句sql=f"INSERT INTO weather(time,userid,topic,msg) VALUES('{now}','{uid}','{topic}','{value}')"conn=sqlite3.connect('database.db') # 连接到SQLite数据库conn.execute(sql) # 执行SQL语句conn.commit() # 提交事务#订阅主题mqttc.subscribe(sub_topic,sub_cb)是否有新消息是只需订阅一次,当有新的消息时,订阅者便会被通知。否任务三:订阅主题存储数据任务三:订阅主题存储数据折线图更清晰呈现数据的变化趋势,易于分析表格形式折线图形式任务要求:将获取的某一天的温度数据,通过编程制作其折线图,了解一天的趋势走向。import sqlite3,datetime #导入sqlite数据库模块,datetime时间模块import matplotlib.pyplot as plt #导入matplotlib绘图模块# 用matplotlib绘图,配置相关参数plt.rcParams['font.sans-serif']=['SimHei'] #设置中文显示plt.title('一天温度趋势图') # 图表标题plt.xlabel('时间',size=10) # 图表x轴坐标标签plt.ylabel('数值',size=10) # 图表y轴坐标标签conn=sqlite3.connect('database.db') # 连接数据库# 定义一个函数,向图表添加数据线def addLine(plt,query):dx=[] # 初始化两个列表用于存储时间和温度值dy=[]for fields in query:dx.append(str_to_time(fields[0])) # 将时间字符串转换为datetime对象并添加到dx列表中dy.append(float(fields[1])) # 将温度值转换为浮点数并添加到dy列表中plt.plot(dx,dy,'o:b',label='温度',markersize=3) # 在图表上绘制一条线,并添加图例标签query.close() # 关闭数据表conn.close() # 关闭数据库plt.legend() # 显示图例plt.show() # 显示图表窗口1matplotlib为第三方库,需下载安装23任务四:呈现数据编写程序气象数据 有序流转①Python库的功能与使用②写代码是调用函数的过程③先形成算法流程图,再编写代码课堂小结采集数据发布数据订阅/存储数据呈现数据智能校园数字气象站课后作业1、结合学校实际情况,拓展思考新增一些功能,实现简单的物联控制功能。谢谢观看!Thanks!https://www.21cnjy.com/recruitment/home/fine 展开更多...... 收起↑ 资源列表 media1.mp4 media2.mp4 media3.mp4 第14课 智能物联系统的软件设计 课件 2025-2026学年八年级下册信息技术浙教版.pptx