全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
阿里云物联网套件

设备端快速接入(MQTT)

更新时间:2017-11-30 14:00:30

本文以Linux下C语言版SDK为例, 演示如何快速体验让设备连接到阿里云IoT, 并通过MQTT协议的PUB/SUB实现一个简单的M2M通信过程.

详细说明请访问官方WiKi官方SDK首页

第一步: 在控制台中创建设备

登录IoT控制台, 创建产品及在产品下创建设备和Topic类, 具体步骤如下:

  • 创建产品, 可得到ProductKey
  • 在产品下创建设备, 可得到DeviceName, DeviceSecret
  • 定义Topic: $(PRODUCT_KEY)/$(DEVICE_NAME)/data, 并设置权限为: 设备具有发布与订阅 (此步骤非常重要)

具体请参考控制台使用手册文档中的创建产品, 添加设备以及获取设备Topic部分.

第二步: 填充设备参数

备注:如果您还没有SDK源码, 请到SDK下载页面, 下载最新版本.

将sample程序文件中的设备参数替换为您在控制台申请到的设备参数.

sample/mqtt/mqtt-example.c 中以下星号字符串表示的设备参数替换为第一步中获得的值:

  1. #if defined(MQTT_ID2_AUTH) && defined(TEST_ID2_DAILY)
  2. #define PRODUCT_KEY "*******************"
  3. #define DEVICE_NAME "*******************"
  4. #define DEVICE_SECRET "*******************"
  5. #else
  6. // TODO: 在以下段落替换下列宏定义为你在IoT控制台申请到的设备信息
  7. #define PRODUCT_KEY "*******************"
  8. #define DEVICE_NAME "*******************"
  9. #define DEVICE_SECRET "*******************"
  10. #endif

完成编辑并保存后, 进行下一步

第三步: 编译SDK

  • 返回顶层目录
  • 执行make指令, 编译SDK, 命令如下

    1. make distclean
    2. make

编译成功后, 在相应目录生成样例可执行程序.

第四步: 执行样例程序

执行目录 output/release/bin/ 下的可执行程序:

  1. cd output/release/bin
  2. ./mqtt-example

样例程序的基本逻辑流程为:

  1. 创建一个MQTT客户端
  2. 订阅主题 $(PRODUCT_KEY)/$(DEVICE_NAME)/data
  3. 向该主题发布消息

其它

编译输出的说明

编译顺利完成后, 输出在 output/release/ 目录:

  1. +-- bin
  2. | +-- coap-example
  3. | +-- ...
  4. | +-- mqtt-example
  5. +-- include
  6. | +-- exports
  7. | | +-- iot_export_coap.h
  8. | | +-- ...
  9. | | +-- iot_export_shadow.h
  10. | +-- imports
  11. | | +-- iot_import_coap.h
  12. | | +-- ...
  13. | | +-- iot_import_ota.h
  14. | +-- iot_export.h
  15. | +-- iot_import.h
  16. +-- lib
  17. | +-- libiot_platform.a
  18. | +-- libiot_sdk.a
  19. | +-- libiot_tls.a
  20. +-- src
  21. +-- coap-example.c
  22. +-- http-example.c
  23. +-- Makefile
  24. +-- mqtt-example.c

说明如下:

文件/目录 说明
bin/mqtt-example 用MQTT协议连接阿里云IoT的样例程序
include/ 使用libiot_sdk.a时需要的头文件, 存放在这个目录
lib/libiot_platform.a 硬件平台抽象层, libiot_sdk.a的工作是建立在它的基础上的
lib/libiot_sdk.a SDK的核心层, 基于libiot_platform.a提供连接云端的能力
src/Makefile 示例用Makefile, 演示如何在SDK之外链接本SDK提供的库文件
src/mqtt-example.c 样例对应C代码, 可在此目录下输入make, 编译生成可执行程序

Java版本

Java版请参考 JAVA-SDK使用(MQTT)

本文导读目录