本文以使用Github开源工程为例,介绍使用GB/T 32960协议的车辆设备,通过物联网平台云网关接入阿里云物联网平台进行通信。
前提条件
背景信息
物联网平台提供GB/T 32960协议云网关功能,支持通过TCP(安全性低,不推荐)和TLS两种方式接入设备。采用TLS方式接入时,支持使用服务端单向认证、设备端OCSP、设备和服务端双向安全接入等能力。
本文使用一方认证的TLS方式,介绍GB/T 32960协议设备的接入示例。
GB/T 32960协议云网关设备认证和通信说明,请参见GB/T 32960协议云网关概述。
Github上已有GB/T 32960协议客户端的开源代码。具体内容,请参见Github的开源项目。
准备环境
本示例使用Git命令下载开源代码,并使用Patch命令进行补丁。因此,您的操作系统需安装支持使用Git和Patch命令。
本示例使用Java语言开发设备程序,准备Java开发环境如下:
JDK版本:JDK8
集成开发环境:IntelliJ IDEA社区版
下载开源代码
本示例对开源的Demo做了简化,需要打上Patch文件。具体操作如下:
执行以下命令,获取到Demo文件
tsp
。git clone https://github.com/zhengyishan/tsp.git cd tsp git checkout 5ef2907b7160f74cf4948b641d75fccd50c5dd6a -b demo_branch
下载Patch文件:
gb32960.patch
,保存在Demo文件tsp
目录下。继续执行以下命令,完成Demo文件
tsp
补丁。patch -p1 < gb32960.patch
创建云网关产品和设备
添加云网关设备
在左侧导航栏选择设备管理>产品,找到已创建的云网关产品,单击右侧操作列的管理设备。
在设备页面,单击批量添加。
在批量添加设备对话框,单击下载.csv模板下载表格模板。
在模板中填写VIN值(例如:device10000000001),然后保存为
.csv
后缀文件。重要VIN为车辆识别代码,支持英文字母和数字,长度限制为17个字符。
回到批量添加设备对话框,单击上传文件,将填好的文件上传至物联网平台控制台,单击确认。
设备身份导入成功后,物联网平台会以上传的VIN值,作为设备名称创建对应设备,设备列表显示已创建的设备信息。
开发设备端程序
创建设备信息后,需开发设备端程序,将设备接入物联网平台。本示例以接入设备device10000000001为例,使用Java SDK开发设备连接物联网平台。
打开IntelliJ IDEA,导入已获取的Demo:tsp。
在工程的
/dyy-gateway-tcu/src/main/resources
路径下导入根证书文件:root-ca.crt
。打开工程的
/dyy-gateway-tcu/src/main/java/com/dyy/tsp/gateway/tcu/config/TcuProperties.java
文件,修改设备接入的相关参数。以下参数必须修改为实际参数值,其他参数值根据实际需要自定义。
//网关域名 TODO:需要替换为您的云网关实例的域名 private String gatewayHost = "iot-*******.igw.iothub.aliyuncs.com"; //网关端口 TODO:需要替换为您的云网关实例的端口号 private Integer gatewayPort = 8999; //根证书root-ca.crt的路径位置 private String CA_PATH = "dyy-gateway-tcu/src/main/resources/root-ca.crt"; //车辆识别代码. 长度为17个字节。TODO: 需要替换为您车辆的vin号,并在控制台以此vin号创建设备 private String vin = "device10000000001";
参数
示例
说明
gatewayHost
iot-*******.igw.iothub.aliyuncs.com
GB/T 32960协议云网关的接入地址。
即已创建云网关产品的网关URL中域名。
gatewayPort
8999
云网关接入地址的自定义端口号,默认为
8999
。即已创建云网关产品的网关URL中端口号。
CA_PATH
dyy-gateway-tcu/src/main/resources/root-ca.crt
根证书文件
root-ca.crt
在工程下的绝对路径。vin
device10000000001
车辆识别代码,即已创建云网关设备的VIN。
在工程的
/dyy-gateway-tcu/src/main/java/com/dyy/tsp/gateway/tcu/handler/BusinessHandler.java
文件中,提供了车辆登入、上报心跳、上报实时数据、车辆注销的逻辑代码。您可以修改此文件,实现更多功能。
运行设备程序
在IntelliJ IDEA中,选择File>Project Structure。
选择Project SDK为1.8 版本,单击Apply。
单击OK。
运行文件
TcuApplication.java
的主程序。设备与服务端进行双向认证成功,设备在线。
查看运行日志
设备端运行日志
设备程序运行后,会打印设备上下行报文的详细信息:
车辆登入(login)的请求报文,其中报文的第三、第四字节
01 fe
表示车辆请求登入。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 01 fe 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 1e 17 05 06 10 23 19 00 01 |00001.......#...| |00000020| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 |1234567890123456| |00000030| 37 38 39 30 00 00 ee |7890... | +--------+-------------------------------------------------+----------------+
服务端对设备login的回复报文,其中报文的第三、第四字节
01 01
表示车辆登入成功。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 01 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 1e 17 05 06 10 23 19 00 01 |00001.......#...| |00000020| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 |1234567890123456| |00000030| 37 38 39 30 00 00 11 |7890... | +--------+-------------------------------------------------+----------------+
设备上报心跳的报文,其中报文的第三、第四字节
07 fe
表示该报文为上行的心跳。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 07 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 00 36 |00001...6 | +--------+-------------------------------------------------+----------------+
服务端对心跳报文的回复,其中报文的第三、第四字节
07 01
表示该报文为下行的心跳。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 07 01 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 00 36 |00001...6 | +--------+-------------------------------------------------+----------------+
设备上报实际数据,其中报文的第三、第四字节
02 fe
表示实时数据上报。+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 23 23 02 fe 31 32 33 34 35 36 37 38 39 30 31 32 |##..device100000| |00000010| 33 34 35 36 37 01 00 14 17 05 06 10 23 23 08 01 |00001.......##..| |00000020| 01 00 05 00 06 00 04 00 07 01 00 0a df |............. | +--------+-------------------------------------------------+----------------+
云端运行日志
在物联网平台控制台实例下的监控运维 > 日志服务页面,查看设备上报数据。
具体操作,请参见云端运行日志。