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

2023-07-17 00:00:00


前言

本篇文章将会带大家在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++)

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

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

执行:

./build.sh

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

三、使用自己的服务器

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

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

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

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

在这里插入图片描述

四、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 -

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

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

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

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

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

在这里插入图片描述

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

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

总结

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

更多推荐

半导体CIM系统中的EAP:提升制造效率的关键

半导体制造是高度复杂和技术密集型的行业,对生产效率和产品质量有着极高的要求。在这个领域,设备自动化编程系统(EquipmentAutomationProgramming,EAP)已经崭露头角,成为提升制造效率的关键要素。本文将深入探讨EAP在半导体CIM系统(制造执行系统)中的作用,以及它如何显著提高制造效率的关键作用

【C++】String类基本接口介绍及模拟实现(多看英文文档)

string目录如果你很赶时间,那么就直接看我本标题下的内容即可!!一、STL简介1.1什么是STL1.2STL版本1.3STL六大组件1.4STL重要性1.5如何学习STL二、什么是string??(本质上是一个类)三、string的类模板(什么?string居然利用了模板??)三、string的三种构造(拷贝构造也

批处理小程序的制作

一、介绍批处理是一种将一系列计算机任务按照预定义的顺序进行自动化处理的技术。它是通过批处理脚本或命令文件来实现的,可以在不需要人工干预的情况下,批量运行多个命令或程序。批处理脚本的优点1.自动化:批处理可以自动执行重复性任务,无需手动干预,减少人力和时间成本。2.批量处理:批处理可以同时处理多个任务,提高工作效率。3.

Kotlin 中的协程 flow

一、Flow概述Flow具有异步挂起suspend响应式编程,可以使用挂起函数来异步生产和消费事件,Flow的设计灵感也来源于响应式流以及其各种实现。二、Flow的生产和消费suspendfuntest1(){flow<Int>{(0..4).forEach{emit(it)//生产者发送数据}}.collect{pr

群晖linux ——设置短密码、免密码登录、多个群晖免密登录

文章目录概述群晖设置超短密码获取root权限设置新密码/更改密码群晖SSH公钥免密登录开启家目录修改文件夹权限修改配置文件上传公钥高级——多个群晖,不同密钥解决方法概述群晖仅在内网运行,外网无法访问。每次输入长密码不方便。但是群晖WEB端无法设置短密码,一番搜索过后,发现可以通过SSH的方式设计短密码。具体步骤如下。群

勒索病毒最新变种.Elbie勒索病毒来袭,如何恢复受感染的数据?

引言:随着数字化的快速发展,网络安全威胁也变得越来越严重。其中,.Elbie勒索病毒是一种备受恶意分子钟爱的危险工具,它可以加密您的数据文件,然后勒索高额赎金。本文将深入探讨.Elbie勒索病毒的威胁,包括其工作原理、如何恢复被其加密的数据文件,以及有效的预防措施,以保护您的数据免受损失。如果您在面对被勒索病毒攻击导致

Kettle REST Client获取token调用接口解析JSON入文件实战

KettleRESTClient通过GET获取token以POST方式请求接口解析JSON入文件完整实例需求说明通过kettle组件调用接口并解析JSON成结构化数据入文件。完整实例解决方法利用生成记录组件定义URL参数通过RESTClENT组件请求得到TOKEN通过JSONINPUT组件解析接口请求的结果通过JAVA

SOLIDWORKS2024新功能--SOLIDWORKS篇(三)

结构系统和焊件该章节包括以下主题:边角管理在文件属性中显示单位结构系统边角管理您可以手动或自动应用边角处理。要打开边角管理PropertyManager:打开一个零件,然后单击结构系统>主构件。创建主构件并退出结构系统模式。在PropertyManager中,指定一个选项:自动。将相似的边角分组并应用边角处理。手动。允

Tomcat

1常见的客户端/服务器架构模型1.1C/S架构(Client/ServerArchitecture)C/S架构(Client/ServerArchitecture)指的是客户端通过安装在本地的软件(客户端)访问服务器上的应用程序,客户端与服务端之间通过网络进行通信和数据交换。优点:快速响应:由于客户端软件安装在本地,可

干货 | 汽车行业研发效能提升的挑战与实践案例

在9月15日的第七届CSN大会上,思码逸研发效能专家王艳萍受邀分享了《汽车行业研发效能提升的挑战与实践案例》。演讲包含了思码逸对多家汽车企业服务过程中总结出的行业痛点、解决方案,以及实践案例。以下为演讲实录:思码逸与很多知名汽车企业都有合作。我们这次的演讲会先简单介绍一下思码逸,然后重点分享我们与汽车企业在研发效能层面

基于麒麟服务器V10的.NET部署、运行 + 金仓数据库

一言而论:基于麒麟服务器V10的.NET部署、运行,涉及的信创产品有麒麟、金仓,使用了.NET6API文章目录前言环境硬件环境软件环境麒麟安装.NET麒麟安装金仓数据库.NET与KES通讯麒麟部署.NET总结参考资料前言紧跟着笔者的上一篇文章《银河麒麟V10的使用》,这次笔者调研的内容是.NET在麒麟上的部署、人大金仓

热文推荐