Python物联网案例

硬件部分其实不复杂。树莓派GPIO口接上DHT11,注意上拉电阻要接对,不然读数会飘。第一次接线下电偶忘记加消抖,数据跳得跟心电图似的。后来在信号线并了个104电容,立马稳定多了。这里给个接线参考:

注意DHT11读取有延迟,循环里最好加个2秒间隔,不然传感器会发热。我刚开始没注意这个,连续读取导致设备烫手,数据还越来越不准。

数据采集完了要解决传输问题。最开始用requests直连服务器,发现WiFi不稳定时数据会丢失。后来改用MQTT协议,这玩意儿专为物联网设计,支持断线重连和消息持久化。用paho-mqtt库三行代码就能建立连接:

消息格式建议用JSON,后期处理方便。我定义的数据结构长这样:

服务器端用Flask搭了个简单的接收接口,顺便做了个可视化看板。这里有个小技巧:用Chart.js画动态曲线图,数据更新时自动平滑过渡。前端代码就不展开了,主要说个数据处理的关键点------要对异常值做过滤。有次空调出风口正对传感器,温度读数瞬间飙升到40度,差点触发虚假警报。

存储方案选了时序数据库InfluxDB,比MySQL更适合存储传感器数据。写了个批量入库的脚本,每分钟打包一次数据,减少数据库压力:

项目上线后还加了几个实用功能:微信推送报警(用Server酱)、数据导出Excel、设备远程重启。最实用的是增加了设备心跳检测,某个传感器离线超过5分钟就发邮件通知,再也不用手动检查每个节点了。

踩过的坑给大家提个醒:室外设备要做好防水,我的第一个室外传感器淋了场雨就报废了;MQTT的QoS级别要设置正确,重要数据用QoS1保证送达;树莓派长时间运行最好配个看门狗脚本,遇到进程卡死能自动重启。

现在这套系统已经稳定运行三个月,最近正在尝试接入ESP32做子节点,用LoRa模块传输数据,解决远距离设备通信问题。物联网项目就是这样,开始觉得简单,越深入越发现学问太多。下次准备研究用机器学习预测设备故障,有同样兴趣的朋友欢迎交流。

相关推荐
TDengine (老段)5 小时前
TDengine Python 连接器进阶指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
没有故事的Zhang同学9 小时前
03-📝物联网组网 | 蓝牙通信: 经典蓝牙与低功耗Ble通信、iBeacon技术
物联网
御控工业物联网10 小时前
御控远程监控智慧运维系统
运维·物联网·边缘计算·数据采集·远程监控·mqtt协议·工业智能网关
电气铺二表姐1377441661511 小时前
超市冷柜专区电能计量方案:高能耗设备独立监测与优化
运维·物联网·能源
Tao____12 小时前
如何对接Modbus-tcp协议(使用Thinlinks物联网平台)
java·物联网·网络协议·tcp/ip·modbus
星源~13 小时前
Zephyr - MCU 开发快速入门指南
单片机·嵌入式硬件·物联网·嵌入式开发·zephyr
星源~13 小时前
zephyr-开发环境配置疑难问题解决
单片机·嵌入式硬件·物联网·项目开发
wotaifuzao13 小时前
(八)BLE MTU 全栈解析:从 20 字节瓶颈到 160KB/s
物联网·蓝牙·ble·ota·mtu
jianqiang.xue1 天前
Telink IoT Studio开发环境搭建+tc_ble_single_sdk说明
物联网·泰凌微·telink
TDengine (老段)1 天前
TDengine Python 连接器入门指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据