【OC平台】编解码插件离线开发教程【一】
本文通过一个比较简单又不失全面的例子,说明一下华为IoT平台编解码插件线下开发的整个开发流程。对于环境的搭建尽量一笔带过,对核心编码部分做比较详细的讲解。第二章Profile部分会先出给一个小例子作为demo,编解码的编写按照该pfofile中定义的字段来解析,以方便大家理解编解码插件中的代码。本文编写过程中主要参考了“华为IoT平台NB-IoT设备集成开发指南.pdf”。
(教程篇幅较长,分两篇来介绍:本文为第一篇,介绍下环境搭建和样例profile;第二篇介绍下插件的编写)
一、环境搭建
开发编解码插件使用的IDE是eclipse,语言是Java。本文尽量以简单的方式告诉你如何将华为提供的编解码样例修改为适合自己的编解码插件。即使你没有什么Java基础,只要懂得编程逻辑就好。跟着一起来吧!
1、安装JDK
JDK版本1.8以上。参考网络教程:
https://blog.csdn.net/u012934325/article/details/73441617/
2、安装eclipse
下载并安装eclipse。eclipse下载后解压缩到本地即可运行。
https://www.eclipse.org/downloads/
3、安装Maven
下载地址是: http://maven.apache.org/download.cgi
下载后的文件解压缩即可,然后添加环境变量。请参考:
https://www.cnblogs.com/liuhongfeng/p/5057827.html
在eclipse中配置maven插件。打开eclipse,点击window->Preferences,弹出如下窗口
图1 Maven配置1
在弹出的窗口左侧栏中,依次找到并点击Maven->Installations,在右侧点击Add按钮,弹出如下图所示窗口:
图2 Maven配置2
点击Directory,选择Maven的路径,然后Finish。到此,Maven配置完成。
二、 Profile说明
Profile实际上是一系列关于设备模型的描述文件,每个文件都使用JSON格式(键值对)。
Profile中首先需要说明设备的基本信息,包括厂商ID,厂商名称,设备类型,接入协议,以及设备可以提供的哪些服务等;其次,profile中要针对每一项服务,用一个独立的文件进行详细描述。服务,可以理解为是对设备消息(上下行)功能的一个分类,一个服务就代表一类功能;每个服务下包含若干属性和命令,每个属性对应上报消息中的某一个数据,每个命令字段则对应下行消息中的某些字段。比如,一个电表设备,会上报电池电量、功率、电能、电压等,可以将电池电量放在Battery服务中,属性值为batteryLevel,将功率、电能、电压都放在Transmission服务中,分别对应该服务下的Power、Energy、Voltage属性。可以在一条消息中上报所有服务的所有属性,也可以分开上报。
本例中提供的profile信息,基本信息如下:
设备类型: MyType
设备型号: MyModel
厂商ID : ThirdParty
厂商名称: ThirdParty
协议 : Coap
数据服务有两项:Battery,包含一个属性BatteryLevel,两个字节;Transmission,包含一个属性upData,不定长数组(profile中表示不定长数组,需将属性类型定义为string,长度设为一个比较大的数);包含一条下行命令CLOUDREQ,有两个命令字段;cmdType,一个字节;downData,不定长数组。
profile采用在线开发的方式,如下图所示:
图3 设备信息
图4 服务(service)
本例中,采用一条消息上报所有服务属性的方式。上报数据格式为:前两个字节表示batteryLevel属性,大端方式;第三个字节表示后续数据长度;第四个字节至最后,表示upData属性。下行命令数据格式为:第一个字节表示cmdType;第二个字节至最后,表示downData。(请仔细理解该数据格式,插件的编写就是按照数据格式解析出对应的属性值)。
本例中,采用一条消息上报所有服务属性的方式。上报数据格式为:前两个字节表示batteryLevel属性,大端方式;第三个字节表示后续数据长度;第四个字节至最后,表示upData属性。下行命令数据格式为:第一个字节表示cmdType;第二个字节至最后,表示downData。(请仔细理解该数据格式,插件的编写就是按照数据格式解析出对应的属性值)。
附件中为profile,可参考。
注意:由于教程编写较早,以前的平台厂商定义自己的厂商ID;现在,厂商ID是由平台自动生成的。
- 点赞
- 收藏
- 关注作者
评论(0)