本文将指导您如何在ubuntu16.04系统中基于C-SDK使用MQTT与阿里云物联网平台建立连接,并上报奶牛的地理位置、奶牛体温和设备电量等信息。

开发环境说明

  • 操作系统:ubuntu16.04
  • 依赖的软件:gcc make,可通过如下命令安装:
    $sudo apt-get -y install gcc make
  • 准备示例物模型文件:打开物模型JSON页面后右单击,保存为JSON文件。

产品创建

本示例的产品在物联网平台的华东2(上海)站点的公共实例上进行创建,若您使用其它站点的公共实例或者企业实例,需要切换到其它站点进行操作,关于如何切换实例请参见“实例管理

  1. 登录阿里云物联网平台,在左侧导航栏选择设备管理>产品,在产品展示页面单击创建产品
  2. 创建产品页面,设置设置产品名称,选择所属类别为自定义类别、联网方式为以太网,单击保存即可。详情请参见下图:创建产品
  3. 在创建产品后,您也可以单击左侧导航栏产品,进入产品列表页面,选择刚刚创建的产品,单击详情
  4. 进入产品详情页面,单击功能定义>编辑草稿产品详情
  5. 进入到编辑草稿页面,选择快速导入,在导入物模型弹出框页面选择导入物模型选项卡单击物模型上传,进行上传已准备的示例物模型文件,单击确定。编辑草稿
  6. 完成上传物模型操作后,在编辑页面单击发布上线即可。
注意 准备物模型JSON文件时,需要将文件中的productKey需要修改为自己产品的productKey。

SDK获取

  1. 阿里云物联网平台,在左侧导航栏选择文档与工具,进入到文档与工具页面,在设备接入SDK界面,单击Link SDK>SDK定制
  2. 在SDK定制页面,详情配置请参见下图:SDK定制

调试设备创建

  1. 在产品页面单击前往管理。细节请参见下图:产品详情
  2. 进入到设备管理页面,选择设备列表,单击添加设备进入到添加设备页面,输入设备信息,单击确认。细节请参见下图:创建设备
  3. 在设备列表页面,选择刚创建的设备单击详情,进入设备详情列表。单击DeviceSecret旁的查看按钮弹出设备证书。单击一键复制,进行保存证书操作。详情请参见:设备详情页面查看设备证书
说明 设备证书包含(product key、device name、device secret),其中ProductKey用于标识设备属于哪个产品,DeviceName用于唯一标识该产品下的某个设备,DeviceSecret是设备与物联网平台共享的认证密钥。

设备开发体验

  1. 下载data_model_basic_model.c示例文件, 并用该文件替换demos目录下的文件mqtt_basic_demo.c, 该示例代码用于实现连接阿里云物联网平台并定期上报奶牛地理位置、奶牛体温和设备电量3个属性值。
  2. 打开"demos/mqtt_basic_demo.c"文件,将main函数中的product key、device name和device secret换成客户自己创建的设备证书的信息,细节请参见下图:三元组设置
  3. 使用MQTT连接物联网平台,具体设置方式您可以阅读mqtt_basic_demo.c文件中的main()函数了解MQTT连接的初始化过程。
  4. 通过函数demo_send_property_post()上报模拟的设备属性,完成数据的收发。如下图所见:数据收发
  5. 在Link SDK根目录下执行make,即可编译SDK并产生demo程序。
说明 若您使用的是物联网平台其它站点的公共实例,或者使用的是企业实例,请参见文档“MQTT接入”了解如何对代码进行修改。

调试说明

  • 设备端如何查看设备已连接到物联网平台?

    运行./output/data-model-basic-demo即可实现奶牛场设备的属性上报, 可以看到以下日志信息:

    [1587882750.117][LK-0313] MQTT user calls aiot_mqtt_connect api, connect
    [1587882750.117][LK-0317] sCxkhPNVaTavR4X5V9sB&a1VCY82mgIP
    [1587882750.117][LK-0318] B985FB2B62267CE4B58A678898F69C23B3EE7647BCF38F100E7E940403F94207
    establish mbedtls connection with server(host='a1VCY82mgIP.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])
    success to establish tcp, fd=5
    success to establish mbedtls connection, fd = 5(cost 44957 bytes in total, max used 47869 bytes)
    [1587882750.205][LK-0313] MQTT connect success in 88 ms
    AIOT_MQTTEVT_CONNECT
    [1587882750.205][LK-0309] pub: /sys/a1VCYXXXXXX/sCxkhPNVaTavR4XXXXXX/thing/event/property/post
  • 如何在物联网平台查看设备已连接成功?
    在设备端确认设备已连接到物联网平台后,在物联网平台控制台的设备详情页里,可以看到设备处于在线状态:device在线
  • 如何在物联网平台查看设备上报的物模型数据?
    在物联网的控制台,选中指定的设备,物模型数据可以看见设备上报的属性数据:上报的属性