基于麒麟座开发板2.0的MQTT实现例程

摘要:
OneNET为每个人提供了MQTT SDK的C语言版本。接下来,我们将使用SDK将MQTT协议移植到麒麟开发板。我希望本文能够帮助那些希望使用MQTT访问OneNET的开发人员下载SDK-(1)首先,进入MQTT描述区,找到C语言SDK下载链接,然后下载SDK。原始SDK使用网络端口在Linux系统中实现通信,而开发板使用串口连接通信模块实现通信。相关功能需要相应修改。有关详细信息,请参见代码文件。

链接--->https://sanwen8.cn/p/649shZ1.html

OneNET现已全面适配标准MQTT协议,相信这一功能的增加会**便于开发者进行设备的接入。

OneNET提供了MQTT的C语言版本的SDK供大家使用,接下来我们将利用该SDK,将MQTT协议移植到麒麟座开发板上,希望这边文章能对希望使用MQTT接入OneNET的开发者提供一定帮助。☀

(本文中使用的SDK、调试工具、以及说明文档,均可以在官网文档中心中的MQTT专区下载)

下载SDK

(一)

▶首先进入我们的MQTT说明专区,找到C语言SDK下载链接,下载SDK。

基于麒麟座开发板2.0的MQTT实现例程第1张

其中:
mqtt/config.h

mqtt/mqtt.h

mqtt/mqtt_buffer.h

src/mqtt.c

src/mqtt_buffer.c

为MQTT相关的.c 以及.h文件sample/c/sample.c是使用示例文件

代码的移植

(二)

▶将上述.c 以及 .h 文件复制到 开发板的工程中 Protocol/mqtt目录下,在工程中添加mqtt.c以及mqtt_buffer.c文件(记得修改Include Path 路径)

▶由于SDK是在linux环境下编译以及测试的,移植到STM32环境下带来了平台的差异性。

▶主要记得修改如下地方:
1、修改MQTT相关的.h文件的include路径,使之与工程环境相匹配
2、屏蔽掉原来的assert函数,和inline关键字
3、修改分配的缓冲区的大小
主要是MqttSample_Init()函数中的Mqtt_InitContext() 函数,SDK中分配了 1<<20大小的字节,由于STM32资源有限,这里需要改小一点,本例中为1000字节。
4、修改接口的初始化、收、发函数。
原SDK是在linux系统中利用网口来实现通信,而开发板中使用串口连接通信模块的形式实现通信,相关的函数都需要作相应的修改,详见代码文件。

—代码示例—

(三)

基于麒麟座开发板2.0的MQTT实现例程第2张

(1)源代码如下:

在平台创建一个公开协议产品(设备接入协议类型选择MQTT协议),这里不介绍产品创建过程,请参考平台文档中心“接入帮助”部分的相关内容。

基于麒麟座开发板2.0的MQTT实现例程第2张

(2)本例中的代码流程如下图:

基于麒麟座开发板2.0的MQTT实现例程第4张基于麒麟座开发板2.0的MQTT实现例程第2张

(3)开发板资源分配如下:

基于麒麟座开发板2.0的MQTT实现例程第6张

代码中需要修改的参数位置:
main.c
line 40:

基于麒麟座开发板2.0的MQTT实现例程第7张

line 789

基于麒麟座开发板2.0的MQTT实现例程第8张

esp8266.h
line1 :

基于麒麟座开发板2.0的MQTT实现例程第9张

—SDK使用示例—

(四)

▶MQTT连接

基于麒麟座开发板2.0的MQTT实现例程第10张

▶MQTT订阅

基于麒麟座开发板2.0的MQTT实现例程第11张

▶MQTT发布消息

基于麒麟座开发板2.0的MQTT实现例程第12张

▶MQTT回复命令

基于麒麟座开发板2.0的MQTT实现例程第13张

▶MQTT上传数据

基于麒麟座开发板2.0的MQTT实现例程第14张

▶接收数据解析

基于麒麟座开发板2.0的MQTT实现例程第15张

—代码接入测试—

(五)

▶使用MQTT simulate device来模拟同产品目录下的另外一个设备

基于麒麟座开发板2.0的MQTT实现例程第16张

▶打开设备电源,在调试串口目录下可以看到调试信息

基于麒麟座开发板2.0的MQTT实现例程第17张基于麒麟座开发板2.0的MQTT实现例程第18张基于麒麟座开发板2.0的MQTT实现例程第19张基于麒麟座开发板2.0的MQTT实现例程第20张基于麒麟座开发板2.0的MQTT实现例程第21张

▶使用模拟设备与平台建立连接

基于麒麟座开发板2.0的MQTT实现例程第22张

可以看到产品topic列表中已经有开发板所创建的test_topic(订阅自动创建)

topic发布以及接收测试

(六)

▶在订阅框中输入key_press ,点击订阅(该topic为开发板按键发布消息的topic)

基于麒麟座开发板2.0的MQTT实现例程第23张

▶按下开发板上的key2,见调试信息:

基于麒麟座开发板2.0的MQTT实现例程第24张

▶触发消息之后,在模拟器侧,就可以收到该topic的消息了

基于麒麟座开发板2.0的MQTT实现例程第25张

▶使用模拟软件,向test_topic发送一则消息

基于麒麟座开发板2.0的MQTT实现例程第26张

▶在开发板侧,可以从调试信息中看到,已经收到了该topic消息

基于麒麟座开发板2.0的MQTT实现例程第27张

至此,topic的订阅与发布测试已完成。

—命令下发与应答测试—

(七)

▶在线发送命令给开发板

基于麒麟座开发板2.0的MQTT实现例程第28张

▶在调试信息中可以看到以及接收了该命令并成功解析

基于麒麟座开发板2.0的MQTT实现例程第29张

▶此时LED7已经被点亮

基于麒麟座开发板2.0的MQTT实现例程第30张

免责声明:文章转载自《基于麒麟座开发板2.0的MQTT实现例程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在Delphi中开发使用多显示器的应用程序(MonitorCount和DefaultMonitor)GDB常用调试命令以及多进程多线程调试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET Core 实现 MQTT通讯协议 Demo(开源库:MQTTnet)

1、什么是MQTT   MQTT(message queuing telemetry transport)是IBM开发的即时通讯协议,是一种发布/订阅极其轻量级的消息传输协议,专门为网络受限设备、低宽带以及高延迟和不可靠的网络而设计的。由于以上轻量级的特点,是实现智能家居的首选传输协议,相比于XMPP,更加轻量级而且占用宽带低。简单来说HQTT是一种通信...

Linux下安装Android Studio(ubuntu)

一、 安装Android Studio 1. 添加源,按回车键继续    sudo apt-add-repository ppa:paolorotolo/android-studio 2. 更新源    sudo apt-get update 3. 开始安装AS     sudo apt-get install android-studio 4. 启动...

MQTT的$SYS主题定义

$SYS/broker/load/bytes/received:自代理启动以来已接收的字节总数。 $SYS/broker/load/bytes/sent:自代理启动以来发送的字节总数。 $SYS/broker/clients/connected:当前连接的客户端数 $SYS/broker/clients/disconnected:已在代理处注册但当前已断开...

【FFMPEG】关于硬解码和软解码

一、一些命令 1、显示所有可用的硬件加速器 [root@tranCodeing ~]# ffmpeg -hwaccels ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-...

Media Player Classic(guliverkli)源代码的下载与编译

Media Player Classic(guliverkli)是由匈牙利人Gabest开发,基于源代码开放协议(GPL:GNU通用公共许可证)的软件,暴风影音等不少播放器都是在它的基础上做出来的,在sourceforge.net上的项目叫做guliverkli,地址是:http://sourceforge.net/projects/guliverkli/...

现在可用——Windows Azure SDK 1.6

微软不久前宣布了Windows Azure SDK 1.6 和 Windows Azure Tools for Visual Studio 1.6的发布。现在人们可以通过WebPI来下载这个最新版本。 当你下载并安装完该SDK时,你将发现 该SDK 1.6与SDK 1.5兼容,这意味着你仍然可以使用1.5版的程序集。但是Visual Studio To...