
很多人第一次做物联网采集类项目,上来就买云服务器、搭数据库、写全套后端接口,折腾一周还调不通核心上报逻辑,完全是走了弯路。
前置依赖3个包就够
不用找复杂的SDK,直接pip装齐依赖就行,全是跨平台兼容的库:
pip install paho-mqtt numpy dht11
这里用EMQ提供的免费公共MQTT broker做消息中转,不用自己搭服务,Broker地址填broker.emqx.io,端口1883,临时测试连鉴权都不用配。
核心逻辑写80行就够
代码逻辑拆成三块:初始化MQTT连接、读取传感器数据、用滑动窗口斜率计算做简单的异常预判——别觉得AI就得搞大模型,这种边缘端的时序预判,用numpy算连续3个采样点的变化斜率,比硬设固定阈值准得多:
import paho.mqtt.client as mqtt
import numpy as np
import dht11, time
# 初始化MQTT客户端
client = mqtt.Client(client_id=f"temp_node_{int(time.time())}")
client.connect("broker.emqx.io", 1883, 60)
# 初始化温湿度传感器(接GPIO4)
sensor = dht11.DHT11(pin=4)
temp_window = []
while True:
res = sensor.read()
if res.is_valid():
temp_window.append(res.temperature)
if len(temp_window) >3: temp_window.pop(0)
# 连续3个点升温斜率超0.3,预判异常提前告警
if len(temp_window)==3 and np.polyfit([0,1,2], temp_window,1)[0]>0.3:
client.publish("node/alert", f"温度异常升高,当前值{res.temperature}℃")
client.publish("node/temp", res.temperature)
time.sleep(2)
提示:公共MQTT broker仅适合原型验证,所有上报数据都是公开可见的,正式项目一定要加账号密码鉴权,最好用私有部署的Broker。
把代码往树莓派里一传,上电就能自动跑。
手机上装个MQTT客户端订阅对应主题,不用等温度烧到阈值才收到告警,连续陡升的时候就能提前收到提醒,比传统固定阈值的告警逻辑少漏判80%的异常场景。
评论一下?