建立设备与平台的连接

更新时间:
复制 MD 格式

阿里云物联网平台提供设备端SDK,设备使用SDK与平台建立通信。本文使用平台提供的样例程序data_model_basic_demo,模拟路灯设备进行开发,实现设备与物联网平台的通信。

使用前必读

本文操作步骤以普通用户权限为例。如果您在操作过程中涉及到管理员权限才能执行的操作,可尝试使用sudo命令执行。

准备开发环境

  • 本文使用Linux下的设备端C语言SDK。该SDK的编译环境推荐使用64位的Ubuntu16.04。

  • SDK的开发编译环境会用到以下软件:

    make(4.1及以上版本)、gcc(5.4.0及以上版本)。

    可以使用如下命令行安装:

    sudo apt-get install -y build-essential make gcc

操作步骤

  1. 获取设备端C语言SDK。

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

    2. 在控制台左上方,选择物联网平台所在地域,然后在实例概览页签,单击公共实例

    3. 在左侧导航栏单击文档与工具,然后在设备接入SDK区域的Link SDK下,单击SDK定制

    4. 定制SDK并下载。

      SDK生成页面设置以下参数:

      • SDK版本:选择 v4.x

      • 设备OS:选择 Linux

      • 设备硬件形态:选择 单板系统

      • 连接物联网平台协议:勾选 MQTT,版本选择 3.1.1

      • 数据加密:选择 TLS-CA

      • 设备认证方案:选择 设备密钥

      • 高级能力:选择 物模型

      设置完成后,单击开始生成,SDK 的 ZIP 文件将下载到本地。

  2. 解压本地的C语言SDK文件,修改SDK中的设备证书信息。

    请单击data_model_basic_demo.c下载data_model_basic_demo.c文件,替换掉\LinkSDK\demos路径下的data_model_basic_demo.c文件,然后修改以下参数。

    char *product_key       = "a2***";
    char *device_name       = "device1";
    char *device_secret     = "8c684ef***";
    ...
    ...
    char  *mqtt_host = "a2***.iot-as-mqtt.cn-shanghai.aliyuncs.com";

    参数

    示例

    说明

    mqtt_host

    • 新版公共实例的示例:iot-cn-***.mqtt.iothub.aliyuncs.com

    • 旧版公共实例的示例:a2***.iot-as-mqtt.cn-shanghai.aliyuncs.com

    设备的MQTT接入域名。

    • 新版公共实例:在实例详情页面单击右上方的查看开发配置,在开发配置面板查看接入域名。

    • 旧版公共实例:接入域名格式为${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com

    实例的更多详细说明,请参见查看实例终端节点

    product_key

    a2***

    设备认证信息。即完成添加设备后,您保存至本地的设备证书。

    您也可以在物联网平台的设备详情页查看设备的认证信息。更多信息,请参见获取设备认证信息

    device_name

    device1

    device_secret

    8c684ef***

  3. 登录Linux虚拟机,执行以下命令,安装所需软件。

    sudo apt-get install -y build-essential make gcc
  4. 将步骤2中已修改完成的LinkSDK文件,上传至Linux虚拟机的开发环境。

  5. SDK根目录/LinkSDK下,执行make命令,完成样例程序的编译。

    make clean
    make

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

  6. 运行样例程序。

    ./output/data-model-basic-demo

    运行成功后,终端输出如下:

    root@xxx:~/linkSDK# ./output/data-model-basic-demo
    [1637041632.700][LK-0313] MQTT user calls aiot_mqtt_connect api, connect
    [1637041632.700][LK-032A] mqtt host: axxx.iot-as-mqtt.cn-shanghai.aliyuncs.com
    [1637041632.700][LK-0317] user name: device1&axxx,0
    [1637041632.700][LK-0318] password: 86761xxx¥21D
    establish tcp connection with server(host='axxx.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])
    success to establish tcp, fd=3
    local port: 35604
    [1637041632.711][LK-1000] establish mbedtls connection with server(host='axxx.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])
    [1637041632.766][LK-1000] success to establish mbedtls connection, (cost 45252 bytes in total, max used 47988 bytes)
    [1637041632.811][LK-0313] MQTT connect success in 108 ms
    AIOT_MQTTEVT_CONNECT
    [1637041632.811][LK-0309] pub: /sys/axxx/device1/thing/event/property/post
    
    [LK-030A] > 7B 22 69 64 22 3A 22 31  22 2C 22 76 65 72 73 69 | {"id":"1","versi
    [LK-030A] > 6F 6E 22 3A 22 31 2E 30  22 2C 22 70 61 72 61 6D | on":"1.0","param
    [LK-030A] > 73 22 3A 7B 22 4C 69 67  68 74 43 75 72 72 65 6E | s":{"LightCurren
    [LK-030A] > 74 22 3A 20 31 2E 35 7D  2C 22 73 79 73 22 3A 7B | t": 1.5},"sys":{
    [LK-030A] > 22 61 63 6B 22 3A 31 7D  7D                       | "ack":1}}
    
    [1637041632.833][LK-0309] pub: /sys/axxx/device1/thing/event/property/post_reply
    
    [LK-030A] < 7B 22 63 6F 64 65 22 3A  32 30 30 2C 22 64 61 74 | {"code":200,"dat
    [LK-030A] < 61 22 3A 7B 7D 2C 22 69  64 22 3A 22 31 22 2C 22 | a":{},"id":"1","
    [LK-030A] < 6D 65 73 73 61 67 65 22  3A 22 73 75 63 63 65 73 | message":"succes
    [LK-030A] < 73 22 2C 22 6D 65 74 68  6F 64 22 3A 22 74 68 69 | s","method":"thi
    [LK-030A] < 6E 67 2E 65 76 65 6E 74  2E 70 72 6F 70 65 72 74 | ng.event.propert
    [LK-030A] < 79 2E 70 6F 73 74 22 2C  22 76 65 72 73 69 6F 6E | y.post","version
    [LK-030A] < 22 3A 22 31 2E 30 22 7D                           | ":"1.0"}
    
    [1637041632.833][LK-0A08] DM recv generic reply
    demo_dm_recv_handler, type = 0
    msg_id = 1, code = 200, data = {}, message = success
  7. 登录物联网平台控制台,进入公共实例页面,查看设备状态和运行状态。

    • 左侧导航栏选择设备管理 > 设备,在设备列表页面通过 DeviceName 搜索框输入 device1 搜索目标设备。设备状态显示为在线,则表示设备与物联网平台成功连接。

    • 单击设备对应操作栏的查看,进入设备详情页面,单击物模型数据页签,然后单击运行状态,查看设备的运行状态。

      data_model_basic_demo.c文件中代码示例,上报了工作电流的值。

      运行状态页签中,工作电流属性显示值为 1.5 A,表示设备已成功上报该属性值。

后续步骤

服务端订阅设备消息