Linux设备接入物联网平台
更新时间:
复制为 MD 格式
阿里云提供的设备端C语言SDK可以直接运行于Linux系统,并通过MQTT协议接入物联网平台。本文以在Ubuntu x86_64系统上编译设备端C语言SDK为例,介绍设备上云的配置和开发过程。
背景信息
有关设备端C语言SDK详细信息,请参见概述。创建产品和设备
- 登录物联网平台控制台。
在实例概览页签的全部环境下,找到对应的实例,单击实例卡片。
- 在左侧导航栏,选择,再单击创建产品,创建一个产品。
参数 说明 产品名称 自定义产品名称。 所属品类 选择自定义品类。 节点类型 选择直连设备。 连网方式 选择Wi-Fi。 数据格式 选择ICA标准数据格式(Alink JSON)。 认证方式 选择设备密钥。 - 在左侧导航栏,选择设备,再单击添加设备,在刚创建的产品下添加设备。
设备创建成功后,获取设备证书信息(ProductKey、DeviceName和DeviceSecret)。
定义产品物模型
物联网平台提供的设备端C SDK Demo包中,包含一个完整的物模型JSON文件。本示例中,导入该物模型文件,生成产品的物模型。
- 编辑物模型文件。
- 下载C SDK 3.2版本设备端SDK文件包。下载地址,请参见C SDK 3.2。
- 解压SDK压缩包后,打开src/dev_model/examples目录下的model_for_examples.json文件。
- 将物模型JSON文件中的productKey的值替换为您在物联网平台上创建产品的ProductKey值,然后保存文件。
{ "schema":"https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json", "profile":{ "productKey":"a1xxx" }, "services":[...] }
- 在物联网平台控制台对应实例的产品页,找到之前创建的产品,单击对应的查看。
- 在产品详情页面的功能定义页签下,单击。
- 在弹出的对话框中,选择导入物模型,上传已编辑好的物模型JSON文件,单击确定。
导入成功后,该文件定义的所有功能将显示在自定义功能列表中。
- 单击发布上线,将物模型发布为正式版。
配置SDK
将设备端SDK文件导入您的开发环境中,并修改配置文件中的信息为您的设备信息。
- 在SDK文件的wrappers/os/ubuntu目录下HAL_OS_linux.c文件中,修改设备证书信息为您的设备证书信息。
#include "infra_config.h" #include "infra_compat.h" #include "infra_defs.h" #include "wrappers_defs.h" #define PLATFORM_WAIT_INFINITE (~0) #ifdef DYNAMIC_REGISTER char _product_key[IOTX_PRODUCT_KEY_LEN + 1] = "xxx"; char _product_secret[IOTX_PRODUCT_SECRET_LEN + 1] = "xxx"; char _device_name[IOTX_DEVICE_NAME_LEN + 1] = "xxx"; char _device_secret[IOTX_DEVICE_SECRET_LEN + 1] = ""; #else #ifdef DEVICE_MODEL_ENABLED char _product_key[IOTX_PRODUCT_KEY_LEN + 1] = "a1Oyxxx"; char _product_secret[IOTX_PRODUCT_SECRET_LEN + 1] = "I5Nvxxx"; char _device_name[IOTX_DEVICE_NAME_LEN + 1] = "Linuxxx"; char _device_secret[IOTX_DEVICE_SECRET_LEN + 1] = "6a03xxx"; #else char _product_key[IOTX_PRODUCT_KEY_LEN + 1] = "xxx"; char _product_secret[IOTX_PRODUCT_SECRET_LEN + 1] = "xxx"; char _device_name[IOTX_DEVICE_NAME_LEN + 1] = "xxx"; char _device_secret[IOTX_DEVICE_SECRET_LEN + 1] = "xxx"; #endif #endif char _firmware_version[IOTX_FIRMWARE_VER_LEN] = "app-1.0.0-20180101.1000"; - 编译SDK。在SDK根目录中,执行make reconfig命令,选择3,然后make。
root@xxx:~/c-sdk-v3.0.1# make reconfig SELECT A CONFIGURATION: 1) config.alios.esp8266 2) config.alios.mk3080 3) config.ubuntu.x86 #? 3 - 测试运行SDK。
在SDK根目录中,执行./output/release/bin/linkkit-example-solo命令。执行结果如下。
root@xxx:~/c-sdk-v3.0.1# ./output/release/bin/linkkit-example-solo establish tcp connection with server(host='a1Cxxx.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[1883]) success to establish tcp, fd=3 > { > "id": "1", > "version": "1.0", > "params": [ > { > "attrKey": "SYS_LP_SDK_VERSION", > "attrValue": "3.0.1", > "domain": "SYSTEM" > }, > { > "attrKey": "SYS_SDK_LANGUAGE", > "attrValue": "C", > "domain": "SYSTEM" > } > ], > "method": "thing.deviceinfo.update" > }SDK运行成功后,可在物联网平台控制台对应实例下,进入设备对应的设备详情页面,查看设备状态和设备上报的物模型数据。
该文章对您有帮助吗?