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


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

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


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

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

     下载SDK 

    (一)

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

    其中:
    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系统中利用网口来实现通信,而开发板中使用串口连接通信模块的形式实现通信,相关的函数都需要作相应的修改,详见代码文件。

    — 代码示例 —

    (三)

     

    (1)源代码如下:

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

     

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

     

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

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

    line 789

    esp8266.h  
    line1 :

    — SDK使用示例 —

    (四)

    ▶ MQTT连接

    ▶ MQTT订阅

    ▶ MQTT发布消息

    ▶ MQTT回复命令

    ▶ MQTT上传数据

    ▶ 接收数据解析

    — 代码接入测试 —

    (五)

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

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

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

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

    — topic发布以及接收测试 

    (六)

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

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

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

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

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

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

    — 命令下发与应答测试 —

    (七)

    ▶ 在线发送命令给开发板


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

    ▶ 此时LED7已经被点亮

  • 相关阅读:
    浅析一类要求相邻不同的环上染色问题
    中国剩余定理(CRT)及其扩展(ExCRT)
    bsoj5988 [Achen模拟赛]期望 题解
    涂色游戏 题解
    [JZOJ A组]球 题解
    由 [SDOI2012]Longge的问题 探讨欧拉函数和莫比乌斯函数的一些性质和关联
    [NOIP模拟]文本编辑器 题解
    Nilearn 小记
    django 开发笔记1
    浅谈无需工作量证明的加密货币
  • 原文地址:https://www.cnblogs.com/dpf-learn/p/6623448.html
Copyright © 2020-2023  润新知