从零搭建基于OneNET的ESP32智能温湿度监测系统1. 项目概述与硬件准备在智能家居和工业物联网应用中远程环境监测是最基础也最实用的场景之一。想象一下当你外出时能随时查看家中温湿度或者在农业大棚中监测关键环境参数这些需求都可以通过ESP32开发板和OneNET平台快速实现。所需硬件清单ESP32开发板推荐型号ESP32-WROOM-32DHT11/DHT22温湿度传感器4.7kΩ上拉电阻DHT11专用Micro-USB数据线面包板和杜邦线若干提示DHT22比DHT11精度更高±0.5℃ vs ±2℃但价格也稍贵可根据实际需求选择。硬件连接非常简单ESP32 GPIO引脚 → DHT传感器 3.3V → VCC GND → GND GPIO4 → DATA需接4.7kΩ上拉电阻2. OneNET平台配置指南2.1 创建产品与设备登录OneNET控制台后按以下步骤操作进入多协议接入→MQTT旧版点击添加产品填写基本信息产品名称ESP32环境监测行业类别智能家居联网方式Wi-Fi记录生成的三项关键信息产品ID如502345鉴权信息即设备密钥Master-APIkey2.2 创建设备实例在产品详情页点击添加设备填写设备名称卧室温湿度计鉴权信息自定义字符串如home_sensor_001其他选项保持默认成功后会生成设备ID这三元组产品ID、设备ID、鉴权信息将用于ESP32的MQTT连接认证。3. ESP32端代码实现3.1 开发环境搭建使用Arduino IDE开发时需安装以下库通过库管理器安装PubSubClientMQTT客户端DHT sensor library开发板支持包在首选项添加https://dl.espressif.com/dl/package_esp32_index.json然后安装ESP32开发板支持3.2 核心代码解析#include WiFi.h #include PubSubClient.h #include DHT.h #define DHTPIN 4 // GPIO4连接DHT #define DHTTYPE DHT11 const char* ssid your_wifi; const char* password wifi_password; const char* mqtt_server 183.230.40.39; DHT dht(DHTPIN, DHTTYPE); WiFiClient espClient; PubSubClient client(espClient); void setup_wifi() { delay(10); WiFi.begin(ssid, password); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } } void reconnect() { while (!client.connected()) { if (client.connect(ESP32Client, 产品ID, 鉴权信息)) { Serial.println(MQTT Connected); } else { delay(5000); } } } void setup() { Serial.begin(115200); dht.begin(); setup_wifi(); client.setServer(mqtt_server, 6002); } void loop() { if (!client.connected()) reconnect(); float h dht.readHumidity(); float t dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println(读取传感器失败); return; } String payload {\temperature\: String(t) ,\humidity\: String(h) }; client.publish($dp, payload.c_str()); delay(30000); // 每30秒上报一次 }4. 数据可视化与进阶功能4.1 OneNET数据面板配置进入应用孵化器→新建应用选择数据可视化模板添加以下组件数字显示组件绑定温度数据流曲线图组件绑定温湿度历史数据仪表盘组件显示湿度百分比4.2 微信小程序接入OneNET提供便捷的微信小程序接入方案在设备管理→设备详情中开启微信接入扫描生成的二维码绑定设备在小程序中即可实时查看数据4.3 异常报警设置在触发器管理中可配置温度超过30℃时发送邮件通知湿度低于40%时触发微信推送设备离线超过5分钟发送短信提醒5. 常见问题排查连接失败检查清单确认三元组信息完全正确注意大小写检查Wi-Fi信号强度RSSI应大于-70dBm验证防火墙未阻止1883/6002端口查看设备是否显示在线状态数据上报异常处理使用MQTT.fx工具测试原始报文在Arduino串口监视器查看调试输出检查JSON格式是否符合规范功耗优化技巧启用ESP32深度睡眠模式将上报间隔延长至5-10分钟降低Wi-Fi发射功率setTxPower6. 项目扩展方向多传感器融合增加光照传感器BH1750集成空气质量检测SGP30添加声音分贝监测本地联动控制if(t 28) { digitalWrite(RELAY_PIN, HIGH); // 触发风扇 }边缘计算应用在ESP32端计算温湿度变化趋势实现本地异常检测算法数据预处理后再上传云端
手把手教你用OneNET MQTT协议,给ESP32/Arduino智能硬件做个远程温湿度计
从零搭建基于OneNET的ESP32智能温湿度监测系统1. 项目概述与硬件准备在智能家居和工业物联网应用中远程环境监测是最基础也最实用的场景之一。想象一下当你外出时能随时查看家中温湿度或者在农业大棚中监测关键环境参数这些需求都可以通过ESP32开发板和OneNET平台快速实现。所需硬件清单ESP32开发板推荐型号ESP32-WROOM-32DHT11/DHT22温湿度传感器4.7kΩ上拉电阻DHT11专用Micro-USB数据线面包板和杜邦线若干提示DHT22比DHT11精度更高±0.5℃ vs ±2℃但价格也稍贵可根据实际需求选择。硬件连接非常简单ESP32 GPIO引脚 → DHT传感器 3.3V → VCC GND → GND GPIO4 → DATA需接4.7kΩ上拉电阻2. OneNET平台配置指南2.1 创建产品与设备登录OneNET控制台后按以下步骤操作进入多协议接入→MQTT旧版点击添加产品填写基本信息产品名称ESP32环境监测行业类别智能家居联网方式Wi-Fi记录生成的三项关键信息产品ID如502345鉴权信息即设备密钥Master-APIkey2.2 创建设备实例在产品详情页点击添加设备填写设备名称卧室温湿度计鉴权信息自定义字符串如home_sensor_001其他选项保持默认成功后会生成设备ID这三元组产品ID、设备ID、鉴权信息将用于ESP32的MQTT连接认证。3. ESP32端代码实现3.1 开发环境搭建使用Arduino IDE开发时需安装以下库通过库管理器安装PubSubClientMQTT客户端DHT sensor library开发板支持包在首选项添加https://dl.espressif.com/dl/package_esp32_index.json然后安装ESP32开发板支持3.2 核心代码解析#include WiFi.h #include PubSubClient.h #include DHT.h #define DHTPIN 4 // GPIO4连接DHT #define DHTTYPE DHT11 const char* ssid your_wifi; const char* password wifi_password; const char* mqtt_server 183.230.40.39; DHT dht(DHTPIN, DHTTYPE); WiFiClient espClient; PubSubClient client(espClient); void setup_wifi() { delay(10); WiFi.begin(ssid, password); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } } void reconnect() { while (!client.connected()) { if (client.connect(ESP32Client, 产品ID, 鉴权信息)) { Serial.println(MQTT Connected); } else { delay(5000); } } } void setup() { Serial.begin(115200); dht.begin(); setup_wifi(); client.setServer(mqtt_server, 6002); } void loop() { if (!client.connected()) reconnect(); float h dht.readHumidity(); float t dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println(读取传感器失败); return; } String payload {\temperature\: String(t) ,\humidity\: String(h) }; client.publish($dp, payload.c_str()); delay(30000); // 每30秒上报一次 }4. 数据可视化与进阶功能4.1 OneNET数据面板配置进入应用孵化器→新建应用选择数据可视化模板添加以下组件数字显示组件绑定温度数据流曲线图组件绑定温湿度历史数据仪表盘组件显示湿度百分比4.2 微信小程序接入OneNET提供便捷的微信小程序接入方案在设备管理→设备详情中开启微信接入扫描生成的二维码绑定设备在小程序中即可实时查看数据4.3 异常报警设置在触发器管理中可配置温度超过30℃时发送邮件通知湿度低于40%时触发微信推送设备离线超过5分钟发送短信提醒5. 常见问题排查连接失败检查清单确认三元组信息完全正确注意大小写检查Wi-Fi信号强度RSSI应大于-70dBm验证防火墙未阻止1883/6002端口查看设备是否显示在线状态数据上报异常处理使用MQTT.fx工具测试原始报文在Arduino串口监视器查看调试输出检查JSON格式是否符合规范功耗优化技巧启用ESP32深度睡眠模式将上报间隔延长至5-10分钟降低Wi-Fi发射功率setTxPower6. 项目扩展方向多传感器融合增加光照传感器BH1750集成空气质量检测SGP30添加声音分贝监测本地联动控制if(t 28) { digitalWrite(RELAY_PIN, HIGH); // 触发风扇 }边缘计算应用在ESP32端计算温湿度变化趋势实现本地异常检测算法数据预处理后再上传云端