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模块传输数据,解决远距离设备通信问题。物联网项目就是这样,开始觉得简单,越深入越发现学问太多。下次准备研究用机器学习预测设备故障,有同样兴趣的朋友欢迎交流。

相关推荐
一起学开源1 天前
实战总结:BACnet/IP 跨网段通讯的两种解决方案(BBMD 与 Foreign Device)
运维·网络·物联网·bacnet·网络协议·tcp/ip
编码追梦人1 天前
ESP32 物联网宠物喂食器:实现远程智能投喂的完整方案
物联网·宠物
wotaifuzao1 天前
(七)深入探讨BLE MAC 地址的隐私博弈:技术与隐私的较量
经验分享·物联网·macos·蓝牙·射频工程·ble
7***53341 天前
Java物联网案例
物联网
颜颜yan_1 天前
工业物联网时序数据库选型指南:Apache IoTDB 技术架构与实战解析
物联网·apache·时序数据库
2501_941807262 天前
可持续发展与绿色科技的未来:从创新到实践
大数据·人工智能·物联网
飞睿科技2 天前
【IoT开发选型】乐鑫ESP32-S3核心优势解析:为何它是AIoT应用的“全能王”?
科技·嵌入式硬件·物联网·智能家居
TDengine (老段)2 天前
TDengine 转化函数 TO_CHAR 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
N***73852 天前
JavaScript物联网案例
开发语言·javascript·物联网