Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
玩溜GD32303E-EVAL BSP系列(六)----OneNET云平台接入
发布于 2018-05-15 11:12:56 浏览:5093
订阅该版
[tocm] * 本帖最后由 Cheney_Chen 于 2018-5-15 11:11 编辑 * ## 1. 准备 前几个章节介绍了设备环境的搭建、传感器数据的获取以及设备网络的连接方式,本章将介绍设备使用 RT-Thread 系统通过 MQTT 协议连接 OneNET 云平台,并进行数据的交互和设备控制的过程。 [OneNET](https://open.iot.10086.cn/) 云平台是由中国移动打造的物联网开放平台。平台适配多种网络环境和协议类型,如 MQTT、HTTP、LWM2M等,可以帮助开发者轻松的实现设备的接入与数据的传输,完成产品开发部署。 云平台接入之前需要确保设备联网成功,本章使用的以太网模块为 ENC28J60 模块,具体使用方式可先查看文档 [玩溜GD32303E-EVAL BSP系列(五)----设备连接网络](https://www.rt-thread.org/qa/thread-7087-1-1.html)。 本章使用的数据上传模块为温湿度传感器 SHT10,用于获取实时数据上传到云端,具体使用方式可先查看文档 [玩溜GD32303E-EVAL BSP系列(三)----读取温度湿度传感器数据](https://www.rt-thread.org/qa/thread-7038-1-1.html)。 ## 2. 接入流程 ### 2.1 注册登录 OneNET 云平台地址:[https://open.iot.10086.cn](https://open.iot.10086.cn) 设备接入 OneNET 平台之前,需要在平台注册用户账号,此处采用的是个人用户注册: ![register.jpg](/uploads/201805/15/110409qex728w7m7962x73.jpg) ### 2.2 创建产品 账号注册登录成功,可以点击`开发者中心`进入开发者中心界面; 在开发者中心界面可以对产品和设备进行控制管理,首先需要创建新产品,点击`创建产品`,输入产品基本参数,页面最下方设备接入协议选择 `MQTT` 协议,如下图所示: ![create_product.jpg](/uploads/201805/15/110428ybmb45khg0bmhhs4.jpg) ![create_product1.jpg](/uploads/201805/15/110440v2idndjwimgmr5gf.jpg) 产品创建成功之后,可以在`产品概况`中查看产品基础信息(如产品ID,接入协议,创建时间,产品APIkey等)。 ### 2.3 创建设备 产品是一类设备的统称,产品创建成功之后可给产品手动添加设备,点击 `设备管理` -> `立即接入设备`,输入自定义 `设备名称` 和 `设备鉴权信息` (设备鉴权信息为自定义设备唯一标识符,用于用户区分产品内设备)接入设备,如下图所示: ![create_device.jpg](/uploads/201805/15/110459qnnl9t1ssnjxl8l7.jpg) 设备创建成功,点击`添加APIkey`,为设备添加对应的 APIkey,该过程类似于设备激活过程,设备获取的 APIkey 可用于设备连接与数据交互过程,获取方式如下图所示: ![get_apikey.jpg](/uploads/201805/15/110511i46p1dn6460fc1af.jpg) 设备获取APIkey成功后,云端可得到如下设备信息,用户需记录信息用于设备配置: - **产品ID**:平台颁布的每个产品唯一标识符; - **设备ID**:平台颁布的每个产品下设备的唯一标识符; - **鉴权信息**:用户自定义的设备唯一标识符; - **APIkey**:平台颁布的每个产品或每个设备的密钥,用于设备连接云平台及数据的收发。 ### 2.4 设备组件包获取 RT-Thread 为设备接入 OneNET 云平台提供 `OneNET package` 组件包支持,使用 `OneNET package` 需要在 RT-Thread 的包管理中选中它,具体路径如下: ``` RT-Thread online packages IoT - internet of things --- (*) OneNET: China Mobile OneNet cloud SDK for RT-Thread [ ] Enable OneNET sample (*) Enable support MQTT protocol (/test_topic) mqtt subtopic (device id) device id (api key) api key (product id) product id (auth info) auth info onenet version (latest) --- ``` 配置组件包参数时,需要将上述 OneNET 云平台新建产品和设备过程中获取的参数配置到组件包中,配置参数介绍如下: - mqtt subtopic:用户自定义设备 MQTT 协议订阅 TOPIC 信息,用于云端下发数据; - device id:云端新建设备获取的`设备ID`; - api key: 云端设备获取的 `APIkey`; - product id: 云端新建产品获取的`产品ID`; - auth info: 云端新建设备用户自定义的`鉴权信息`。 保存配置,退出配置界面,在 ENV 工具命令行界面使用 `scons --target=mdk5` 生成新工程。打开新生成的MDK工程,显示最新组件包及组件包例程代码,工程结构如下: ![onenet_package.jpg](/uploads/201805/15/110537t6n67pp0dxd440c4.jpg) 然后需要添加以太网设备初始化文件和传感器驱动文件,添加 OnNET 组件包对 GD32 的移植文件和示例文件到工程中,如下图所示: | 文件名称 | 说明 | | ---- | ---- | | enc28j60_app.c | 初始化 enc28j60 以太网模块文件 | | sth10.c/sth10.h | STH10 温湿度传感器驱动文件 | | onenet_port.c | OneNET 组件包移植文件 | | onenet_sample.c | OneNET 组件包示例代码文件 | ![project_ports.jpg](/uploads/201805/15/110552vegdx2xn19eduude.jpg) ## 3. 设备与云端数据交互 ### 3.1 设备上线 在电脑端使用 xshell 打开对应端口,波特率配置为115200,编译代码并下载至开发板,后在 `finsh/msh` 中先执行 `app_init`命令用于初始化以太网设备和温湿度传感器设备,设备联网成功,然后执行 `onenet_mqtt_init` 命令初始化设备 MQTT 协议并通过 MQTT 协议与 OneNET 云平台建立连接,设备上线成功,命令行显示如下初始化信息: ``` \ | / - RT - Thread Operating System / | \ 3.0.4 build May 9 2018 2006 - 2018 Copyright by rt-thread team lwIP-2.0.2 initialized! [SFUD]Find a GigaDevice GD25Q16B flash chip. Size is 2097152 bytes. [SFUD]gd25q flash device is initialize success. msh /> msh />app_init [INIT] enc28j60 device initialize success! [INIT] LED device initialize success! //以太网设备和 LED 设备初始化成功 msh /> msh />onenet_mqtt_init [I/ONENET]Enter mqtt_connect_callback! [MQTT] ipv4 address port: 6002 [MQTT] HOST = '183.230.40.39' [I/ONENET]OneNET MQTT initialize success. [MQTT] Subscribe #0 /test_topic OK! [I/ONENET]Enter mqtt_online_callback! // 设备与 OneNET 云端通过 MQTT 协议连接上线成功 ``` 云端显示设备为在线状态,之后可进行数据交互过程,如下图所示: ![onenet_online.jpg](/uploads/201805/15/110611u34hc0z082xpuu22.jpg) ### 3.2 云端下发数据 OneNET 云端下发数据通过 MQTT 协议发送,OneNET 组件包对云端的下发数据提供用户自定义处理接口,需要用户自定义实现,上述导入工程的 `onenet_port.c` 文件中已实现对云端下发数据的解析与处理。 OneNET 云端点击 `设备管理` -> `发送命令`, 输入对应数据 `"led2 on"`,用于点亮设备上 LED2,点击`发送命令`,显示发送命令成功,设备 LED2 亮起,如下图所示: ![send_data.jpg](/uploads/201805/15/110622ifzm1mz5zydnymft.jpg) ### 3.3 设备上传数据 设备上传数据到 OneNET 一般使用 HTTP 协议通过 POST 请求形式发送,发送数据前需要先了解如下几个概念: - 数据点:设备向云端发送的一个数据,一般是以KV(key-value)的形式发送; - 数据流:一个数据包含多个数据点,用户如果想查看管理设备上传的数据流,需要在云端新建[数据流模板](https://open.iot.10086.cn/doc/art402.html#97)。 首先需要在云端新建数据流模板,OneNET 云端点击 `数据流模板` -> `添加数据流`,新建 `temperature` 和 `humidity` 数据流模板,如下图所示: ![add_data_stream.jpg](/uploads/201805/15/110633hszap6ap8paan1op.jpg) 然后设备端命令行,`finsh/msh` 中执行命令 `onenet_upload_cycle` ,该命令作可以 3 秒一次循环上传温湿度传感器获取的数据到 OneNET 云端,OneNET 云端点击 `设备管理` -> `设备名称(device_1)` -> `数据展示` 查看设备实时上传数据,如下图所示: ![upload_data.jpg](/uploads/201805/15/110656j69yo6kqd9kjq1yd.jpg) 本章大致介绍了 GD32 设备通过 MQTT 协议连接 OneNET 云端并进行数据交互和设备控制的过程,用户可根据自己需求自定义设备上传数据的类型和云端下发数据的处理方式,来实现在云端对设备的管理与控制。 ## 4. 参考 - [ENV 工具使用手册](https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-tool-manual/env/env-user-manual/) - [GD32303E-EVAL 官网](http://gd32mcu.21ic.com/site) - [GD32303E-EVAL BSP源码及资料百度云](https://pan.baidu.com/s/1uHza1tiVUnmg8ixMzZLAFA) - [OneNET 云平台文档中心](https://open.iot.10086.cn/doc) - [玩溜 GD32303E-EVAL BSP 系列(一)----基本系统跑起来](https://www.rt-thread.org/qa/thread-7027-1-1.html) - [玩溜 GD32303E-EVAL BSP 系列(三)----读取温度湿度传感器数据](https://www.rt-thread.org/qa/thread-7038-1-1.html) - [玩溜 GD32303E-EVAL BSP 系列(五)----设备连接网络](https://www.rt-thread.org/qa/thread-7087-1-1.html)
查看更多
2
个回答
默认排序
按发布时间排序
simon1
2018-09-19
这家伙很懒,什么也没写!
根据入门指南onenet_mqtt_init后没有出现onenet_upload_cycle命令
Cheney_Chen
2018-09-21
这家伙很懒,什么也没写!
ENV中 sample 示例文件加进工程了吗?
撰写答案
登录
注册新账号
关注者
0
被浏览
5.1k
关于作者
Cheney_Chen
这家伙很懒,什么也没写!
提问
4
回答
415
被采纳
1
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
CherryUSB的bootuf2配置
2
在用clangd开发RTT吗,快来试试如何简单获得清晰干净的工作区
3
GD32F450 片内 flash驱动适配
4
STM32H7R7运行CherryUSB
5
RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
6
次点赞
YZRD
2
篇文章
5
次点赞
lizimu
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部