MQTT协议(新版)接入OneNET平台

本文档详细介绍了如何使用MQTT.fx模拟设备接入中国移动OneNET物联网平台,包括创建产品和设备,计算密钥,配置MQTT客户端连接参数,并进行数据的订阅与发布。通过模拟设备的在线状态和数据点上传,展示了物联网设备与云端平台的交互流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具准备

  • MQTT.fx (用于模拟设备接入)
  • token (计算密钥工具)

添加产品

首先我们先进入到中移物联官方网站:https://open.iot.10086.cn/
点击左上角产品服务→基础服务→MQTT物联网套件,然后点击屏幕上方【立即使用】,进入MQTT协议平台
接下来点击屏幕上【添加产品】,如下图添加一个产品,可参考:官方创建产品文档
在这里插入图片描述
添加完后,系统会分配一个产品ID,请记住,后面会用上

添加设备

添加完产品之后点击屏幕前【立即添加设备】,点击添加设备,这里的设备名称为:mqtt_001,详细可参考:官方创建设备文档,添加成功后,系统会随机分配一个设备ID,请记住设备ID与设备名称,后面会用到
在这里插入图片描述

计算密钥

我们用软件模拟设备登陆OneNET平台,需要用到一个密码,而这个密码需要经过复杂运算获取,密码可以使用工具生成,OneNET官方token算法工具下载链接:token算法工具

打开后,按下图填写生成密码
在这里插入图片描述
注意:这些是我个人的信息,不同人操作完后得到的信息均不同,除了设备名称外
个人收集到信息如下:

  • 产品ID:534601
  • 设备ID:968791073
  • 设备名称:mqtt_001
  • 设备的key:EzORQcVhnnxPp2SolaHhHdCcmnNWl11KVqykuSAuW30= (可以在设备列表详情查看)

使用MQTT.fx模拟一个设备

MQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端工具。支持通过Topic订阅和发布消息,用来前期和物理云平台调试非常方便

MQTT.fx官方下载链接
下载完成后打开如下图所示:
在这里插入图片描述
单击齿轮按钮打开后如下图,并填写如下信息
在这里插入图片描述

说明:查找服务器接入地址与端口:https://open.iot.10086.cn/doc/v5/develop/detail/248

单击 【User Credentials】填入登录的用户名与密码
在这里插入图片描述

最后单击【OK】按钮完成设置,然后单击【Connect】连接服务器
在这里插入图片描述
我们在OneNET平台查看设备状态,可以看到设备显示 “在线”,说明我们已经连接成功
在这里插入图片描述

订阅与发布消息

MQTTS物联网套件中设备相关服务(存储、命令等)的面向设备的接口,均以 topic 的形式提供,设备可以通过 publish 消息到系统 topic 调用服务接口,也可以订阅系统 topic 用于接收服务消息通知,服务提供的系统 topic 的集合形成了 topic 簇
MQTTS物联网套件目前包含:数据点topic簇、命令topic簇、子设备topic簇、设备影子topic簇

订阅消息

我们可以给OneNET平台发布与订阅消息,首先我们先订阅消息,然后才能发布消息
设备上传数据点的命名规则如下:

$sys/{pid}/{device-name}/dp/post/json/+
  • {pid} 为: 产品ID
  • {device-name} 为:设备名称

连接成功后,点击【Subscrube】按钮打开订阅界面面板,按如下图所以填写
在这里插入图片描述

发布消息

接下来我们向设备上传数据点,向平台发布一条数据点上传的消息,订阅这条消息的设备将会收到此消息.

发布数据点topic命名规则如下:

$sys/{pid}/{device-name}/dp/post/json

点击【Publish】按钮进入发布界面面板,按如下图所示

{
    "id": 001,        
    "dp": {             
        "temperatrue": [{     
            "v": 30,          
        }],
        "power": [{     
            "v": 4.5,        
        }],
    }
}


在这里插入图片描述

然后点击【Subscrube】按钮打开订阅面板,如下图所示
在这里插入图片描述
可以上传多条数据点,更改ID号与温度:

{
    "id": 002,        
    "dp": {             
        "temperatrue": [{     
            "v": 25,       
        }],
        "power": [{     
            "v": 4,        
        }],
    }
}
{
    "id": 003,        
    "dp": {             
        "temperatrue": [{     
            "v": 20,       
        }],
        "power": [{     
            "v": 3.5,        
        }],
    }
}
查看订阅面板,是否成功上传消息

点击【Log】按钮打开日志消息界面,查看发布消息
在这里插入图片描述

在OneNET平台查看上传的数据点

打开设备列表,找到设备名称 ‘mqtt_001’,单击数据流按钮,打开数据流界面面板,如下图:
在这里插入图片描述
我们可以看到,我们上传的数据包含有两个类型,一个是temperatrue,另一个是power
在这里插入图片描述
点击查看temperatrue数据点
在这里插入图片描述
注意:最后三个点是我刚才上传的数据,power也是一样,这里就不演示出来了

要将ESP32-C3通过MQTT协议接入OneNet平台,您需要完成以下步骤: 1. 创建OneNet账号并登录。 2. 创建设备,为设备选择MQTT协议,获取设备ID和API Key。 3. 在ESP32-C3上安装MQTT库,例如PubSubClient库。 4. 编写ESP32-C3的代码,包括连接WiFi和MQTT服务器、发布数据到OneNet平台等。 以下是一个简单的例子,演示了如何使用ESP32-C3通过MQTT协议连接OneNet平台: ```c++ #include <WiFi.h> #include <PubSubClient.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; const char* mqtt_server = "mqtt.heclouds.com"; const int mqtt_port = 6002; const char* mqtt_user = "your_DEVICE_ID"; const char* mqtt_password = "your_API_KEY"; const char* topic = "/topic"; WiFiClient espClient; PubSubClient client(espClient); void setup() { Serial.begin(9600); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } client.setServer(mqtt_server, mqtt_port); client.setCallback(callback); while (!client.connected()) { if (client.connect(mqtt_user, mqtt_password)) { Serial.println("Connected to MQTT broker"); } else { Serial.print("Failed to connect to MQTT broker, rc="); Serial.print(client.state()); Serial.println(" retrying..."); delay(5000); } } client.subscribe(topic); } void loop() { if (!client.connected()) { Serial.println("Reconnecting to MQTT broker..."); while (!client.connected()) { if (client.connect(mqtt_user, mqtt_password)) { Serial.println("Connected to MQTT broker"); client.subscribe(topic); } else { Serial.print("Failed to connect to MQTT broker, rc="); Serial.print(client.state()); Serial.println(" retrying..."); delay(5000); } } } client.loop(); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } ``` 在这个例子中,我们使用WiFi连接到互联网,使用PubSubClient库连接OneNetMQTT服务器,然后订阅主题,并在回调函数中打印收到的消息。您可以根据您的需求修改代码,例如修改主题,发布消息等。 需要注意的是,OneNetMQTT服务器需要使用TLS/SSL加密,因此您需要使用MQTT库的TLS版本,例如PubSubClientSecure库。同时,OneNetMQTT服务器需要使用特定的端口6002,而不是标准的MQTT端口1883。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值