JT/T 808协议云网关设备接入示例(一方认证)

本文以JT/T 808协议云网关一方认证的方式为例,介绍如何将JT/T 808协议设备接入物联网平台。

前提条件

已购买尊享型企业版实例。本示例购买华东2(上海)地域的尊享型实例。具体操作,请参见购买企业版实例

背景信息

物联网平台的JT/T 808协议云网关功能支持通过TCP(安全性低,不推荐)和TLS两种方式接入设备。采用TLS方式接入时,支持使用服务端单向认证、设备端OCSP、设备和服务端双向安全接入等能力。本文使用一方认证的TLS(推荐)和TCP(不推荐)方式,介绍JT/T 808协议设备的接入示例。

准备工作

本文设备端开发示例使用开发环境:Ubuntu 22.04版本操作系统。

接入示例(TLS,推荐)

自定义证书

本文示例需自定义证书包含:根证书root-ca.crt、服务端证书私钥server.key和服务端证书server.crt

您可以使用OpenSSL工具生成自定义证书,制作方法,请参见生成自定义证书

创建云网关产品

  1. 登录物联网平台控制台

  2. 在控制台左上方,选择物联网平台所在地域。

  3. 实例概览页面,单击目标尊享型实例。

  4. 在左侧导航栏,选择设备管理>云网关,单击添加云网关

  5. 在对话框中配置如下参数,如下图所示,服务端证书私钥server.key服务端证书server.crt,然后单击确认

    配置参数的详细说明,请参见创建云网关产品(JT/T 808)

    image
  6. 云网关创建完成后,在云网关列表,复制网关URL保存。

    image

添加云网关设备

  1. 在左侧导航栏选择设备管理>产品,找到已创建的云网关产品,单击右侧操作列的管理设备

  2. 设备页面,单击批量添加

  3. 批量添加设备对话框,单击下载.csv模板下载表格模板。

    image
  4. 在模板中填写Manufacturer ID、Terminal Model和Terminal ID,如下图所示,然后保存文件。

    参数填写说明,请参见创建云网关设备(JT/T 808)

    image
  5. 回到批量添加设备对话框,单击上传文件,将填好的文件上传至物联网平台控制台,单击确认

    image

    设备身份导入成功后,物联网平台会以上传的Manufacturer IDTerminal ModelTerminal ID值,拼接成${Manufacturer ID}_${Terminal Model}_${Terminal ID}作为设备名称创建对应设备,设备列表显示已创建的设备信息。

    image

开发设备端程序

创建设备信息后,需开发设备端程序,将设备接入物联网平台。 物联网平台提供JT/T 808协议的C语言SDK,本示例以接入设备AliyunIoT_TestModel_device1为例,使用 C SDK开发设备连接物联网平台。

  1. 下载JT/T 808协议的C语言SDK,然后解压文件出jt808-c-sdk

  2. jt808-c-sdk/jt808_tls_demo.c文件中,修改设备接入和认证的信息。

    说明

    jt808_tls_demo.c程序文件用于开发TLS方式的设备接入。

    ......
    /* TODO: 替换为真实的设备信息,省份,城市,厂家,型号,终端ID、颜色、车牌号 */
    static jt808_register_t info = {
        .province = 0x1234,
        .city = 0x4567,
        .manufacturer = "AliyunIoT",
        .model = "TestModel",
        .terminal = "device1",
        .colour = 1,
        .lisence = "浙C*****",
    };
    /* TODO: 绑定的手机号 */
    static char *moible_num = "1*********8";
    
    /* TODO: 替换为云网关接入点域名和端口 */
    static char *host = "iot-0******.igw.iothub.aliyuncs.com";
    static uint16_t port = 7999;
    
    /* 接入点自定义根证书 */
    const char *jt808_ca_cert = \
    {
        \
        "-----BEGIN CERTIFICATE-----\r\n"
        "MIIDR*************************************************ZIhvcNAQEL\r\n"
        "BQAwM*************************************************ANBgNVBAMM\r\n"
        "BklvV*************************************************MxCzAJBgNV\r\n"
        "BAYTA*************************************************QgQ0EwggEi\r\n"
        "MA0GC*************************************************S8fWxBF+lw\r\n"
        "8GKH7*************************************************3Xco/COMjP\r\n"
        "Q69QH*************************************************wuYc0WMjlS\r\n"
        "cNO7G*************************************************BABPEIJeLR\r\n"
        "c6rJ7*************************************************F8nDOm0kUd\r\n"
        "kvAdK*************************************************t6BEh9AgMB\r\n"
        "AAGjU*************************************************NVHSMEGDAW\r\n"
        "gBT4S*************************************************0GCSqGSIb3\r\n"
        "DQEBC*************************************************+I42UNjbJa\r\n"
        "ZP9bn*************************************************G+S/Tv6BEn\r\n"
        "2v1/V*************************************************zNWlwapdvp\r\n"
        "DRMmf*************************************************Vh/FVBa7gn\r\n"
        "9DWlU*************************************************AGz0HkVQq6\r\n"
        "Ks4UI***************************Vzd+\r\n"
        "-----END CERTIFICATE-----\r\n" 
    };
    ......

    参数

    说明

    province

    设备所在省域和城市,取值符合JT/T 808的2019版本协议要求。

    city

    manufacturer

    在物联网平台添加的云网关设备的Manufacturer ID、Terminal Model和Terminal ID。

    model

    terminal

    colour

    车牌的颜色、车牌号,及设备所属用户的手机号。车牌的颜色、车牌号取值符合JT/T 808的2019版本协议要求。

    lisence

    moible_num

    host

    JT/T 808协议云网关的接入地址,即已创建云网关产品的网关URL中域名。

    port

    设置为自定义端口号,默认为7999

    jt808_ca_cert

    设置为根证书root-ca.crt的内容。

  3. 登录Ubuntu操作系统,然后上传已经修改的jt808-c-sdk文件。

    image
  4. 在根目录/jt808-c-sdk下,执行make命令,完成样例程序的编译。

    make clean
    make

    生成的样例程序jt808-tls-demo存放在./output目录下。

  5. 运行样例程序。

    ./output/jt808-tls-demo

    运行成功后,设备在线,上报数据,如下图所示:

    image
  6. 返回到物联网平台控制台的对应实例下,在左侧导航栏选择设备管理 > 设备,找到目标设备,查看设备状态。设备状态显示为在线,则表示设备与物联网平台成功连接。

    image
  7. 在左侧导航栏选择监控运维 > 日志服务,选择目标产品,查看设备到云消息

    image

接入示例(TCP,不推荐)

创建云网关产品和设备

  1. 创建云网关产品(JT/T 808):配置如下图所示。

    image
  2. 云网关创建完成后,在云网关列表,复制网关URL保存。

    image
  3. 创建云网关设备(JT/T 808):添加设备如下所示。

    image

开发设备端程序

物联网平台提供JT/T 808协议的C语言SDK,本示例以接入设备AliyunIoT_TestModel_device1为例,使用 C SDK开发设备连接物联网平台。

  1. 下载JT/T 808协议的C语言SDK,然后解压文件出jt808-c-sdk

  2. jt808-c-sdk/jt808_basic_demo.c文件中,修改设备接入和认证的信息。

    说明

    jt808_basic_demo.c程序文件用于开发TCP方式的设备接入。

    ......
    /* TODO: 替换为真实的设备信息,省份,城市,厂家,型号,终端ID、颜色、车牌号 */
    static jt808_register_t info = {
        .province = 0x1234,
        .city = 0x4567,
        .manufacturer = "AliyunIoT",
        .model = "TestModel",
        .terminal = "device1",
        .colour = 1,
        .lisence = "浙A*****",
    };
    /* TODO: 绑定的手机号 */
    static char *moible_num = "1**********";
    
    /* TODO: 替换为云网关接入点域名和端口 */
    static char *host = "iot-0******v-0****0.igw.iothub.aliyuncs.com";
    static uint16_t port = 7999;
    ......
  3. 登录Ubuntu操作系统,然后上传已经修改的jt808-c-sdk文件。

  4. 在根目录/jt808-c-sdk下,执行make命令,完成样例程序的编译。

    make clean
    make

    生成的样例程序jt808-basic-demo存放在./output目录下。

  5. 运行样例程序。

    ./output/jt808-basic-demo

    运行成功后,设备在线,上报数据,如下图所示:

    image

    您可返回到物联网平台控制台的对应实例下,查看设备状态和通信日志。