阿里开发 AliOS-Things 的主要动机,应该就是让别的商家利用 AliOS-Things 快速接入阿里云平台,所以我们可以直接利用 AliOS-Things 提供的 mqttapp 示例进行快速接入。
关于 AliOS 的系列博客,请参考 AliOS-Things系列学习笔记-目录。
云端操作
在云端的操作主要包括如下几步:
- 开通物联网套件
- 创建产品,拿到
ProductKey
- 创建设备,拿到
DeviceName
和DeviceSecret
- 定义 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 |
#define PRODUCT_KEY "sbYCVxN7htJ"// "BfKxBDSjWCH" |
在设备端运行
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)