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

简介: 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++)

23fe2c7ffb6fb9ddaeb83acd266d19cd_1916da6628714b9888dba7c099db82eb.png

修改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中需要指定对应的库和头文件:

完成移植后就可以将整个工程上传到虚拟机进行编译了。

最后编译成功就可以上传到开发板进行测试了。

总结

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


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
8月前
|
消息中间件 Linux 数据安全/隐私保护
linux mq的安装并设置开机启动 图文!!
linux mq的安装并设置开机启动 图文!!
270 0
|
8月前
|
消息中间件 Java Linux
Linux下RabbitMQ安装与使用
Linux下RabbitMQ安装与使用
127 1
|
4月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
4月前
|
消息中间件 Linux
linux之centos安装rabbitmq
linux之centos安装rabbitmq
|
5月前
|
消息中间件 Unix Linux
在Linux中,RabbitMQ是什么?
在Linux中,RabbitMQ是什么?
|
5月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
166 3
|
5月前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
184 0
|
6月前
|
监控 网络协议 物联网
一款轻量级的通信协议---MQTT (内含Linux环境搭建)
**MQTT协议摘要** MQTT是一种轻量级的发布/订阅型网络协议,适用于低带宽、高延迟或不可靠的网络环境,尤其适合物联网(IoT)设备。其主要特点包括: 1. **发布/订阅模型**:设备通过主题进行通信,发布者无需知道订阅者,订阅者也不需知道消息来源。 2. **轻量级**:协议头部小,减少网络负载,适合资源受限的设备。 3. **断线重连**:支持客户端在失去连接后重新连接,保持通信。 4. **服务质量级别(QoS)**:提供0(最多一次)、1(至少一次)和2(恰好一次)三种级别,保证消息传递的可靠性。
119 0
|
8月前
|
存储 Ubuntu Linux
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
Xenomai是一个实时性解决方案,通过在Linux上添加实时内核Cobalt来增强实时性能。它有三个主要部分:libcobalt(用户空间实时库)、Cobalt(内核空间实时内核)和硬件架构特定层(ipipe-core或dovetail)。ipipe-core适用于Linux 5.4以下版本,而dovetail用于5.4及以上版本。本文介绍了在X86 Ubuntu环境下,如何编译Xenomai内核,搭建应用环境,包括配置、编译、安装和实时性测试。对于其他硬件架构,如ARM和ARM64,步骤类似。文章还提到了Xenomai与Linux内核版本的兼容性和实时性测试结果。
617 0
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
|
8月前
|
消息中间件 Java Linux
RabbitMQ教程:Linux下安装、基本命令与Spring Boot集成
RabbitMQ教程:Linux下安装、基本命令与Spring Boot集成