0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于EMQX平台自建MQTT服务器并实现通讯

亿佰特物联网应用专家 2023-10-27 08:21 次阅读

近年来,随着物联网技术的快速发展,MQTT(Message Queuing Telemetry Transport)作为一种轻量级的通讯协议,被广泛应用于物联网设备之间的通讯。EMQX平台作为一款开源的MQTT消息服务器,提供了稳定可靠的消息传输服务。本次教程中,我们将探讨如何基于EMQX平台自建MQTT服务器,并实现设备之间的高效通讯。无论是在工业控制智能家居还是智能城市等领域,搭建自己的MQTT服务器都能为我们带来更大的灵活性和可扩展性。让我们一起深入了解这个过程,为物联网应用打下坚实的基础。

开始前,我们需要准备一台服务器,本地或是公网服务器均可。此次教程我们使用的是本地服务器,服务器系统使用的是Debian 12系统,公网服务器的方法相同。为了方便新人操作,这里推荐使用Docker搭建方法,可以避免环境不同导致的错误。

服务器中安装Docker以及Docker Compose

在开始之前,我们需要确认服务器的 root 账号是否正常启用。本教程将使用 ssh 的 root 账号连接服务器,请确保服务器能够通过 ssh 工具正常连接。

首先,通过 ssh 连接服务器。这里大家可以任意选择连接的方法,原理相同,不需要完全一致。这里我们为了方便,直接使用本地终端命令 ssh 连接服务器:

caf892aa-745e-11ee-9788-92fbcf53809c.png

接下来,我们需要在服务器上安装 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

cb1cff32-745e-11ee-9788-92fbcf53809c.png

安装完成后,我们可以使用 docker -v 命令查看是否安装成功。

cb27726e-745e-11ee-9788-92fbcf53809c.png

然后,我们开始安装 Docker Compose。在 Docker 的官方文档中可以找到相关的安装教程。

cb374d42-745e-11ee-9788-92fbcf53809c.png

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 命令查看版本,检查安装是否成功。

cb3dc032-745e-11ee-9788-92fbcf53809c.png

至此,我们已经成功安装了 Docker 和 Docker Compose。接下来,我们将正式开始部署 EMQX 服务。

在 Docker 中部署 EMQX 服务

在 EMQX 官网中,我们点击 Download 进入下载页面,可以找到不同系统的教程。

cb682ba6-745e-11ee-9788-92fbcf53809c.png

在本次教程中,我们将使用 Docker 部署,因此我们看到 Docker 部署页面的教程。

cb6c3b56-745e-11ee-9788-92fbcf53809c.png

这里演示使用 SSH 的方式连接服务器。我们可以参考官方介绍进行部署。

使用 Docker 指令直接部署,可以使用以下命令:

docker pull emqx/emqx:5.1.1

cb73d14a-745e-11ee-9788-92fbcf53809c.png

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

cb895740-745e-11ee-9788-92fbcf53809c.png

安装完成后,可以使用 docker ps 命令查看是否安装成功。

cb91ecde-745e-11ee-9788-92fbcf53809c.png

安装完成后,打开浏览器,并在地址栏中输入 http://localhost:18083/(localhost 可以用您的 IP 地址替换)以访问 EMQX 仪表板,您可以从那里连接到客户端或检查运行状态。

默认用户名和密码:

admin

public

cb9b3546-745e-11ee-9788-92fbcf53809c.png

首次登录时,会要求修改密码。根据提示修改密码即可:

cb9f226e-745e-11ee-9788-92fbcf53809c.png

之后,我们即可进入 EMQX 管理页面。

cbaa0756-745e-11ee-9788-92fbcf53809c.png

至此,EMQX 已成功安装到我们的服务器内。接下来,我们可以通过配置 EMQX 平台将 MQTT 设备接入服务器。

使用 MQTT 将设备连接到 EMQX 服务器

接下来,我们将使用串口服务器 NB114 模拟实际设备,演示设备如何使用 MQTT 协议连接 EMQX 服务器。在连接过程中,我们将使用上位机软件和串口调试助手软件(XCOM)。这些软件可在产品相关页面下载,如果您对产品的连接通讯方法不熟悉,可以参考产品的快速入门教程。在这里,我们假设您已经成功连通了设备。

这里我们不详细介绍 EMQX 的配置,您可以参考官方提供的手册进行配置。我们将重点介绍如何进行连接和通讯。

在默认情况下,EMQX 可以直接通过 MQTT 协议连接,无需额外的设置。在“访问控制→客户端授权”页面中,可以配置客户端的访问规则。

cbbaa214-745e-11ee-9788-92fbcf53809c.png

为了方便,我们不进行修改,直接打开上位机软件,配置 NB114 进行连接。

cbcd24fc-745e-11ee-9788-92fbcf53809c.png

其中,“目标 IP”即为 EMQX 的 IP 地址。

cbee3b74-745e-11ee-9788-92fbcf53809c.png

“目标端口”为 MQTT 端口号(1883)。在“平台”中选择“标准 MQTT 3.1.1”,并填写“ClientID”、“UserName”、“PassWord”、“订阅与发布主题”。由于 EMQX 并未配置访问规则,我们可以任意填写这些信息,不会影响设备的连接。完成配置后,点击“保存”并重启设备。稍等片刻,即可看到设备已经成功连接到服务器。我们在 EMQX 服务器中的“监控→客户端”页面中可以查看到设备的连接状态。

cbfa5878-745e-11ee-9788-92fbcf53809c.png

接下来,我们测试发布和订阅主题是否正常。首先,我们需要打开 EMQX 平台中的“问题分析→WebSocket 客户端”页面,并将协议版本设置为 3.1.1,其余内容可以保持不变。完成后,点击“连接”。

cc06c57c-745e-11ee-9788-92fbcf53809c.png

接下来,我们需要设置订阅和发布主题,将其设置为刚才在 NB114 中填写的订阅和发布主题。注意,这里填写的订阅和发布主题需要交叉填写(订阅填写发布的内容,发布填写订阅的内容)。完成后,在订阅主题中,需要先点击“订阅”,确保 WebSocket 客户端能够收到消息。

cc207260-745e-11ee-9788-92fbcf53809c.png

接下来,我们打开串口调试助手(XCOM)软件,填写 NB114 的参数,并选择连接。

cc24bbea-745e-11ee-9788-92fbcf53809c.png

随后,我们发送任意内容,即可在 WebSocket 客户端的订阅列表中查看到相关信息。

cc34affa-745e-11ee-9788-92fbcf53809c.pngcc3f7912-745e-11ee-9788-92fbcf53809c.png

此时,我们再点击发布主题后面的“发布”按钮,即可在 XCOM 软件中查看到相关信息。

cc637f10-745e-11ee-9788-92fbcf53809c.pngcc765dec-745e-11ee-9788-92fbcf53809c.png

至此,我们已经成功实现了 NB114 与 EMQX 服务器之间的通讯。

所有教程相关的内容都已经讲解完成。在本次教程中,我们从 EMQX 服务器的搭建开始,到最终实现设备与服务器之间的基础通讯,全部讲解完毕。当然,本次教程的内容相当基础,设备的连接并未设置任何相关的限制,这样是相当不安全并且浪费资源的。如果您需要将这些内容应用到实际项目中,可以参考 EMQX 手册中的相关内容进行配置。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2903

    文章

    44240

    浏览量

    371002
  • 服务器
    +关注

    关注

    12

    文章

    9010

    浏览量

    85160
  • 通讯
    +关注

    关注

    9

    文章

    892

    浏览量

    34828
  • MQTT
    +关注

    关注

    5

    文章

    649

    浏览量

    22419
收藏 人收藏

    评论

    相关推荐

    【飞腾派4G版免费试用】如何在飞腾开发板上安装EMQX MQTT服务器

    EMQX 是一款大规模分布式物联网接入平台,同时作为一个高性能、可扩展的 MQTT 消息服务器,它可以为物联网(IoT)应用提供可靠的实时消息传输和设备连接解决方案。通过强大的内置规则
    发表于 12-26 11:16

    NB81如何通过MQTT对接EMQX服务器

    NB81如何通过MQTT对接EMQX服务器,有对接流程的参考文档么
    发表于 06-04 06:02

    使用windows版mosquitto软件自建一个服务器

    和消息(指定IP、端口、用户名、口令): h.IG532连接自建MQTT服务器成功 i.使用mqtt.fx订阅主题
    发表于 07-24 06:39

    IG902如何上传数据到MQTT平台EMQX

    EMQX 是全球领先的开源物联网MQTT 5.0服务器,高并发、低延时,内置强大的规则引擎,支持边缘及云端部署,是5G时代大型物联网应用首选技术方案。IG902边缘计算网关,可以通过MQTT
    发表于 07-25 07:09

    LiteOS云端对接教程02-使用EMQ-X搭建私有MQTT服务器

    Broker,它是基于Erlang/OTP语言平台开发,支持大规模连接和分布式集群,发布订阅模式的百万级开源MQTT消息服务器。说起EMQ-X,其它的前身就是emqttd消息服务器
    发表于 02-26 10:05

    转发:基于3861WIFI IOT搭建可视化IOT平台部署智能家居 教程1-搭建MQTT服务器平台

    。文章涉及篇幅较多,故打算用多篇文章来讲解,这是第一章,搭建EMQX服务器。如何搭建EMQX服务器:1.前面说到,搭建一个IOT平台需要一个
    发表于 12-23 17:28

    arduino如何使用esp8266连接自己搭建的emqx服务器

    前言之前总是没时间整理这一部分的内容,现在抽空整理一下arduino使用esp8266连接自己搭建的emqx服务器的内容吧!关于如何自建emqx服务
    发表于 01-27 08:26

    NUC980采集数据通过MQTT发送到消息服务器打印显示步骤分享

    1、MQTT通信测试AT指令控制ESP8266连接WIFI接入互联网,NUC980采集DHT11温湿度传感数据,通过MQTT发送到消息服务器(本人是
    发表于 06-06 15:27

    AT32 EMAC MQTT Client

    _SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。图2. 配置服务端的socket2.4MQTT server搭建MQTT
    发表于 06-16 20:05

    通讯MQTT服务器在线客户端的问题

    我在网上找一个通讯MQTT服务器在线客户端。我有点糊涂,到底是服务器,还是客户端。可以连上,也可以发数据,就是不知道跟谁连。我从上面下了个WIN32客户端,打开,怎么设置都连不上。用
    发表于 11-19 12:17

    通过一台PLC网关同时采集多台PLC数据到MQTT自建服务器

    通过一台PLC网关同时采集多台PLC数据到MQTT自建服务器
    发表于 11-21 09:56 1126次阅读
    通过一台PLC网关同时采集多台PLC数据到<b class='flag-5'>MQTT</b><b class='flag-5'>自建</b><b class='flag-5'>服务器</b>

    物联那点事儿之nodemcu连接emqx自建服务器(arduino+esp8266)

    前言之前总是没时间整理这一部分的内容,现在抽空整理一下arduino使用esp8266连接自己搭建的emqx服务器的内容吧!关于如何自建emqx服务
    发表于 12-03 17:06 15次下载
    物联那点事儿之nodemcu连接<b class='flag-5'>emqx</b><b class='flag-5'>自建</b><b class='flag-5'>服务器</b>(arduino+esp8266)

    EMQX MQTT消息服务器

    emqx.zip
    发表于 04-20 10:05 2次下载
    <b class='flag-5'>EMQX</b> <b class='flag-5'>MQTT</b>消息<b class='flag-5'>服务器</b>

    EMQX Cloud Serverless 正式上线

    MQTT Serverless 云服务——EMQX Cloud Serverless 的 Beta 版本,用户仅 3 秒即可极速创建 MQTT 部署,无需关心
    的头像 发表于 02-06 15:57 1018次阅读
    <b class='flag-5'>EMQX</b> Cloud Serverless 正式上线

    EMQX Cloud BYOC 版本发布:在您的云上体验全托管的 MQTT 消息服务

    近日,全球领先的物联网数据基础设施软件供应商 EMQ 映云科技为其旗下全托管 MQTT 消息云服务产品 EMQX Cloud 推出了 BYOC(Bring Your Own Cloud)版本,该版本
    的头像 发表于 04-18 15:58 478次阅读