• Linux MQTT智能家居(ubantu和ARM中使用MQTT)



    前言

    本篇文章将会带大家在ubantu和ARM中使用MQTT。
    源码地址已经告诉大家了,大家可以去git上面将源码下载下来。

    一、在ubantu中使用MQTT

    1.安装cmake

    使用sudo apt-get install cmake g++命令来安装cmake。
    在这里插入图片描述

    2.编译MQTT库

    使用./build.sh命令执行脚本编译MQTT的库:

    在这里插入图片描述

    在build/bin目录下生成了4个可执行程序:

    使用这些可执行程序可以连接到阿里云,百度云,emqx,onenet等云平台。
    在这里插入图片描述

    使用./build/bin/emqx执行程序可以连接到emqx。在这里插入图片描述

    二、在ARM中使用MQTT

    创建文件arm-linux.cmake
    在文件中添加:

    set(CMAKE_SYSTEM_NAME Linux)
    set(CMAKE_C_COMPILER arm-buildroot-linux-gnueabihf-gcc)
    set(CMAKE_CXX_COMPILER arm-buildroot-linux-gnueabihf-g++)
    
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    修改build.sh:

    cmake .. "-DCMAKE_TOOLCHAIN_FILE=../arm-linux.cmake"
    
    • 1

    执行:

    ./build.sh
    
    • 1

    这样我们就生成了对应ARM平台上的可执行文件了:
    在这里插入图片描述
    使用file命令可以查看到文件的格式

    三、使用自己的服务器

    安装mosquitto软件:
    在这里插入图片描述
    这个软件安装是非常简单的,只需要点击下一步即可安装成功。

    修改配置文件设置端口号:

    在这里插入图片描述
    启动MQTT服务器

    .\mosquitto.exe -c mosquitto.conf -v
    
    • 1

    在这里插入图片描述

    四、ARM板 服务器 MQTTX三者关系

    在这里插入图片描述
    ARM Linux可以发布消息给服务器(例如:传感器的数据),也可以订阅消息(控制LED,风扇等模块的开启关闭)

    MQTTX也可以作为一个客户端,订阅来自开发板上的传感器数据,也可以发布控制模块开关的消息。

    五、MQTTX的使用

    首先需要安装MQTTX,安装步骤很简单,一直点击下一步即可,这里就不做介绍。

    做完下面的配置后点击连接即可连接上服务器:在这里插入图片描述
    在这里我们可以添加订阅和发布一些消息:
    在这里插入图片描述

    这里可以添加订阅的主题和服务的质量:
    在这里插入图片描述

    这里也可以选择发布消息的格式和服务的质量:
    在这里插入图片描述

    六、ARM使用MQTT的方法

    1.修改MQTT源码

    将端口号和IP地址进行对应的修改:
    在这里插入图片描述
    修改对应的发布主题线程和订阅主题:
    在这里插入图片描述
    在这里插入图片描述
    修改完成后将源码上传到mqtt的源码当中:
    在这里插入图片描述
    执行./build.sh命令重新编译源码并上传到开发板:
    在这里插入图片描述
    这样就可以运行程序了。

    2.使用库

    直接修改源码的方式是非常方便,但是这是在别人的代码写来写程序的,我们需要编写出属于自己的程序,那么这个时候我们可以使用库的方式来完成。

    使用./make-libmqttclient.sh编译出库文件:
    在这里插入图片描述
    这里生成了这个库文件我们把库文件放到ubantu中的库文件目录和板子上的lib目录下。

    同时还需要将头文件放入ubantu中的头文件目录下:

    使用下面的命令查看头文件和库文件的目录:

    echo 'main(){}'| arm-buildroot-linux-gnueabihf-gcc -E -v -
    
    
    • 1
    • 2

    在这里插入图片描述
    将include 和 lib文件都放入对应的目录即可。

    将库文件拷贝到板子:
    在这里插入图片描述
    那么这样的话就可以脱离MQTT源码进行编译和执行了。

    3.把MQTT源码加入到自己的工程

    当我们需要对程序进行调试的时候上面的两种方法都不是很适合的,那么这个时候就需要将MQTT的源码加入自己的工程当中,这样就方便我们进行代码的调试。

    那么这里的话我就使用Makefile来进行项目代码的管理(不熟悉Makefile的同学可以去看百问网的视频或者看我之前写的文章)

    在这里插入图片描述

    从mqtt源码中留下一些有用的代码,删除不需要的代码:
    在这里插入图片描述

    在makefile中需要指定对应的库和头文件:
    在这里插入图片描述
    完成移植后就可以将整个工程上传到虚拟机进行编译了。
    在这里插入图片描述
    最后编译成功就可以上传到开发板进行测试了。

    总结

    这篇文章就讲解到这里,那么下篇文章我们将讲解如何添加各种传感器模块。

  • 相关阅读:
    Jenkins用户权限配置 (三)
    [附源码]Python计算机毕业设计Django企业售后服务管理系统
    xss.pwnfunction靶场
    付费上班,你听说过吗?
    类型体系与基本数据类型(第五节)
    app clear data源码追踪
    基于SqlSugar的开发框架循序渐进介绍(28)-- 快速构建系统参数管理界面
    多线程之线程的执行顺序
    pytorch 模型部署之Libtorch
    php费尔康框架phalcon(费尔康)框架学习笔记
  • 原文地址:https://blog.csdn.net/m0_49476241/article/details/131735113