近年来,随着物联网技术的快速发展,mqtt(message queuing telemetry transport)作为一种轻量级的通讯协议,被广泛应用于物联网设备之间的通讯。emqx平台作为一款开源的mqtt消息服务器,提供了稳定可靠的消息传输服务。本次教程中,我们将探讨如何基于emqx平台自建mqtt服务器,并实现设备之间的高效通讯。无论是在工业控制、智能家居还是智能城市等领域,搭建自己的mqtt服务器都能为我们带来更大的灵活性和可扩展性。让我们一起深入了解这个过程,为物联网应用打下坚实的基础。
开始前,我们需要准备一台服务器,本地或是公网服务器均可。此次教程我们使用的是本地服务器,服务器系统使用的是debian 12系统,公网服务器的方法相同。为了方便新人操作,这里推荐使用docker搭建方法,可以避免环境不同导致的错误。
一
服务器中安装docker以及docker compose
在开始之前,我们需要确认服务器的 root 账号是否正常启用。本教程将使用 ssh 的 root 账号连接服务器,请确保服务器能够通过 ssh 工具正常连接。
首先,通过 ssh 连接服务器。这里大家可以任意选择连接的方法,原理相同,不需要完全一致。这里我们为了方便,直接使用本地终端命令 ssh 连接服务器:
接下来,我们需要在服务器上安装 docker 和 docker compose。如果已经安装完成,可以跳过此步骤。关于 docker 和 docker compose 的安装方法,大家可以参考官网手册(https://docs.docker.com/desktop/install/linux-install/ )进行安装,也可以使用我们为大家准备的命令进行安装。
首先,更新并安装会用到的工具:
apt-get update && apt-get install -y wget vim
完成后,通过以下命令安装 docker:
wget -qo- get.docker.com | bash
安装完成后,我们可以使用 docker -v 命令查看是否安装成功。
然后,我们开始安装 docker compose。在 docker 的官方文档中可以找到相关的安装教程。
curl -sl https://github.com/docker/compose/releases/download/v2.19.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
安装完成后,将可执行权限应用于安装目标路径中的独立二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
然后,使用 docker-compose --version 命令查看版本,检查安装是否成功。
至此,我们已经成功安装了 docker 和 docker compose。接下来,我们将正式开始部署 emqx 服务。
二
在 docker 中部署 emqx 服务
在 emqx 官网中,我们点击 download 进入下载页面,可以找到不同系统的教程。
在本次教程中,我们将使用 docker 部署,因此我们看到 docker 部署页面的教程。
这里演示使用 ssh 的方式连接服务器。我们可以参考官方介绍进行部署。
使用 docker 指令直接部署,可以使用以下命令:
docker pull emqx/emqx:5.1.1
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.1.1
安装完成后,可以使用 docker ps 命令查看是否安装成功。
安装完成后,打开浏览器,并在地址栏中输入 http://localhost:18083/(localhost 可以用您的 ip 地址替换)以访问 emqx 仪表板,您可以从那里连接到客户端或检查运行状态。
默认用户名和密码:
admin
public
首次登录时,会要求修改密码。根据提示修改密码即可:
之后,我们即可进入 emqx 管理页面。
至此,emqx 已成功安装到我们的服务器内。接下来,我们可以通过配置 emqx 平台将 mqtt 设备接入服务器。
三
使用 mqtt 将设备连接到 emqx 服务器
接下来,我们将使用串口服务器 nb114 模拟实际设备,演示设备如何使用 mqtt 协议连接 emqx 服务器。在连接过程中,我们将使用上位机软件和串口调试助手软件(xcom)。这些软件可在产品相关页面下载,如果您对产品的连接通讯方法不熟悉,可以参考产品的快速入门教程。在这里,我们假设您已经成功连通了设备。
这里我们不详细介绍 emqx 的配置,您可以参考官方提供的手册进行配置。我们将重点介绍如何进行连接和通讯。
在默认情况下,emqx 可以直接通过 mqtt 协议连接,无需额外的设置。在“访问控制→客户端授权”页面中,可以配置客户端的访问规则。
为了方便,我们不进行修改,直接打开上位机软件,配置 nb114 进行连接。
其中,“目标 ip”即为 emqx 的 ip 地址。
“目标端口”为 mqtt 端口号(1883)。在“平台”中选择“标准 mqtt 3.1.1”,并填写“clientid”、“username”、“password”、“订阅与发布主题”。由于 emqx 并未配置访问规则,我们可以任意填写这些信息,不会影响设备的连接。完成配置后,点击“保存”并重启设备。稍等片刻,即可看到设备已经成功连接到服务器。我们在 emqx 服务器中的“监控→客户端”页面中可以查看到设备的连接状态。
接下来,我们测试发布和订阅主题是否正常。首先,我们需要打开 emqx 平台中的“问题分析→websocket 客户端”页面,并将协议版本设置为 3.1.1,其余内容可以保持不变。完成后,点击“连接”。
接下来,我们需要设置订阅和发布主题,将其设置为刚才在 nb114 中填写的订阅和发布主题。注意,这里填写的订阅和发布主题需要交叉填写(订阅填写发布的内容,发布填写订阅的内容)。完成后,在订阅主题中,需要先点击“订阅”,确保 websocket 客户端能够收到消息。
接下来,我们打开串口调试助手(xcom)软件,填写 nb114 的参数,并选择连接。
随后,我们发送任意内容,即可在 websocket 客户端的订阅列表中查看到相关信息。
此时,我们再点击发布主题后面的“发布”按钮,即可在 xcom 软件中查看到相关信息。
至此,我们已经成功实现了 nb114 与 emqx 服务器之间的通讯。
所有教程相关的内容都已经讲解完成。在本次教程中,我们从 emqx 服务器的搭建开始,到最终实现设备与服务器之间的基础通讯,全部讲解完毕。当然,本次教程的内容相当基础,设备的连接并未设置任何相关的限制,这样是相当不安全并且浪费资源的。如果您需要将这些内容应用到实际项目中,可以参考 emqx 手册中的相关内容进行配置。
小米澎湃S2处理器曝光:目前开始量产,即将面世
可信计算的硬件防线,TPM芯片
诺基亚3310手机电池电路
特斯拉公布第四季度财报,将给出公司2019年一季度的业绩指引
联发科高管:今年将会有多款搭载天玑1200的移动终端发布
基于EMQX平台自建MQTT服务器并实现通讯
优学精灵UE6功能作用介绍
区块链去中心化数字资产交易平台“BitMax”介绍
未来企业在物联网项目中大量使用人工智能的价值将超出预期
证通电子发布面向金融IoT场景的证通SecOS发行版
电缆故障点的查找方法都有哪些
航空电子设备PCB组件的动态分析
耐高温、低损耗双轴电缆由Molex推出
DC Link Capacitors选型计算
Xilinx面向多种语言的SDAccel开发环境通过Khronos一致性测试
钧崴电子创业板IPO过会!电流感测精密电阻排名全球第四,募资11.27亿大扩产
解析:VR游戏开发商获利渠道
电子芯闻早报:亚马逊也推芯片,高通汽车芯片820A
探访AI偶像的生命引擎,知识图谱还能做些什么?
FPGA原型系统装配文件:Assign Traces介绍