本文基于文档中提供的项目教程,复现ELF 1连接阿里云物联网平台,进行MQTT开发;记录ELF1 个人物联网开发的过程,可以提供参考;
MQTT(消息队列遥测传输)是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
MQTT的特点包括:
开发板:ELF1
开发环境:window10+VMware+ubuntu 18.04
交叉编译环境:arm-poky-linux-gnueabi-gcc
没有账号的可以进行一个简单的登录并实名认证:
阿里云登陆页面:https://account.aliyun.com/login/login.htm
进行如下操作:
点击“管理控制台”,进入:
进行新建产品,进行设置,下边参数使用默认参数即可:
查看我们的产品,自定义topic,进行如下操作:
添加设备,添加到我们的产品下,进行命名:
以上,我们的产品(项目),和设备就加入成功了,这时候需要获取三元组,即:ProductKey,DeviceName,DeviceSecret,和MQTT连接参数:
直接查看设备信息就可以看到所有的信息了:
这里建议把数据都按以下格式整理,方便我们后面使用:
{
"ProductKey": "",
"DeviceName": "tree",
"DeviceSecret": ""
}
MQTT:
{
"clientId":"",
"username":"tree&",
"mqttHostUrl":"",
"passwd":"",
"port":1883
}
然后就可以进行发布操作:
我们是基于阿里云的SDK进行案例开发的,所以获取一手阿里云提供的SDK:
我们会获得一个压缩包,解压做自己的工作区或者桌面就行,命名就为:“LinkSDK”
以上,我们阿里云端的部署就完成了
接下来,要修改部分我们的源码:
将刚刚记录的三元组,MQTT连接参数填入我们的代码:
位置:/LinkSDK/demos/mqtt-rrpc-demo.c
往下配置我们的topic功能,大概在245行开始:
修改Makefile:
位置:/LinkSDK/Makefile
我们使用交叉编译环境,注释即可:
将“LinkSDK”文件夹拉入我们的编译环境:
虚拟机 | linux环境即可;
环境导入:
. /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
make
官方教程中提供了一个报错的可能,我没遇到:
编译过程可能会遇到如上问题,提示 mqtt_userdefine_demo.c 中会提示找不到
头文件 aiot_dm_api.h,因为我们没有用到这个程序,所以可以删掉这个程序,再次编译正
常
可执行文件位于:/LinkSDK/output/mqtt-rrpc-demo
拷贝文件到我们的/home/root 下:
scp mqtt-rrpc-demo root\\\\\\\\@`@<自己开发板IP地址>:home/root
连接开发板,本文使用的是SSH连接方式:
不了解可以看笔者的前文:
连接测试 + Powershell SSH连接
在调试前,我们要先测试我们的网络是否可用,是否连接了外网:
ping www.baidu.com
开发板连接不上外网的可以参考前文:
运行我们的程序
./mqtt-rrpc-demo
运行成功,服务器也受到连接回报;
后续会更新基于MQTT自定义数据格式的开发。
如果需要参考更多资料,请参考ELF 1官方文档;以上是本人进行部署的过程;
更多回帖