news 2026/5/31 3:19:51

ESP32温湿度数据上云后,我用Node-RED+MQTT做了个自动化的微信推送

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ESP32温湿度数据上云后,我用Node-RED+MQTT做了个自动化的微信推送

ESP32温湿度数据上云后,我用Node-RED+MQTT做了个自动化的微信推送

当你已经成功将ESP32采集的温湿度数据上传到MQTT服务器时,这些数据如果只是静静地躺在服务器里,那它们就只是一串数字而已。但如果我们能让这些数据"活"起来,在特定条件下自动触发通知或控制其他设备,这才是物联网项目的真正价值所在。本文将带你使用Node-RED这个强大的低代码工具,构建一个完整的"监测-判断-告警"系统,当温度或湿度超过设定阈值时,自动发送微信通知。

1. 环境准备与基础配置

在开始构建自动化流程前,我们需要确保几个关键组件已经就绪:

  • MQTT Broker:继续使用之前ESP32连接的那个MQTT服务器(如EMQX公共服务器)
  • Node-RED环境:可以在本地电脑安装,也可以使用树莓派等设备部署
  • 微信推送服务:推荐使用Server酱这类第三方服务,它们提供了简单的HTTP API

安装Node-RED非常简单,如果你使用npm,只需运行:

npm install -g --unsafe-perm node-red

然后通过node-red命令启动服务,默认会在1880端口运行。

提示:对于生产环境,建议为Node-RED设置密码认证,避免未授权访问。

2. 构建MQTT数据订阅流

Node-RED的核心概念是"流"(Flow),即通过连接不同的节点来处理数据。我们的第一个任务是订阅ESP32发布的温湿度数据。

  1. 从左侧面板拖拽一个mqtt in节点到工作区
  2. 双击节点进行配置:
    • Server:新建一个连接到你的MQTT服务器
    • Topic:填写ESP32发布数据的主题(如TEST/DHT11
  3. 添加一个debug节点并连接到mqtt in节点,用于查看原始数据

此时你的流应该看起来像这样:

[mqtt in] -> [debug]

点击右上角的"部署"按钮,然后在调试面板中你应该能看到类似这样的消息:

"Temp: 25.5'C Humidity: 60%"

3. 数据解析与阈值判断

原始数据是字符串格式,我们需要将其解析为可操作的数值,并设置条件判断。

3.1 解析温湿度数据

  1. 添加一个function节点,编写以下JavaScript代码处理数据:
var payload = msg.payload; // 使用正则表达式提取温度和湿度 var tempMatch = payload.match(/Temp: ([\d.]+)/); var humiMatch = payload.match(/Humidity: ([\d.]+)/); if (tempMatch && humiMatch) { msg.temperature = parseFloat(tempMatch[1]); msg.humidity = parseFloat(humiMatch[1]); return msg; } return null;

3.2 设置阈值触发条件

添加一个switch节点来设置条件判断:

  • Propertymsg.temperature
  • 条件1>=30 (高温告警)
  • 条件2<=10 (低温告警)

同样方法为湿度设置一个switch节点:

  • Propertymsg.humidity
  • 条件1>=70 (高湿告警)
  • 条件2<=30 (低湿告警)

4. 实现微信推送通知

当温度或湿度超过阈值时,我们需要触发微信通知。这里以Server酱为例:

  1. 首先在Server酱官网注册并获取SCKEY

  2. 在Node-RED中添加一个http request节点,配置如下:

    • Method:GET
    • URLhttps://sc.ftqq.com/{SCKEY}.send
    • Query Parameters
      • text:警报标题
      • desp:警报详情
  3. 在触发分支后添加一个template节点来构造推送内容:

温度警报!当前温度:{{temperature}}°C 湿度:{{humidity}}% 时间:{{timestamp}}
  1. 最后将template节点连接到http request节点

完整的流程结构应该是:

[mqtt in] -> [解析function] -> [温度switch] -> [警报template] -> [http request] -> [湿度switch] -> [警报template] -> [http request]

5. 进阶功能扩展

基础告警功能实现后,我们可以考虑添加更多实用功能:

5.1 数据持久化存储

添加MySQL或InfluxDB节点存储历史数据,便于后续分析:

// 示例:InfluxDB写入配置 [{ "measurement": "environment", "tags": { "device": "ESP32-DHT11" }, "fields": { "temperature": msg.temperature, "humidity": msg.humidity } }]

5.2 多平台通知集成

除了微信,还可以添加邮件、Slack等通知方式:

通知方式配置节点特点
邮件e-mail适合正式通知
Slackslack适合团队协作
短信twilio即时性强

5.3 可视化仪表板

Node-RED内置Dashboard功能,可以快速创建监控界面:

  1. 安装node-red-dashboard插件
  2. 添加chartgauge节点
  3. 配置仪表板布局和更新频率

6. 实际应用中的优化建议

在真实环境中运行一段时间后,我发现几个可以提升稳定性和用户体验的点:

  • 添加数据校验:在解析函数中检查数据有效性,避免错误数据触发误报
  • 设置静默期:同一警报在短时间内不重复发送
  • 心跳检测:监控设备是否在线,添加离线告警
  • 动态阈值:根据不同时段设置不同的告警阈值

实现心跳检测的示例代码:

// 在function节点中添加 context.lastSeen = context.lastSeen || 0; var now = Date.now(); if (now - context.lastSeen > 300000) { // 5分钟无数据 msg.alert = "设备离线告警"; return msg; } context.lastSeen = now;

这个项目最有趣的部分是看到简单的温湿度数据如何通过几层处理,最终转化为有实际价值的业务告警。当第一次收到微信推送的温度警报时,那种"物联网真的在工作"的成就感是难以言喻的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 3:19:09

HDM模型训练:位置图与移位裁剪技术解析

1. HDM模型训练的核心组件解析 在深度学习图像生成领域&#xff0c;HDM&#xff08;Hierarchical Diffusion Model&#xff09;作为一种新型的层次化扩散模型&#xff0c;其训练过程涉及多个关键技术组件。这些组件的合理设计与实现直接关系到模型最终的生成质量和训练效率。下…

作者头像 李华
网站建设 2026/5/31 3:19:04

IEC104协议调试避坑指南:Wireshark抓包分析APDU帧的实战技巧

IEC104协议调试避坑指南&#xff1a;Wireshark抓包分析APDU帧的实战技巧电力自动化系统的稳定运行离不开可靠的通信协议支撑&#xff0c;而IEC104作为电力行业广泛采用的通信规约&#xff0c;其调试过程往往让现场工程师倍感压力。当变电站与调度主站之间出现通信中断、数据漏报…

作者头像 李华
网站建设 2026/5/31 3:17:15

用Google Colab免费GPU,10分钟搞定你的第一个CNN项目:猫狗图片分类

零成本玩转深度学习&#xff1a;Google ColabPyTorch实现猫狗分类实战 第一次接触深度学习时&#xff0c;最让人头疼的往往不是算法本身&#xff0c;而是硬件门槛。当看到教程里"建议使用GTX 1080Ti以上显卡"的要求时&#xff0c;很多人的学习热情可能瞬间冷却。但今…

作者头像 李华
网站建设 2026/5/31 3:16:36

Carla仿真进阶:如何将社区鱼眼相机补丁集成到ROS 2 Bridge并优化帧率

Carla仿真进阶&#xff1a;鱼眼相机ROS 2桥接与帧率优化实战指南引言在自动驾驶仿真测试领域&#xff0c;鱼眼相机因其超广视角特性成为环视感知系统的关键传感器。虽然Carla作为领先的开源仿真平台提供了丰富的传感器模型&#xff0c;但官方版本并未内置鱼眼相机支持。本文将深…

作者头像 李华
网站建设 2026/5/31 3:15:59

告别龟速传输!实测FastCopy比Windows自带快多少?附保姆级配置教程

FastCopy实战指南&#xff1a;如何让文件传输速度提升300%你是否经历过盯着进度条发呆的煎熬&#xff1f;当Windows自带的文件复制功能以龟速搬运数十GB的视频素材时&#xff0c;专业的内容创作者们早已找到了更高效的解决方案。FastCopy作为一款专注传输性能的工具&#xff0c…

作者头像 李华
网站建设 2026/5/31 3:15:56

PHP弱比较实战:手把手教你用404a和科学计数法绕过CTF买Flag题

PHP弱类型比较实战&#xff1a;从原理到CTF买Flag题绕过技巧在CTF竞赛中&#xff0c;PHP弱类型比较漏洞一直是Web安全赛道的经典考点。去年DEF CON CTF资格赛中&#xff0c;超过60%的Web题涉及类型转换问题。本文将带您深入理解PHP弱比较机制&#xff0c;并通过一个买Flag场景的…

作者头像 李华