OneNet物联网开放平台MQTT

==》点击此处返回主目录《==

1、打开 OneNet物联网开放平台:

平台概览 - OneNET物联网平台 (10086.cn)icon-default.png?t=N7T8https://open.iot.10086.cn/console/summary

2、左侧栏目,点击“产品开发”——“创建产品”

 

3、导入物模型。

链接:https://pan.baidu.com/s/1gf75fVTzMNbPBH0VP6TgyA?pwd=hgkj

从以上地址下载物模型文件《OneNet物联网开放平台物模型.json》,紧接上步,点击“设置物模型”——“导入物模型”。最后点击“保存”——“确定”

4、创建设备(批量添加设备,根据提示完成)

 5、在线调试

设备上线后,依次点击“详情”——“设备调试”——“应用模拟器”——“服务调用” 按照图示发消息

 服务器下发数据示例说明:

1、待发送数据原文:{"cmd":"voice","msg":"微信收款12.34元"}

2、经base64加密后:eyJjbWQiOiJ2b2ljZSIsIm1zZyI6IuW+ruS/oeaUtuasvjEyLjM05YWDIn0=

3、依次填充到物模型输入参数S0~S3中,每个参数最大长度为 256个字节,可留空,但不能缺省。如果S0中放不下,就放S1中,还放不下就放S2中,最后放S3中。单个指令最多传输256*4=1024个字节的数据。

4、设备收到数据后,会按S0~S3顺序依次取出参数值,拼接成一个字符串,然后base64解码还原,得到第1步发送的数据指令。

6、API接口调试:call-service API接口调试icon-default.png?t=N7T8https://open.iot.10086.cn/console/monitor/apiDebug设备上线后,点击上面的链接,进入"API调试"界面,依次点击“物模型使用”——“设备调用服务”,进入下图所示界面。

params中填写的参数:

{
    "S0": "eyJjbWQiOiJ2b2ljZSIsIm1zZyI6IuW+ruS/oeaUtuasvjEyLjM05YWDIn0=",
    "S1": "",
    "S2": "",
    "S3": ""
}

点击“执行”按钮后,设备播报 “微信收款12.34元” 则表示调试成功。服务器开发人员可参考右侧生成的示例代码做开发。

上述API接口为:https://iot-api.heclouds.com/thingmodel/call-service 具体接口说明,请参考官方文档

call-service 接口说明icon-default.png?t=N7T8https://open.iot.10086.cn/doc/v5/fuse/detail/1423

7、更多信息请参考官网帮助文档:

OneNET物联网开放平台icon-default.png?t=N7T8https://open.iot.10086.cn/doc/v5/fuse/detail/new_platform注意:由于平台限制,终端设备无法主动给服务器上报消息。对于 识别身份证,识别扫码,读取NFC 等功能,需提供 http 接口,供设备主动上报参数。http接口要求如下

请求方式: post

http head: Content-Type:application/json; charset=UTF-8

调用示例比如:

POST /commercial_api/notifyVoice/voiceNotify HTTP/1.1
Content-Type: application/json
Host: comm.zly618.com
Content-Length: 108

{"cmd":"qrcode","sn":"B002COMMONTESTDEVICE","data":"二维码内容base64编码","money":"31.22","msgid":"20220916103030"}

通用网络协议 中设备上报的数据都可以通过这种方式上报。

<think>嗯,用户这次问的是ESP32连接OneNet物联网平台的方法。之前提供的引用虽然提到了STM32+ESP8266的方案,但用户明确需要的是ESP32的方案,这说明用户可能正在开发基于ESP32的项目。 用户引用的资料里[^1][^2]提到了一些关键点:MQTT协议、Wi-Fi连接、OneNet的接入方式。虽然硬件平台不同,但软件层面的连接逻辑是相通的——都是通过Wi-Fi联网后用MQTT协议接入OneNet。这给了我重构回答的方向。 注意到引用[^3]出现了Python数据分析库的代码,这明显是干扰信息,需要忽略。重点应该放在硬件连接和通信协议上。 用户可能是个物联网开发者,正在做设备上云的调试。ta特意强调要"实现方法",说明需要具体操作步骤,而不仅是理论。考虑到ESP32自带Wi-Fi模块,比STM32+ESP8266的组合更简洁,应该突出这个优势。 准备从四个层面回答:硬件连接(虽然ESP32单板就能完成)、固件准备(强调AT指令或SDK的选择)、MQTT参数配置(这是接入OneNet的核心)、代码框架(给出关键函数示例但避免贴完整代码)。最后补充常见调试问题,因为实际连接时最容易卡在证书和订阅环节。 用户没有提到具体开发环境,所以代码示例用Arduino框架最稳妥(用户群最广)。如果ta后续追问ESP-IDF或MicroPython再补充。 </think>以下是基于ESP32连接OneNet物联网开放平台的完整实现方法,整合了硬件配置、软件开发和协议对接的关键步骤: --- ### 一、硬件准备 1. **ESP32开发板**(需自带WiFi模块,如ESP32-WROOM) 2. **USB数据线**(用于供电和烧录程序) 3. **传感器模块**(如温湿度传感器DHT11,按需选配) --- ### 二、核心实现步骤 #### 步骤1:OneNet平台配置 1. 登录[OneNet控制台](https://open.iot.10086.cn/) 2. 创建产品: - 选择**设备接入协议** → **MQTT旧版协议** - 记录关键参数: `ProductID`(产品ID)、`ApiKey`(API密钥) 3. 创建设备: - 获取`DeviceID`(设备ID)和`AuthInfo`(设备鉴权信息) #### 步骤2:ESP32开发环境搭建 1. **Arduino IDE配置**: ```arduino 工具 → 开发板 → ESP32 Dev Module 库管理安装 → PubSubClient、WiFiClientSecure ``` 2. **关键库依赖**: ```arduino #include <WiFi.h> #include <PubSubClient.h> ``` #### 步骤3:MQTT连接代码框架 ```arduino // 配置网络参数 const char* ssid = "Your_WiFi_SSID"; const char* password = "Your_WiFi_Password"; // OneNet MQTT参数 const char* mqtt_server = "mqtt.heclouds.com"; const int mqtt_port = 1883; // 非加密端口 char clientId[50] = "Device_"; // 格式: Device_<DeviceID> char username[30] = "<ProductID>"; char password_mqtt[35] = "<AuthInfo>"; // 设备鉴权信息 WiFiClient espClient; PubSubClient client(espClient); void setup_wifi() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } } void reconnect() { while (!client.connected()) { if (client.connect(clientId, username, password_mqtt)) { client.subscribe("$sys/<ProductID>/<DeviceID>/dp/post/json/accepted"); // 订阅数据点确认 } else { delay(5000); } } } void setup() { Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, mqtt_port); } void loop() { if (!client.connected()) reconnect(); client.loop(); // 示例:发送温湿度数据 String payload = "{\"temp\":25.6,\"hum\":65}"; String topic = "$sys/<ProductID>/<DeviceID>/dp/post/json"; client.publish(topic.c_str(), payload.c_str()); delay(30000); // 30秒发送一次 } ``` #### 步骤4:数据上传格式规范 OneNet要求JSON格式数据点: ```json { "datastreams":[ { "id":"temp", // 数据流名称 "datapoints":[{"value":25.5}] }, { "id":"hum", "datapoints":[{"value":60}] } ] } ``` --- ### 三、调试关键点 1. **连接失败排查**: - 检查三元组参数是否匹配(`ProductID`/`DeviceID`/`AuthInfo`) - 确认WiFi信号强度(RSSI > -70dBm) - 使用`client.state()`获取MQTT错误码 2. **数据查看**: 登录OneNet控制台 → **设备管理** → **数据流** → 查看实时数据 --- ### 四、安全增强建议(可选) ```arduino // 启用TLS加密(端口1883→1884) const int mqtt_port = 1884; WiFiClientSecure espClient; espClient.setInsecure(); // 跳过证书验证(生产环境需配置CA证书) ``` > 注:完整代码需替换`<>`中的平台参数,并在Arduino IDE中安装[OneNet MQTT示例库](https://github.com/cm-heclouds/arduino-mqtt) --- ### 相关问题 1. **如何解决ESP32连接OneNet时的鉴权失败问题?** → 重点检查设备三元组和MQTT客户端ID格式(需包含`Device_`前缀)[^1] 2. **ESP32发送数据后OneNet平台未显示可能的原因?** → 需验证数据是否为JSON格式且包含`datastreams`层级结构[^2] 3. **如何通过OneNet平台向ESP32下发控制指令?** → 需实现MQTT消息订阅和JSON指令解析逻辑 4. **ESP32如何接入OneNet的HTTP协议接口?** → 可使用HTTP POST请求+API密钥认证的方式 [^1]: STM32+ESP8266+MQTT协议连接OneNet物联网平台的关键参数验证 [^2]: OneNet物联网平台数据接入格式规范要求
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值