阿里云物联网平台提供设备端SDK,设备使用SDK与平台建立通信。在这一步里,我们使用平台提供的样例程序linkkit-example-solo模拟设备进行开发,实现设备与物联网平台的通信。

背景信息

  • 本示例使用Linux下的设备端C语言SDK 3.0.1版。该SDK的编译环境推荐使用64位的Ubuntu16.04。
  • SDK的开发编译环境会用到以下软件:

    make-4.1、git-2.7.4、gcc-5.4.0、gcov-5.4.0、lcov-1.12、bash-4.3.48、tar-1.28和mingw-5.3.1。

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

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

操作步骤

  1. 登录Linux虚拟机。
  2. 获取设备端C SDK 3.0.1版
  3. 使用unzip命令解压压缩包。
  4. 设备身份信息将通过HAL调用返回给SDK。因此,需要将wrappers/os/ubuntu/HAL_OS_linux.c中的设备证书信息修改为创建产品与设备步骤中创建的设备证书,完成后保存退出。

    如下所示,填入ProductKey、DeviceName和DeviceSecret。设备使用该证书进行身份认证并连接物联网平台。

    说明 快速入门中使用一机一密的认证方式,ProductSecret可以不填。
    #ifdef DEVICE_MODEL_ENABLED
        char _product_key[IOTX_PRODUCT_KEY_LEN + 1]       = "a1zluR09***";
        char _product_secret[IOTX_PRODUCT_SECRET_LEN + 1] = "";
        char _device_name[IOTX_DEVICE_NAME_LEN + 1]       = "device1";
        char _device_secret[IOTX_DEVICE_SECRET_LEN + 1]   = "ynNudfEadSdoy7RMUJD9WZhEvd7****";
  5. 若您的产品不是创建在华东2(上海)地域的公共实例中,则在src/dev_model/examples/linkkit_example_solo.c,找到如下位置。
        /* post reply doesn't need */
        post_reply_need = 1;
        IOT_Ioctl(IOTX_IOCTL_RECV_EVENT_REPLY, (void *)&post_reply_need);
    
        /* Create Master Device Resources */
        g_user_example_ctx.master_devid = IOT_Linkkit_Open(IOTX_LINKKIT_DEV_TYPE_MASTER, &master_meta_info);
        if (g_user_example_ctx.master_devid < 0) {
            EXAMPLE_TRACE("IOT_Linkkit_Open Failed\n");
            return -1;
        }

    在该位置按以下方法增加您的MQTT接入点信息,完成后保存退出。

        /* post reply doesn't need */
        post_reply_need = 1;
        IOT_Ioctl(IOTX_IOCTL_RECV_EVENT_REPLY, (void *)&post_reply_need);
    
        //填写您的实例的MQTT接入域名,请登录物联网平台控制台,找到并单击对应的实例,进入实例详情页查看。
        char custom_domain[] = "${YourEndpoint}"; 
        IOT_Ioctl(IOTX_IOCTL_SET_MQTT_DOMAIN, (void *)custom_domain);
    
        /* Create Master Device Resources */
        g_user_example_ctx.master_devid = IOT_Linkkit_Open(IOTX_LINKKIT_DEV_TYPE_MASTER, &master_meta_info);
        if (g_user_example_ctx.master_devid < 0) {
            EXAMPLE_TRACE("IOT_Linkkit_Open Failed\n");
            return -1;
        }
  6. 在SDK根目录,执行make命令,完成样例程序的编译。
    make distclean
    make

    生成的样例程序linkkit-example-solo存放在./output/release/bin目录下。

  7. 运行样例程序。
    ./output/release/bin/linkkit-example-solo

    登录物联网平台控制台,在对应实例下,设备状态显示为在线,则表示设备与物联网平台成功连接。

    设备上线成功后,会自动向物联网平台上报消息。您可以通过查看日志,获取具体内容。

后续步骤

服务端订阅设备消息