[AliOS-Things 之 MQTT] 接入阿里云物联网套件

阿里开发 AliOS-Things 的主要动机,应该就是让别的商家利用 AliOS-Things 快速接入阿里云平台,所以我们可以直接利用 AliOS-Things 提供的 mqttapp 示例进行快速接入。

关于 AliOS 的系列博客,请参考 AliOS-Things系列学习笔记-目录

云端操作

在云端的操作主要包括如下几步:

  1. 开通物联网套件
  2. 创建产品,拿到 ProductKey
  3. 创建设备,拿到 DeviceNameDeviceSecret
  4. 定义 Topic $(PRODUCT_KEY)/$(DEVICE_NAME)/data,并设置权限为”设备具有发布与订阅”

注意第 4 步不要漏掉了,我之前就是没有添加这个 Topic,在云端查看日志一直提示失败。

具体步骤在阿里云的官方写得比较清楚了,请移步 设备接入准备

修改参数

Demo 程序所在路径是 AliOS-Things/example/mqttapp。由于 AliOS-Things 直接支持作为 Linux 平台的应用程序,所以即使没有 MK3060 开发板的话,也可以直接在 Linux 下跑这个 Demo,亲测没问题。

我们在云端操作时获取的三个参数需要在这里排上用场,根据这三个参数修改文件 AliOS-Things/example/mqttapp/mqtt-example.c 的 38~40 行代码,例如我是:

1
2
3
#define PRODUCT_KEY             "sbYCVxN7htJ"// "BfKxBDSjWCH"
#define DEVICE_NAME "alios-test-device" //"aos_mqtt_test"
#define DEVICE_SECRET "cfety4D51cAaHiG9JORTn7vGpVeHBy5O" //"zcBZ5TB9cfAylUGo1flH0o47PxS8Mqu2"

在设备端运行

Linux 平台

如果是 Linux 平台,则直接可以编译并运行程序了。如果你之前操作无误的话,程序运行后会连上阿里云并向其推送消息。

下图是我的示例:

![](./mqtt.png)

可以看到,订阅和推送 Topic 都成功了。

MK3060 平台

如果是在开发板 MK3060 上运行,则将程序编译并烧写到开发板上后,还需要执行 shell 命令让其连接到 WiFi 热点。连接上热点后,MQTT 程序才会真正运行。

让设备连接到 WiFi 热点需要执行命令 sta,其具体格式是 sta 热点的名字 热点的密码,例如我的热点名是 “ABC”,热点密码是 “ABC8881033”,则我就执行命令:

1
# sta ABC ABC8881033

下图是连接连接热点时的日志截图:

![](./connect_ap.png)

下图是 MQTT 示例运行时的日志截图:

![](./publish_success.png)

学习资料