1@page linksdk_gateway_demo Wi-Fi设备实现网关协助子设备连接阿里云示例
2
3[更正文档](https://gitee.com/alios-things/linksdk_gateway_demo/edit/master/README.md)      [贡献说明](https://help.aliyun.com/document_detail/302301.html)
4
5# 1. 案例简介
6linksdk_gateway_demo是Link SDK网关代理子设备上云最简示例。
7
8其完成的主要功能包括:
9- 系统板级初始化
10- 内核基础组件初始化
11- 网络配置
12- 网络配置成功(获取ip)后创建Link SDK主线程
13- Link SDK参数配置
14- Link SDK初始化
15- 创建独立线程用于MQTT保活及QoS1消息重发
16- 创建独立线程用于下行数据接收
17- 初始化子设备模块
18- 批量添加子设备topo关系
19- 子设备批量上线
20- 子设备下线
21
22该示例的运行依赖下述基本功能完成对接:
23- AOS API
24- LwIP
25- MbedTLS
26- Link SDK
27
28# 2. 基础知识
29
30## 2.1 基础目录结构
31```tree
32
33.
34├── main.c                   # 网络配置及SDK启动入口
35├── maintask.c               # 系统主任务入口处理,入口**aos_maintask**
36├── Makefile                 # aos make编译时入口
37├── package.yaml             # 编译系统配置文件
38├── README.md                # 本说明文档
39├── SConstruct               # Makefile => Scon => aostools
40└── subdev_basic_demo.c      # Link SDK 网关(代理子设备上云)演示示例
41```
42
43# 3. 物料清单
44
45## 3.1 HaaS100 硬件
46
47[HaaS100 硬件简介](https://help.aliyun.com/document_detail/184426.html)
48
49<img src="https://img.alicdn.com/imgextra/i4/O1CN01XxD6Xo217CB3FZnEU_!!6000000006937-2-tps-746-497.png" style="max-width:800px;" />
50
51# 4. 案例实现
52
53## 4.1 硬件连接
54该案例只需要连接电源线以及串口线,如下图所示:
55
56<img src="https://img.alicdn.com/imgextra/i3/O1CN01tPYjF31bqpdGkFbdD_!!6000000003517-0-tps-4032-3024.jpg" style="max-width:800px;" />
57
58注意:由于本案例需要使用Wi-Fi联网,需将标有2.4G/5.8G的天线连接到HaaS100 靠近USB口的天线端子上,如上图所示。
59## 4.2 软件实现
60### 4.2.1 云端创建产品
61请先点击登陆[物联网平台](https://www.aliyun.com/product/iot/iot_instc_public_cn)(未注册阿里云账户的用户,请先完成账户注册),按下面步骤一步步去打造。
62
631、创建项目
64
65注册登入后,如下图所示,前往管理控制台。
66
67<img src="https://img.alicdn.com/imgextra/i4/O1CN01BN7DMd1IibotD78f6_!!6000000000927-2-tps-1308-490.png" style="max-width:800px;" />
68
69点击公共实例,进行产品创建。
70
71<img src="https://img.alicdn.com/imgextra/i2/O1CN01AjRz9z294Sk2dsMXe_!!6000000008014-2-tps-1328-792.png" style="max-width:800px;" />
72
732、创建网关演示产品
74
75点击创建产品,见下图所示,这里创建了一个名称“haas_gateway”产品。
76
77<img src="https://img.alicdn.com/imgextra/i1/O1CN01vpxC1F1FQnZfx4Znh_!!6000000000482-2-tps-1470-1788.png" style="max-width:800px;" />
78
793、创建网关设备
80
81在设备列表中增加对应产品的设备。
82
83<img src="https://img.alicdn.com/imgextra/i2/O1CN01a8mOHP1zd8ZL5UYE0_!!6000000006736-2-tps-1392-624.png" style="max-width:800px;" />
84
854、创建子设备演示产品
86
87点击创建产品,见下图所示,这里创建了一个名称“haas_subdev”产品。
88
89<img src="https://img.alicdn.com/imgextra/i3/O1CN01ur5LgC1h3GSlStLvf_!!6000000004221-2-tps-1504-1764.png" style="max-width:800px;" />
90
915、创建多个子设备
92
93在设备列表中增加对应产品的设备。
94
95<img src="https://img.alicdn.com/imgextra/i4/O1CN019rocNe1hsYp8IBufJ_!!6000000004333-2-tps-1816-738.png" style="max-width:800px;" />
96
97创建后的设备三元组信息需要同步到设备端的开发代码段中,在4.2.2章节会介绍。待设备端开发结束,就可以在物联网平台中参看设备在线状态。
98
99### 4.2.2 AliOS Things开发环境搭建
100开发环境的搭建请参考[《AliOS Things集成开发环境使用说明之搭建开发环境》](https://help.aliyun.com/document_detail/302378.html),其中详细的介绍了AliOS Things 3.3的IDE集成开发环境的搭建流程。
101
102### 4.2.3 linksdk_gateway_demo代码下载
103物模型上云的代码下载请参考[《AliOS Things集成开发环境使用说明之创建工程》](https://help.aliyun.com/document_detail/302379.html),其中,
104> 选择解决方案: “linksdk_gateway_demo”
105> 选择开发板: HaaS100
106
107### 4.2.4 设备端代码修改
108
109演示用例路径为solutions/{your_project}/data_model_basic_demo.c 此演示用例演示Link SDK物模型单品上云的功能。
110注意:{your_project} 为studio中创建的工程名(基于linksdk_gateway_demo模板)。
111
1121.修改网关三元组,使用4.2.1章节得到的三元组填入代码如下区域:
113```c
114int32_t demo_mqtt_start(void **handle)
115{
116...
117    /* TODO: 替换为自己设备的三元组 */
118    char *product_key       = "替换为上章节创建的product_key";
119    char *device_name       = "替换为上章节创建的device_name";
120    char *device_secret     = "替换为上章节创建的device_secret";
121...
122```
1231.修改子三元组,使用4.2.1章节得到的三元组填入代码如下区域:
124```sh
125aiot_subdev_dev_t g_subdev[] = {
126    {
127        "替换为上章节创建的子设备1的product_key",
128        "替换为上章节创建的子设备1的product_secret",
129        "替换为上章节创建的子设备1的device_name",
130        "替换为上章节创建的子设备1的device_secret"
131    },
132    {
133        "替换为上章节创建的子设备2的product_key",
134        "替换为上章节创建的子设备2的product_secret",
135        "替换为上章节创建的子设备2的device_name",
136        "替换为上章节创建的子设备2的device_secret"
137    },
138...
139};
140```
141
142### 4.2.5 代码编译、烧录
143编译linksdk_gateway_demo的过程如下:
144
145-- 编译固件可参考[《AliOS Things集成开发环境使用说明之编译固件》](https://help.aliyun.com/document_detail/302384.html)146
147-- 烧录固件可参考[《AliOS Things集成开发环境使用说明之烧录固件》](https://help.aliyun.com/document_detail/302383.html)148
149## 4.3 调试
150
151CLI命令行输入联网命令:
152```sh
153netmgr -t wifi -c ssid password
154```
155注意:ssid和password需要替换成自己的路由的ssid及密码。
156
157连上路由器后会自动连接到阿里云物联网平台。
158
159### 4.3.1 关键日志
160CLI日志:
161```sh
162success to establish mbedtls connection, fd = 3(cost 0 bytes in total, max used 0 bytes)
163[104.526][LK-0313] MQTT connect success in 1908 ms
164AIOT_MQTTEVT_CONNECT
165```
166云端查看创建的主设备及子设备是否显示在线。
167
168# 5. 总结
169本用例简单介绍了如何使用AliOS Things及HaaS开发板进行端云一体网关设备的开发。了解更多连云相关知识请参考Link SDK[编程手册](https://help.aliyun.com/document_detail/163772.html?spm=a2c4g.11186623.6.576.50e76ba7rkfLbp)170
171