一 . 移植 SDK,使设备成功连接物联网平台
(1)获取SDK
根据阿里云物联网平台文档提示,下载SDK到你电脑上。
阿里云物联网平台文档:获取SDK - 设备接入Link SDK - 阿里云
(2)在你的服务器上,创建好产品,设备,然后获取设备的属性值。(参考阿里云物联网平台开发文档)
(3)将下载好的 SDK 在你的 Ubuntu 上解压,进入 demos 目录,打开 mqtt_basic_demo.c 文件,修改设备属性信息。将下面的代码修改为在上述步骤(2)中获取的设备属性:
(4)执行 make(确保你在 Makefile 文件所在的目录下)
(5)make 成功后会生成 output 目录,接着就可以执行 output 目录下的 mqtt-basic-demo 文件了。
如果看到下面的输出,则是成功连接云服务器了!
这时也可以去阿里云物联网平台上查看设备状态,是处于【在线】的状态。
二 . 执行发布-订阅功能
(1)使用自定义 Topic 通信
原先这部分代码是被注释掉的,现在把注释符去掉,然后将 Topic 修改为你自己的 Topic 名称。(如何创建自定义 Topic 可以参考阿里云对应文档)
将程序执行起来,然后可以去阿里云平台上,【设备】-【Topic 列表】中找到你的 Topic,接着点击【发布消息】,就可以从云服务器向设备发送消息了。在【监控运维】-【日志服务】中也可以查看设备与云服务器的交互记录。
程序执行结果:
(2)使用物模型通信 Topic
首先,需要获取物模型通信 Topic,在【产品】-【Topic 类列表】-【物模型通信 Topic】中获取。
注意:在使用 Topic 时,要将 Topic 名称中的 ${deviceName} 换成你的设备的名字。
然后,替换代码中的 Topic 值,替换成你自己的 Topic,发布的字符串可以修改为自己想发布的消息(注意:字符串换行需要在末尾加 '\' 且字符串中的双引号也需要转义)
发布:程序运行起来后,去物联网平台上查看,可以看到设备发布过来的消息:
(图中默认模块的“当前湿度”,“当前温度”,“红灯开关”等等属性是我在创建产品时设置的,至于你这里有什么属性,就看你创建产品时设置了什么)
订阅:在物联网平台上,可以设定好每个属性的值,然后发送指令,在程序中订阅的 Topic 就会收到对应的消息:
注意:程序运行时,如果出现 connect fail 的情况,有可能是因为 Ubuntu 自身的网络问题,所以要确保你的 ubuntu 可以成功连接外网(可以通过 ping www.baidu.com 来调试)。如果出现其他错误,可以根据打印出来的错误码去官网文档中查看对应的原因。