一、所需的网址和工具链接

1.OneNet平台地址
2.MQTTX软件地址
3.OneNet平台文帮助文档地址
 

二、ONENET添加产品操作

1.用账号密码登录ONENET(没有的去注册后再进行操作),找到控制台图标,前往控制台。

2.找到产品开发-创建产品,进行添加产品操作。

3.按如下操作。

4.创建好了选择产品开发。

5.创建一个自定义功能点,填入如下参数。

6.回到设备管理,进行添加设备。

7.进入到详情,复制设备密钥和产品ID,进行后续操作。

三、MQTT设备连接

1.MQTT三要素

2.下载工具生成Password https://open.iot.10086.cn/doc/iot_platform/images/tools/token.exe ,根据设备密钥(Key)与产品ID,生成Password,其中method按需求选择,这里选sha1。

得到如下信息:

IP地址:mqtts.heclouds.com:1883  , Clientid:123456  , Username:Rx79GUa7N5

et:1892482169

Password:version=2018-10-31&res=products%2FRx79GUa7N5%2Fdevices%2F123456&et=1892482169&method=sha1&sign=WfyEphULqYn4s9KvYDq%2BBE2rwQc%3D

四、MQTT.x工具模拟接入数据

1.免费下载工具链接:MQTTX 下载,参数填入下面这个界面,点击Connect。

2.设备显示在线。

五、模拟设备上传和获取ONENET平台数据

1.订阅和发布命令可以参考下面链接文档,或者进入平台按下图操作步骤查看

oneNet平台订阅服务详细命令介绍文档链接

2.我们要用到的主题。

3.上报报文内容格式。

{
  "id": "1",
  "version": "1.0",
  "params": {
    "TEMP": {
      "value": 21.9,
      "time": 1762495862000
    }
  }
}

4.MQTTX上报操作设置。

填入如下内容发送,收到响应Code:200,说明上报数据成功。

查看后台数据是否更新。

5.MQTTX获取数据操作设置。

获取报文格式:

后台设置:

MQTTX工具添加订阅发布消息:

成功获取:

六、单片机(EC800M)上传和获取ONENET平台数据

附部分主要功能代码:

//MQTT初始化    clientId:设备名称 username:平台分配的产品ID password:填写经过key计算的token
void MQTT_Init(void)
{
	SendATCmd("AT+QMTCFG=\"version\",0,4\r\n");//设备版本
	DelayMs(500);
	SendATCmd("AT+QMTOPEN=0,\"mqtts.heclouds.com\",1883\r\n");//连接MQTT服务器 
	DelayMs(500);
	strx=strstr((const char*)RecDate,(const char*)"+QMTOPEN: 0,0");//看下返回状态
    while(strx==NULL)
    {
      strx=strstr((const char*)RecDate,(const char*)"+QMTOPEN: 0,0");//确认返回值正确
    }
	
	SendATCmd("AT+QMTCONN=0,\"123456\",\"Rx79GUa7N5\",\"version=2018-10-31&res=products%2FRx79GUa7N5%2Fdevices%2F123456&et=1892482169&method=sha1&sign=WfyEphULqYn4s9KvYDq%2BBE2rwQc%3D\"\r\n");//去登录MQTT服务器,设备ID,产品ID,密码.用户根据实际需要进行更改
	DelayMs(500);
    strx=strstr((const char*)RecDate,(const char*)"+QMTCONN: 0,0,0");//看下返回状态
	while(strx==NULL)
    {
        strx=strstr((const char*)RecDate,(const char*)"+QMTCONN: 0,0,0");//看下返回状态
    }
   
}

//订阅主题
void MQTT_QMTSUB(void)
{
	SendATCmd("AT+QMTSUB=0,1,\"$sys/Rx79GUa7N5/123456/thing/property/post/reply\",0\r\n");//直连设备上报属性响应
	DelayMs(500);
	SendATCmd("AT+QMTSUB=0,2,\"$sys/Rx79GUa7N5/123456/thing/property/desired/get/reply\",0\r\n");//直连设备获取期望值响应
	DelayMs(500);
}


//上传主题数据
void MQTT_PostData()
{
	char cmd[] ="AT+QMTPUBEX=0,0,0,0,\"$sys/Rx79GUa7N5/123456/thing/property/post\",%d";
	int data_len = 0;
	char str[] ="\"{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"TEMP\":{\"value\":21.9,\"time\":1762495862000}}}\"";
	data_len = strlen(str);
	printf("length:%d\r\n",data_len);
	
	sprintf(cmd,cmd,data_len);
//	SendATCmd("AT+QMTPUBEX=0,0,0,0,\"$sys/Rx79GUa7N5/123456/thing/property/post\",82\r\n");
	DelayMs(500);

	SendATCmd("{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"TEMP\":{\"value\":21.9,\"time\":1762495862000}}}\r\n");
	DelayMs(500);
}


//获取数据
void MQTT_GetData()
{
	char cmd[] ="AT+QMTPUBEX=0,0,0,0,\"$sys/Rx79GUa7N5/123456/thing/property/desired/get\",%d\r\n";
	uint8_t data_len = 0;
	char str[] ="\"{\"id\":\"2\",\"version\":\"1.0\",\"params\":[\"TEMP\"]}\"";
	data_len = strlen(str);
	printf("length:%d\r\n",data_len);
	
	sprintf(cmd,cmd,data_len);
	
//	SendATCmd("AT+QMTPUBEX=0,0,0,0,\"$sys/Rx79GUa7N5/123456/thing/property/desired/get\",46\r\n");
	SendATCmd(cmd);

	DelayMs(500);
	
	SendATCmd("{\"id\":\"2\",\"version\":\"1.0\",\"params\":[\"TEMP\"]}\r\n");
	
}

串口打印日志:

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐