建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

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

确定
我再想想
选择版块

六斤

发帖: 28粉丝: 20

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-11-12 11:32:28 3911 3 楼主 显示全部楼层
[新闻信息] 【LiteOS黑客松优秀作品】2018上海站一等奖——NB-IoT Traker项目分享

原文转载至:利尔达团队王世东 分享

项目详细介绍及成果展示请在一楼附件下载:)


小伙伴们,大家好!很荣幸能参加这次LiteOS黑客松上海站的比赛。欢迎小伙伴们来围观,参赛产品是基于华为世界首款NB芯片Bodica120,利尔达自主研发的NB模块制作的开发板---NB-EVK(功能很强大哦,集成利尔达NB05-01模组,三轴传感器,光感传感器,压力传感器和温湿度传感器,主控为stm32L431。嗯,这里就是广告 )。

《--------------------------------------------这是一条很诡异的分割线--------------------------------------------------------------》
开始我们的主题:
一,如何接入强大的OC平台:

  • 第一步编写profile文件:首先,研究了WaterMeter模版之后,和公共事业编写指南,会有一个整体的思路。整体的框架分为两个部分,一个profile文件和一个service文件。profile文件主要包含了设备类型,模组类型,厂商ID和厂商名称(这里要注意,厂商ID不能重复,编写编解码插件的时候配置pom.xml文件时,需要配置好指定的厂商ID,设备信息等),服务信息等字段。服务信息,格式为:

    "serviceId": "WaterMeterBasic",
                        "serviceType": "WaterMeterBasic",
                        "option": "Mandatory"



    字段信息有三个:“serviceID”:服务的ID;“serviceType”:服务类型;“option”:有可选服务,主服务,必选服务三个字段可选,具体可以参考公共事业编写指南。然后就是service文件的编写,具体字段可以参考---《华为IoT设备能力描述文件Profile开发指南.pdf》。profile就介绍到这里。本次参加比赛的作品profile是基于我们自己的制定的通信协议编写的,有七个服务,具体的代码就不贴了。好了,profile文件的编写就介绍到这里了。

  • 第二步,编写编解码插件:在华为开发者资源中心里面,找到华为NB-IoT设备编解码插件样例,下载下来。发现是一个maven工程,首先要安装java环境,下载eclipse软件,这里的操作我就不详细介绍了,可以参考公共事业编写指南(华为的指导文件写的很详细,按照流程来就能很快上手的,如果有不理解的地方,可以在华为开发者中心里面提单,华为的工作人员会很快答复你的)。接下来简单的介绍参赛作品的编解码插件:根据公共事业编写指南,修改pom.xml文件,修改包明名称(名称严格按照格式来命名deviceID-厂商ID-moduleType命名)。然后编写ProtocolAdapterImpl.java文件,配置你的deviceID,厂商ID的信息,接着编写encode和decode接口,主要就是根据你的profile来编写。了解Json数据格式的朋友对这块应该很容易理解,不了解的朋友可以先去了解下Json格式。相信了解了之后会很容易理解的。代码逻辑处理完之后,就要对maven文件进行部署,打开Windows DOS窗口,(没有安装maven环境的小伙伴可以百度一下maven配置教程),配置好环境之后可以输入寻找到pom.xml文件的目录,输入 mvn package(不知道maven命令的话可以参考这个帖子https://www.cnblogs.com/adolfmc/archive/2012/07/31/2616908.html),打包成功,就能利用编解码插件检测工具进行检测,根据错误码,一步步排除错误信息。我在打包之后也是遇到了很多问题,第一次编写还是会有很多错误,耐心修改就能搞定的。我们作品解析了七条服务,打包成对应的Json格式。有两条命令,和平台响应码。编解码插件就简单介绍到这里了。

  • 第三步,对接OC平台,首先要申请华为开发者帐号,申请实验室环境,或者申请开发者portal。申请到之后,如果是sp portal,就要联系华为管理员,帮你上传编解码插件,要给的资料为签名打包的编解码插件软件包,软件包格式根据公共事业编写指南里面给的说明打包,还有你的公钥文件,就可以了,不知道怎么联系华为管理员的小伙伴可以在提单里面说明需求,会有对应的人来对接你。上传编解码插件成功后,需要自己上传profile文件;如果是开发者portal就可以在线上编写和自动部署编解码插件。

  • 第四步,移植LiteOS操作系统:在研究了LiteOS操作系统后,参考了stm32L476的移植例子,进行开发板的LiteOS操作系统移植。在移植之前,首先要下载stm32L4的HAL库文件,我之前一直使用STM32Cube_FW_L4_V1.9.0,就用这个库来进行移植。可在http://www.huawei.com/minisite/liteos/cn/index.html下载说明文件,依样画葫芦。然后根据自己开发板的资源,编写底层驱动,LiteOS例程是根据官方开发板来集成了一些基本的底层驱动,比如按键和LED等。这里时钟的配置需要特别注意,在platform文件下的los_bsp_adapter.c里面要配置对应的系统时钟,这里建议用CubeMAX直接配置时钟,然后把对应的值填写到对应的参数里。这些工作都做完之后,需要编写下简单的程序进行测试。我开辟了两个线程,让开发板的红灯和绿灯轮流闪烁,这里主要用到LiteOS软件定时器组建。测试通过之后,就可以继续愉快的编写代码了。从简单的开始,初始化NB模块,配置CoAP模式。创建一个线程,定时触发NB上报一条数据,当然这当中也不是一帆风顺的,中间遇到了很多问题,请教了华为的工程师,一步步发现问题,解决问题。最后,终于可以顺利上报数据到OC平台上报完成了,那就来处理接受下发命令,开辟另一个线程,处理下发。测试到此结束,接下来就要开始编写自己的业务逻辑(这里具体逻辑我也不详细说明了,请谅解)。

  • 第五步,北向应用实现:采用PHP搭建服务器,调用华为的API接口,调用平台数据,这里使用Https协议有一个比较麻烦的问题,就是证书的问题,这里也可以在开发者中心里面提单提出问题,华为的工程师会很快回复解决你的问题(再次感谢华为工程师)。调用接口成功后,就可以看到平台推送的消息,服务器解析平台的Json数据。为了使得app兼容UDP和CoAP协议,经过一段时间的研究讨论,通过把数据往队列里面排,推送给app,app再根据我们制定的通信协议解析数据,调用高德地图,从而显示定位信息。

  • 参赛作品简单的展示:

  

 


举报
分享

分享文章到朋友圈

分享文章到微博

六斤

发帖: 28粉丝: 20

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-11-12 11:37:23 沙发 显示全部楼层

Huawei LiteOS Hackathon上海站项目分享-一等奖-利尔达NB-IoT Tracker团队.pdf( 预览 )


项目详细介绍、应用场景、成果展示请见附件

点赞 引用 举报

todd

发帖: 0粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-7-17 09:25:23 板凳 显示全部楼层

无法下载!

点赞 引用 举报

秦玉安

发帖: 3粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-7-18 08:49:32 地板 显示全部楼层

无法下载附件

点赞 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册