【寻找IoT达人大赛-最佳创意奖】Huawei LiteOS对接第三方云平台 —OneNet云温湿度监测

举报
flytianya2010 发表于 2019/07/12 13:34:28 2019/07/12
【摘要】 一、背景和介绍1、项目介绍项目简介: 本项目的目的是成功对接OneNet服务器,能够上传温湿度数据到服务器,并从服务器获取所有数据点,最后解析需要的数据。由于本项目是通过HTTP协议与OneNet服务器连接,所以不具备服务器网页指令直接控制F429开发板,但是可以通过其他设备或网络小助手上传需要控制的数据点来控制本地设备,实现设备与设备之间的控制。目前项目成熟度是完成功能设计,完成上传数据和...

 

一、背景和介绍

1、项目介绍

项目简介: 本项目的目的是成功对接OneNet服务器,能够上传温湿度数据到服务器,并从服务器获取所有数据点,最后解析需要的数据。由于本项目是通过HTTP协议与OneNet服务器连接,所以不具备服务器网页指令直接控制F429开发板,但是可以通过其他设备或网络小助手上传需要控制的数据点来控制本地设备,实现设备与设备之间的控制。目前项目成熟度是完成功能设计,完成上传数据和获取并解析数据框架,后期只添加需要控制的数据。

二、项目内容

1、方案说明

1项目名称:华为LiteOS温湿度监测

功能介绍: 1、基于HuaWeiLiteOS操作系统;

       2、通过以太网模块连接云服务器,上传温湿度数据;

       3、设备端或网络助手可以控制开发板的上的LED

2对接第三方云平台中国移动云平台OneNet,接入方式是HTTP协议;

3第三方云平台概述:

aOneNET是由中国移动打造的PaaS物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。

bOneNET平台作为连接和数据的中心,能适应各种传感网络和通信网络,将面向智能家居、可穿戴设备、车联网、移动健康、智能创客等多个领域开放。

c、八大功能:

专网专号:中国移动基于物联网特点打造的专业化网络通道,提供--一体化的智能管道和支撑系统,支持工业级、车规级的专网卡和通信模组;

海量连接:基于多类型标准协议和API开发满足海量设备的高并发快速接入;

在线监控:实现终端设备的监控管理、在线调试、实时控制功能;

数据存储:基于分布式云存储、消息对象结构、丰富的数据调用接口实现数据高并发读、写库操作,有效保障数据的安全

消息分发:将采集的各类数据通过消息转发、短彩信推送、APP信息推送方式快速告知业务平台、用户手机、APP客户端,建立双向通信的有效通道

能力输出:汇聚中国移动短彩信、位置服务、视频服务、公有云等核心能力,提供标准API接口,缩短终端与应用的开发周期;

事件告警:打造事件触发引擎,用户可以基于引擎快速实现应用逻辑编排;

数据分析:基于Hadoop等提供统一的数据管理与分析能力。

d、应用领域:

OneNET物联网专网已经应用于环境监控、远程抄表、智慧农业、智能家电、智能硬件、节能减排、车联网、工业控制、物流跟踪等多种商业领域。 物联网开放平台OneNET通过打造接入平台、能力平台、大数据平台能力满足物联网领域设备连接、协议适配、数据存储、数据安全、大数据分析等平台级服务需求。。

2、硬件方案

硬件设计:STM32F429处理器、以太网模块LAN8720ALED彩灯。

3、软件方案

       本项目采用LWIP协议,通过以太网模块连接第三方云平台,主要功能模块有,连接服务器,发送数据模块,接收数据模块,分析数据模块,控制模块。

先在LiteOS移植LWIP协议,通过LWIP协议连接183.230.40.33:80服务器,然后采用HTTP协议,通过LWIP发送数据包,采用POST的方法上传数据,采用GET的方法获取数据。

三、接入第三方云平台

1、云平台账号注册

登录OneNet云平台地址:https://open.iot.10086.cn/,在右上角处选择“注册”。注册成功后进入登录界面,登录后选择右上角“开发者中心”,在里面开始产品创建。

登录界面:

image.png 

账号注册:

image.png

 

2、云平台产品创建

进入“开发者中心”后,点击右上角“创建产品”,根据要求填写相关信息。下图是我已经建立的STM32F429oneNet

image.png 

填写产品信息:

image.png 

进入新创建产品的界面:

image.png 

点击左下角处的“添加设备”,填写设备名称和鉴权信息,都是自定义的:

image.png 

3、云平台设备管理

进入设备管理:

image.png 

进入“数据流管理”,可以查看设备信息并根据需要添加APIkey和“数据展示”查看上传的数据情况,以下是本项目设备详细信息:

image.png 

4、新增数据流

进入“数据流模板”,添加数据数据流,也可以不用添加,当设备上传的数据时会自动生成上传数据的名称,添加数据流的好处是可以在“应用管理”使用创建的数据流。

image.png 

5、线上模拟

选择右边的“在线调试”,进入调试界面,这里有多种调试工具,可以进行数据用“数据模拟器”、“地图数据模拟器”、“API调试工具”,具体填写的设备IDAPIkey、数据流等都在前面步骤中已经完成创建:

image.png 

image.png 

image.png 

6、查看数据

“设备管理”中选择右下角“数据流管理”可以查看上传的数据信息:

image.png 

image.png 

7、使用规则引擎

详细介绍使用规则引擎过程。

四、关键源代码解析

1、程序文件介绍

代码目录清单,都根据需要区分了程序模块:

image.png 

2、程序主函数说明

   主函数在main.c中的VOID task3()中,函数包含LWIP初始化,建立TCP与服务器连接,调用发送和接收指令函数:

image.png 

image.png 

3、关键代码说明

netconf.h#define FAR_SERVER  1选择本地 网络助手服务器,#define FAR_SERVER 0选择OneNet服务器,因为用的静态IP,所以需要改本地的网关和开发板的IP

image.png 

const char get_requst3[]:获取数据的HTTP字符串,连接服务器后只需要通过以太网发送该数组就可以获取设备数据点,把字符串中的设备ID29702274,和api-keyTnWg0VdW6kIhU9=6I9AewR=TxKQ=修改为自己的IDapi-key就可以获取自己的设备数据了。

程序中const char get_requst11[]const char get_requst3[]的十六进格式,这样发送数据会快些,没有延迟现象,所以本程序调用的是。

const char get_requst11[]="GET /devices/29702274/datapoints HTTP/1.1\r\napi-key:  TnWg0VdW6kIhU9=6I9AewR=TxKQ=\r\nHost: api.heclouds.com\r\n\r\n";

image.png 

pos_data2[255]:为全局变量,在bdp_dht11.c的mainDHT11()函数定义。修改设备ID和api-key为自己的就可以实现发送数据到自己的设备云上:

POST /devices/29702274/datapoints?type=3 HTTP/1.1

api-key: TnWg0VdW6kIhU9=6I9AewR=TxKQ=

Host: api.heclouds.com

Content-Length: 52

 

{"temperature":34,"humidity":65,"Count":11,"LED1":0}

以下为生成的发送数据字符串函数:

image.png 

image.png 

tcp_echoclient.c中:

 

err_t tcp_echoclient_recv(void *arg,struct tcp_pcb *tpcb,struct pbuf *p,err_t err):接收服务器数据的函数;

void MCU_to_TCP(void):发送上传数据的指令,调用温湿度数据数组pos_data2[255];

void GETdata(void):发送获取数据的指令;

void recDataAnalyze(void) :解析数据包,并实现控制。

4、上传数据代码详解

上传数据在bsp_dht11.c文件的mainDHT11()函数里,在这里生成需要上传的数据,保存在全局变量pos_data2[255]数组中,该数组在tcp_echoclient.cvoid MCU_to_TCP(void)函数中调用。

image.png 

void MCU_to_TCP(void)函数主要用于上传温湿度数据:

image.png 

3、下发命令代码详解

接收服务器数据是在void GETdata(void)函数中,通过循环查询数据来更新需要控制的命令。例如在另一台设备或者网络助手上传数据{LED1:1}就可以点亮硬件的LED灯。

image.png 

五、产品调试

1、硬件调试

本项目是基于秉火的F429开发板,实现的是以太网连接服务器,所以不需要太多的硬件,只需要一根网线连接开发板和路由器,并在在程序中修改对应路由器的IP地址就可以实现,想看到实时发送和获取的数据,就用串口小助手查看,波特率是115200

image.png 

2、软件调试

1)调试过程综述。

要在网络助手调试成功的指令后再转移到开发板程序中,否则容易出错,当发送的数据不符合格式要求就会报错,从而断开连接,程序中定时断开和连接服务器,防止发送数据时与服务器断开而不能继续发送和获取数据。

2)上报数据调试过程。

在网络助手中输入以下数据控制指令并以选择十六进制发送,如图一:

POST /devices/29702274/datapoints?type=3 HTTP/1.1

api-key:  

TnWg0VdW6kIhU9=6I9AewR=TxKQ=

Host: api.heclouds.com

Content-Length: 10

 

{"LED1":0}

 

3)下发命令调试过程。

在网络助手中输入以下接收数据的指令,点击两次回车键,并以选择十六进制发送,收到的数据如图二:

GET /devices/29702274/datapoints HTTP/1.1

api-key:  TnWg0VdW6kIhU9=6I9AewR=TxKQ=

Host: api.heclouds.com

 

image.pngimage.png 

图一                                           图二

六、第三方云平台能力展示

1、云平台API使用说明

OneNET支持设备采用遵循HTTP协议的数据封装结构以及接口形式等连接平台进行数据传输,用户可以实现终端数据的上传和保存。

平台还支持多种协议:LWM2M(NB-IOT)、EDP、MQTT、HTTP、MODBUS、JT/808、TCP、RGM协议。

2、平台能力展示

1、OneNET在物联网中的基本架构如下图所示,作为PaaS层,OneNET为SaaS层和IaaS层搭建连接桥梁,分别向上下游提供中间层核心能力。

image.png 

2、价值和优势:

高并发可用

· 支撑高并发应用及终端接入,保证可靠服务

· 提供高达99.9%的SLA服务可用性

多协议接入

· 支持多种行业及主流标准协议的设备接入,如LWM2M(NB-IOT)、MQTT、Modbus、EDP、HTTP、JT\T808以及TCP透传等

· 提供多种语言开发SDK,帮助终端快速接入平台

丰富API支持

· 多种API,包括设备增删改查、数据流创建、数据点上传、命令下发等

· 开放的API接口,通过简单的调用快速实现生成应用

快速应用孵化

· 通过拖拽实现基于OneNET的简单应用

· 多种图表展示组件,降低应用开发时间

数据安全存储

· 分布式结构和多重数据保障机制,提供安全的数据存储

· 提供传输加密,保证用户数据360度全方位安全

全方位支撑

· 产品、技术、营销等全方位培训,专业团队全程支持

· 最快反应速度响应客户需求和问题,不间断的售后服务支持

· 强大的品牌实力,为客户提供营销渠道和持续服务能力,共建物联生态圈

3WEB或移动APP展示

WEB展示:

OneNet云平台提供网页应用,用户可以编辑自己的网页应用,可以发布链接,在线实时查看温湿度数据。

image.pngimage.png 

可以使用OneNet的手机APP,登录自己的账号就可以查看上传的数据,下载地址:http://admin.onenet.heclouds.com/dist/shebeiyun_340.apk

image.pngimage.pngimage.png

可以使用TCP助手APP,连接服务器183.230.40.33,端口号为80,连接后可以如图配置按钮需要发送的指令,如图是控制LED灯的指令,APP下载地址:http://shouji.360tpcdn.com/151109/de88dee5a7c569e2c47e0b4b71935974/com.shenyaocn.android.EasyTCP_16.apk

image.pngimage.pngimage.png 

 

 image.pngimage.pngimage.png

 

 

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。