当前位置: 首页 > article >正文

ESP32-S3 + OneNet物联网平台实战:手把手教你用MQTT协议上报温湿度数据(附完整代码)

ESP32-S3与OneNet物联网平台实战从零构建温湿度监测系统物联网技术的快速发展让硬件开发者能够轻松将传感器数据上传至云端。本文将手把手教你使用ESP32-S3开发板通过MQTT协议将DHT11温湿度传感器的数据上传至OneNet物联网平台构建一个完整的端到端解决方案。1. 硬件准备与环境搭建在开始编码之前我们需要准备好硬件设备并搭建开发环境。ESP32-S3是乐鑫科技推出的一款高性能Wi-Fi/蓝牙双模微控制器特别适合物联网应用场景。所需硬件清单ESP32-S3开发板推荐使用带有USB接口的型号DHT11温湿度传感器模块杜邦线若干母对母微型USB数据线可选面包板用于临时连接硬件连接非常简单将DHT11的VCC引脚连接到ESP32-S3的3.3V电源将DHT11的GND引脚连接到ESP32-S3的GND将DHT11的DATA引脚连接到ESP32-S3的任意GPIO本文使用GPIO4开发环境配置步骤安装ESP-IDF开发框架最新稳定版git clone -b v5.1.1 --recursive https://github.com/espressif/esp-idf.git cd esp-idf ./install.sh source export.sh创建项目模板cp -r examples/protocols/mqtt/tcp ~/esp32_onenet_demo cd ~/esp32_onenet_demo添加DHT11驱动库 在项目目录下创建components文件夹然后添加DHT11驱动mkdir -p components/dht112. OneNet平台配置OneNet是中国移动推出的物联网开放平台提供设备接入、数据存储、可视化展示等功能。我们需要在平台上完成以下配置注册与产品创建访问OneNet官网并注册开发者账号进入开发者中心点击产品开发创建新产品关键参数设置接入协议MQTT数据协议OneJson联网方式Wi-Fi设备添加与认证信息获取在产品下添加新设备记录设备名称获取产品ID和设备密钥使用OneNet提供的Token生成工具生成连接密码数据流与API配置创建温湿度数据流设置数据点标识符temperature和humidity配置数据存储策略关键参数说明表参数名称获取位置示例值用途说明产品ID产品详情页sq8cUJ2H38MQTT连接用户名设备名称设备管理页ESP32_DHT11客户端IDToken安全认证工具生成version2018...连接密码上报Topic文档查询$sys/{pid}/{dev}/thing/property/post数据上报地址3. ESP-IDF项目代码实现现在我们来编写ESP32-S3端的代码实现温湿度数据采集和MQTT上报功能。3.1 项目结构esp32_onenet_demo/ ├── main/ │ ├── CMakeLists.txt │ ├── component.mk │ ├── dht11.c │ ├── dht11.h │ └── main.c ├── components/ │ └── dht11/ ├── CMakeLists.txt └── sdkconfig3.2 主程序逻辑在main.c中我们需要实现以下功能初始化Wi-Fi连接初始化DHT11传感器配置MQTT客户端定时读取传感器数据并上报Wi-Fi连接配置#define WIFI_SSID your_wifi_ssid #define WIFI_PASS your_wifi_password void wifi_init_sta(void) { wifi_config_t wifi_config { .sta { .ssid WIFI_SSID, .password WIFI_PASS, }, }; ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, wifi_config)); ESP_ERROR_CHECK(esp_wifi_start()); }DHT11数据读取实现#include dht11.h #define DHT11_GPIO 4 void read_sensor_data() { int temperature, humidity; if(dht11_read(DHT11_GPIO, temperature, humidity) ESP_OK) { ESP_LOGI(TAG, Temperature: %d°C, Humidity: %d%%, temperature, humidity); } else { ESP_LOGE(TAG, Failed to read DHT11 data); } }3.3 MQTT客户端实现MQTT配置参数// 替换为你的实际OneNet参数 #define ONENET_MQTT_BROKER mqtts.heclouds.com #define ONENET_MQTT_PORT 1883 #define ONENET_PRODUCT_ID your_product_id #define ONENET_DEVICE_NAME your_device_name #define ONENET_TOKEN your_generated_token // Topic定义 #define TOPIC_PUBLISH $sys/ ONENET_PRODUCT_ID / ONENET_DEVICE_NAME /thing/property/post #define TOPIC_SUBSCRIBE $sys/ ONENET_PRODUCT_ID / ONENET_DEVICE_NAME /thing/property/setMQTT事件处理函数static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) { esp_mqtt_event_handle_t event event_data; switch (event-event_id) { case MQTT_EVENT_CONNECTED: ESP_LOGI(TAG, MQTT connected); // 订阅主题 esp_mqtt_client_subscribe(event-client, TOPIC_SUBSCRIBE, 1); break; case MQTT_EVENT_DATA: ESP_LOGI(TAG, MQTT data received); // 处理平台下发的数据 break; case MQTT_EVENT_ERROR: ESP_LOGE(TAG, MQTT error); break; } }数据上报JSON格式OneNet平台要求使用特定的JSON格式上报数据{ id: 123, version: 1.0, params: { temperature: { value: 25 }, humidity: { value: 50 } } }数据上报函数实现void publish_sensor_data(esp_mqtt_client_handle_t client, int temp, int humi) { char payload[200]; snprintf(payload, sizeof(payload), {\id\:\%d\,\version\:\1.0\,\params\:{ \temperature\:{\value\:%d}, \humidity\:{\value\:%d}}}, (int)time(NULL), temp, humi); esp_mqtt_client_publish(client, TOPIC_PUBLISH, payload, 0, 1, 0); }4. 常见问题与调试技巧在实际开发过程中可能会遇到各种问题。以下是几个常见问题及其解决方案MQTT连接失败检查产品ID、设备名称和Token是否正确确保网络连接正常可以ping通OneNet服务器验证Token是否过期默认有效期为1年数据上报但平台未显示检查Topic格式是否正确验证JSON数据格式是否符合OneJson规范确认数据流名称与代码中定义的一致DHT11读取失败检查接线是否正确特别是DATA引脚确保供电稳定DHT11需要3.3V供电添加适当的延时DHT11需要至少1秒的采样间隔调试工具推荐MQTT.fx用于测试MQTT连接和数据收发OneNet设备调试工具平台内置的实时数据查看工具ESP-IDF Monitor查看ESP32的日志输出性能优化建议合理设置数据上报间隔建议不低于10秒启用QoS 1确保数据可靠传输实现离线数据缓存网络恢复后补发数据在实际项目中我们还需要考虑设备OTA升级、低功耗设计等高级功能。通过这个基础框架开发者可以快速扩展出满足各种场景需求的物联网应用。

相关文章:

ESP32-S3 + OneNet物联网平台实战:手把手教你用MQTT协议上报温湿度数据(附完整代码)

ESP32-S3与OneNet物联网平台实战:从零构建温湿度监测系统 物联网技术的快速发展让硬件开发者能够轻松将传感器数据上传至云端。本文将手把手教你使用ESP32-S3开发板,通过MQTT协议将DHT11温湿度传感器的数据上传至OneNet物联网平台,构建一个完…...

GHelper深度指南:华硕笔记本性能调优与硬件控制实战

GHelper深度指南:华硕笔记本性能调优与硬件控制实战 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar…...

【限时解密】头部AI公司内部禁传的UX设计checklist(含LLM输出可信度校验矩阵v3.2)

第一章:生成式AI应用用户体验设计原则 2026奇点智能技术大会(https://ml-summit.org) 生成式AI的交互本质不同于传统软件——它不执行确定性指令,而是协商式共创。因此,用户体验设计必须从“功能交付”转向“意图对齐”,在模糊性…...

Win11Debloat:3个颠覆性设计重新定义Windows系统优化

Win11Debloat:3个颠覆性设计重新定义Windows系统优化 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cus…...

不会激发善意的管理者,永远只能得到员工能力的下限

每到绩效考核季,办公室里总会弥漫着一种特殊的气氛。不是期待,不是兴奋,而是一种低气压的紧绷。人们开始变得谨慎,减少主动表达,把更多的精力放在"怎么让自己的数字好看"上,而不是"怎么把工…...

【仅限首批读者】SITS2026多模态推荐核心专利模块开源预告:含跨模态注意力掩码设计与轻量化部署方案

第一章:SITS2026案例:多模态旅游推荐 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Smart Intelligent Tourism System 2026)是面向下一代旅游服务构建的多模态推荐原型系统,集成文本游记、用户拍摄图像、…...

Windows平台APK安装器终极指南:从零构建Android应用部署工作流

Windows平台APK安装器终极指南:从零构建Android应用部署工作流 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK Installer是一款专为Windows平台设计的A…...

第17篇:实战:用AI批量生成小红书爆款笔记,引流变现(项目实战)

文章目录项目背景技术选型架构设计核心实现1. 环境准备与配置2. 定义核心提示词模板3. 调用AI生成内容4. 批量生成与文件保存踩坑记录效果对比项目背景 最近在帮一个做本地生活服务的客户做引流,目标平台是小红书。他们之前靠人工写笔记,一天憋不出几篇…...

第16篇:第一个AI赚钱项目:定制化AI头像与艺术二维码(项目实战)

文章目录项目背景:从“玩一玩”到“赚到钱”的转变技术选型:为什么是它们?架构设计:从用户请求到成品交付核心实现:ComfyUI工作流与代码关键点踩坑记录与优化方案效果对比与商业模式思考项目背景:从“玩一玩…...

如何快速实现象棋AI智能连线:深度学习视觉识别完整指南

如何快速实现象棋AI智能连线:深度学习视觉识别完整指南 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 你是否曾在象棋对弈中渴望获得专业级的…...

洛阳科技职业学院:地铁+景区+美食一步到位

Hey,各位同学!还在为选择学校举棋不定吗?是不是既想找个靠谱的实力派又盼着课余生活精彩纷呈?那就把目光锁定洛阳科技职业学院吧!这里不仅能让你学业更上一层楼还能让你玩得嗨、吃得好、逛得爽!学校拥有Buf…...

Autosar MCAL避坑指南:EB配置GPT模块时,中断回调与时钟源这些细节千万别忽略

Autosar MCAL实战避坑:GPT模块配置中的高阶调试技巧 当你在凌晨三点的实验室里盯着纹丝不动的LED灯,而截止日期就在明天时,就会明白GPT模块的配置远不止勾选几个复选框那么简单。作为Autosar架构中的时间指挥官,通用定时器&#x…...

Ubuntu20.04实战:5分钟搞定海康威视摄像头SDK环境配置(附常见报错解决)

Ubuntu 20.04 极速部署海康威视摄像头SDK开发环境全指南 1. 环境准备与SDK获取 在开始之前,确保你的Ubuntu 20.04系统已经更新到最新状态。打开终端执行以下命令: sudo apt update && sudo apt upgrade -y海康威视官方提供了Linux平台的SDK开发包…...

3步掌握Blender化学品插件:从分子结构到3D打印的终极指南

3步掌握Blender化学品插件:从分子结构到3D打印的终极指南 【免费下载链接】blender-chemicals Draws chemicals in Blender using common input formats (smiles, molfiles, cif files, etc.) 项目地址: https://gitcode.com/gh_mirrors/bl/blender-chemicals …...

别再乱接120Ω电阻了!手把手教你搞定CAN总线多节点手拉手拓扑的正确布线

别再乱接120Ω电阻了!手把手教你搞定CAN总线多节点手拉手拓扑的正确布线 在汽车电子和工业控制领域,CAN总线就像神经系统的血管,承载着关键数据的传输。但许多工程师在搭建多节点系统时,常常陷入一个看似简单却暗藏玄机的陷阱——…...

fdisk 命令实战:从零开始掌握Linux磁盘分区技巧

1. 认识fdisk:你的Linux磁盘分区管家 第一次接触Linux磁盘管理时,我盯着那个黑乎乎的终端窗口直发懵。直到老同事扔给我一句"用fdisk就像给新房子砌墙",这才恍然大悟。想象你买了一套毛坯房,fdisk就是帮你划分卧室、厨房…...

终极指南:如何在Linux系统上安装Photoshop CC 2022,轻松解锁专业图像编辑能力

终极指南:如何在Linux系统上安装Photoshop CC 2022,轻松解锁专业图像编辑能力 【免费下载链接】Photoshop-CC2022-Linux Installer from Photoshop CC 2021 to 2022 on linux with a GUI 项目地址: https://gitcode.com/gh_mirrors/ph/Photoshop-CC202…...

Photoshop图层批量导出终极指南:告别繁琐操作,5分钟搞定专业资源管理

Photoshop图层批量导出终极指南:告别繁琐操作,5分钟搞定专业资源管理 【免费下载链接】Photoshop-Export-Layers-to-Files-Fast This script allows you to export your layers as individual files at a speed much faster than the built-in script fr…...

避坑指南:OpenLayers 8离线瓦片地图加载与跨域图片滤镜处理

OpenLayers 8离线瓦片地图深度定制:跨域滤镜与性能优化实战 在企业级地理信息系统开发中,离线瓦片地图的样式定制常遇到两个技术痛点:跨域资源加载导致的画布污染问题,以及复杂滤镜处理带来的性能瓶颈。本文将深入剖析OpenLayers …...

GPT-SoVITS语音克隆完全指南:5秒音频创造专业级语音合成

GPT-SoVITS语音克隆完全指南:5秒音频创造专业级语音合成 【免费下载链接】GPT-SoVITS 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS 你是否曾梦想…...

3分钟终极指南:如何用Hotkey Detective快速定位Windows热键冲突

3分钟终极指南:如何用Hotkey Detective快速定位Windows热键冲突 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

别再被 ee.Initialize() 坑了!手把手教你正确配置 Python 本地 GEE API(附项目名查找指南)

别再被 ee.Initialize() 坑了!手把手教你正确配置 Python 本地 GEE API(附项目名查找指南) 如果你正在尝试在本地 Python 环境中使用 Google Earth Engine (GEE) API,很可能在 ee.Initialize() 这一步遇到了障碍。网上的许多教程…...

Audiveris:如何让纸质乐谱在几分钟内变成数字音乐?

Audiveris:如何让纸质乐谱在几分钟内变成数字音乐? 【免费下载链接】audiveris Latest generation of Audiveris OMR engine 项目地址: https://gitcode.com/gh_mirrors/au/audiveris 你是否曾面对一堆泛黄的纸质乐谱,想要将它们转化为…...

【架构实战】系统容量评估与压测工具对比

一、容量评估概述 系统容量评估是架构设计的核心: 容量评估目标: 确定系统最大承载能力指导服务器数量规划提前发现性能瓶颈 二、容量评估方法 1. 评估模型 系统容量 并发用户数 每用户请求数 平均响应时间 QPS (PV / 峰值系数) / (86400 峰值时间占…...

NVIDIA GB200 SuperPOD实战指南:如何快速部署你的首个AI智算中心(附避坑清单)

NVIDIA GB200 SuperPOD实战指南:如何快速部署你的首个AI智算中心(附避坑清单) 当企业决定拥抱生成式AI浪潮时,最棘手的挑战往往不是算法研发,而是如何快速搭建能够支撑万亿参数大模型训练的基础设施。NVIDIA最新发布的…...

【C语言】-自定义类型:结构体

🦆 个人主页:深邃- ❄️专栏传送门:《C语言》《数据结构》 🌟Gitee仓库:《C语言》《数据结构》 目录结构体类型的声明结构体回顾​结构的声明​结构体变量的创建和初始化结构的特殊声明匿名结构体类型结构的自引用结构…...

华三防火墙固定IP配置实战:从接口设置到内网访问外网全解析

1. 华三防火墙固定IP配置前的准备工作 第一次接触华三防火墙时,我被它丰富的接口类型和复杂的配置选项弄得有点懵。后来才发现,只要理清楚网络拓扑和接口规划,配置过程就会顺利很多。先说说我在实际项目中总结的准备工作经验。 网络拓扑规划是…...

赋能软件测试:Qwen1.5-1.8B GPTQ自动生成测试用例与缺陷报告

赋能软件测试:Qwen1.5-1.8B GPTQ自动生成测试用例与缺陷报告 如果你是一名软件测试工程师,下面这些场景你一定不陌生:面对一份几十页的产品需求文档,需要手动设计上百个测试用例,光是思考边界值就让人头大&#xff1b…...

Gitee:中国开发者生态的数字底座如何赋能本土创新

在中国数字经济快速发展的背景下,代码托管平台作为软件开发的基础设施,其战略价值日益凸显。Gitee作为国内领先的一站式开发者平台,通过其本土化优势、全流程工具链和安全合规能力,正在重塑国内技术团队的工作方式与创新模式。 深…...

Win10 Hyper-V 虚拟机网络配置避坑指南(实战经验)

1. Hyper-V网络配置的底层逻辑 很多人第一次用Hyper-V创建CentOS7虚拟机时,都会遇到一个魔幻现象:按照教程一步步操作,虚拟机死活上不了网。我当年踩这个坑时,曾连续三天熬夜排查,最后发现根本原因是没搞懂Hyper-V的三…...