泛协议接入服务SDK使用Java语言开发,使用Netty 4搭建开发框架、Maven构建项目和管理依赖。
泛协议接入SDK与Apache Maven 3.2或更高版本兼容。如果尚未安装Maven,您可以参考 Maven 上的说明进行操作。
泛协议接入SDK依赖关系使用的groupId为com.github.cm-heclouds,通常,您的Maven POM文件从protocol-adapter-parent项目中继承,目前SDK依赖最新版本号为1.0.4。
以下清单显示了一个典型的pom.xml文件(不包含程序打包相关插件):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>protocol-adapter-sdk-example-with-tcp-protocol-hub</artifactId>
<version>1.0.0</version>
<description>泛协议接入SDK使用示例</description>
<parent>
<groupId>com.github.cm-heclouds</groupId>
<artifactId>protocol-adapter-parent</artifactId>
<version>1.0.4</version>
</parent>
<dependencies>
<dependency>
<groupId>com.github.cm-heclouds</groupId>
<artifactId>protocol-adapter-sdk</artifactId>
</dependency>
<dependency>
<groupId>com.github.cm-heclouds</groupId>
<artifactId>protocol-adapter-protocolhub-tcp</artifactId>
</dependency>
<dependency>
<groupId>com.github.cm-heclouds</groupId>
<artifactId>thing-model-code-generator</artifactId>
</dependency>
</dependencies>
</project>
按照以下步骤来进行配置,其中当您使用适配SDK时需要配置1)、2),当您使用TCP协议站时需要配置3):
1).配置泛协议服务相关信息:
新建并将已开通的泛协议接入服务ID(serviceId)和实例相关信息填入src/main/resources/config路径下adapter.conf文件。本示例的配置如下,服务端口被设置为10086,使用非加密通道的方式接入平台。
2).配置文件相关信息:
新建并将已申请的OneNET Studio设备信息按照提示填入src/main/resources/config路径下devices.conf文件。实例中"device"字符串为您真实设备的唯一标识(可以是设备SN、MAC等,您可以自行定义)
3).配置TCP协议站相关信息:
新建并将TCP协议站启动地址和启动端口按照提示填入src/main/resources/config路径下protocolhub-tcp.conf文件。
说明:SDK支持泛协议接入服务配置和设备映射关系配置自定义实现,如数据库读取等,只需实现泛协议接入服务配置信息读取接口或设备映射关系配置信息读取接口,接口文件位置:src/main/java/com/github/cm/heclouds/adapter/config/IAdapterConfig.java以及src/main/java/com/github/cm/heclouds/adapter/config/IDeviceConfig.java。同理,您也可以自定义实现TCP协议站配置。
除了提供通用API外,泛协议接入SDK还提供了自动生成功能点相关的上报和接收方法,同时会为功能点自动生成Java类。 使用方法:
1).您需要先引入物模型代码生成工具相关依赖:
<dependency>
<groupId>com.github.cm-heclouds</groupId>
<artifactId>thing-model-code-generator</artifactId>
<version>1.0.4</version>
</dependency>
2).您需要在产品详情页中导出物模型文件,将物模型文件保存在项目src/main/resources/中的任一位置,在示例代码中,物模型文件保存在项目src/main/resources/config文件夹下;
3).直连设备和网关设备:在任一类的类名上方增加@ThingModelConfiguration注解,填入物模型文件(文件名应为model-${pid}.json)相对于resources文件夹的路径,支持填入多个物模型文件,文件之间使用逗号隔开,如 @ThingModelConfiguration({"config/model-AAWCVR5JIx4hG9V3.json"});
4).子设备:在任一类的类名上方增加@@ChildDevThingModelConfiguration注解,填入物模型文件(文件名应为model-${pid}.json)相对于resources文件夹的路径,支持填入多个物模型文件,文件之间使用逗号隔开,如 @@ChildDevThingModelConfiguration({"config/model-Lu4Qiz60x3.json"});
5).使用Maven Compile编译项目(maven命令为mvn compile)或点击Build – Build Project,建议在每次compile之前先清除编译文件(maven命令为mvn clean),建议使用mvn clean compile命令进行编译;
6).编译完成后会在target/generated-sources/annotations文件夹下类名为Thing+${pid}.java,类结构如下图所示:
您可以直接使用其中的API及常量。
当您使用TCP协议站时需实现com.github.cm.heclouds.adapter.protocolhub.tcp.custom包中的TcpDeviceUpLinkHandler.java接口用以支持处理自定义协议数据的上行业务处理以及自定义协议设备断开连接时的业务处理:
当您使用适配SDK时需实现com.github.cm.heclouds.adapter.handler包中DownLinkRequestHandler.java接口用以支持平台接入机下行数据的业务处理。
详细使用方法可参考Javadoc和示例代码。
1).配置并初始化SDK: 首先,您需要对SDK进行配置,即需要先实例化Config类,如
Config config = new Config(logger);
Config配置参数说明如下,详细使用方法可参考示例代码:
然后,您需要初始化实例化后的Config使相关配置生效,示例代码如下:
config.init();
2).配置并初始化TCP协议站 首先,您需要对TCP协议站进行配置,即需要先实例化TcpProtocolHubConfig类,以后续章节示例代码中的自定义协议编解码为例,如
TcpProtocolHubConfig protocolHubConfig = new TcpProtocolHubConfig(logger) {
@Override
public void addChannelHandlers(ChannelPipeline pipeline) {
pipeline.addLast(new TvlDecoder())
.addLast(TvlEncoder.INSTANCE);
}
};
TcpProtocolHubConfig配置参数说明如下,详细使用方法可参考示例代码:
然后,您需要初始化实例化后的TcpProtocolHubConfig使相关配置生效,示例代码如下:
protocolHubConfig.init();
您可以使用IDE中集成Maven工具,或使用mvn package命令进行打包操作。您可以参考示例代码工程POM文件中提供的打包插件对工程项目进行打包,为便于您对SDK的配置进行修改,示例代码中将打包资源文件(resources)与jar包分离,打包后工程目录结构如下图所示: