栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【MQTT服务器】(一)EMQX平台搭建

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【MQTT服务器】(一)EMQX平台搭建

系列文章目录

【MQTT服务器】(一)EMQX平台搭建

【MQTT服务器】(二)数据库存储消息

【MQTT服务器】(三)MQTT终端设备

【MQTT服务器】(四)搭建网页

目录

系列文章目录

【MQTT服务器】(一)EMQX平台搭建

【MQTT服务器】(二)数据库存储消息

【MQTT服务器】(三)MQTT终端设备

【MQTT服务器】(四)搭建网页

前言

二、使用步骤

1.下载EMQX安装包

2.上传EMQX安装包

3.start运行

 4.网页查看

总结


前言

       现在网上的物联网平台还是挺多的,比如国外开源的homeassistant,阿里云的物联网平台,其它云也有对应的物联网平台就不一一说了。在物联网设备中,最重要的就是联网通讯了,上报设备的状态或者信息,接收指令等等。物联网的通讯协议常见的有下面七种:MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP。

        MQTT协议(低带宽),一般适用于设备数据采集从端到服务器的集中星型网络架构
        DDS协议(高可靠性、实时),广泛应用于国防、民航、工业控制等领域
        AMQP协议(互操作性),主要适用于移动手持设备与后台数据中心的通信和分析
        XMPP协议(即时通信),在互联网及时通讯应用中运用广泛
        REST/HTTP(松耦合服务调用),客户端和服务器之间交互松耦合,适合在物联网的应用层面
        CoAP (受限应用协议),适用于在资源受限的通信的IP网络
        JMS (JAVA消息服务),用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信

MQTT因为其低带宽的优点,现在大部分嵌入式物联网设备都是采用的这种协议。


一、EMQX是什么?

EMQX (Erlang MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。

Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台,而MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。

EQMX消息服务器具有以下特点。

  1. 稳定承载大规模的 MQTT 客户端连接,单服务器节点支持 200 万连接。
  2. 分布式节点集群,快速低延时的消息路由。
  3. 消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
  4. 完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持

可以看到,EMQX性能是非常强大的,而且还可以进行分布式配置节点,作为只有十个不到的物联网设备测试服务器是绰绰有余的。

二、使用步骤

1.下载EMQX安装包

        网上获取EMQX安装包的途径还是蛮多的,github或者官网都可以下载,不是CentOS 8系统推荐官网下载,因为可以直接选择平台和格式,不用自己一个一个去找。

        我使用的阿里云服务器是CentOS 8.2 64位,censtos8在2021年12月31日已经完成生命周期了,官网推荐的版本选择amd64.rpm格式,虽然能安装,但是运行会报错,找了半天,终于找到一个能用的版本--4.3.8版本的github地址。

        出现下面的错误,都是下载的安装包跟平台不一致导致的。

错误一:

{"init terminating in do_boot",{undef,[{crypto,start,[],[]},{init,start_em,1,[]},{init,do_boot,3,[]}]}}
init terminating in do_boot ({undef,[{crypto,start,[],[]},{init,start_em,1,[]},{init,do_boot,3,[]}]})

Crash dump is being written to: erl_crash.dump...done
FATAL: Unable to start Erlang.
Please make sure openssl-1.1.1 (libcrypto) and libncurses are installed.
Also ensure it's running on the correct platform,

错误二:

./emqx: line 40: /home/emqtt/emqx/erts-12.1.5/bin/erl: cannot execute binary file: Exec format error
FATAL: Unable to start Erlang.
Please make sure openssl-1.1.1 (libcrypto) and libncurses are installed.
Also ensure it's running on the correct platform,
this EMQX release is built for 24.1.5-3-aarch64-unknown-linux-gnu-64-el8

2.上传EMQX安装包

        直接通过宝塔面板将文件上传到服务器上,rpm格式的安装包可以直接安装,zip格式的可以在同一个页面这直接进行文件解压。

​ 

        刚刚也说了,CentOS 8已经停止服务了,yum会报错。

        解决方法,直接找阿里云小智--CentOS 8 EOL如何切换源?

3.start运行

       rpm安装方式,可以不用管当前所在路径,输入下面命令直接开始运行。

emqx start

        zip安装方式需要,切换到bin目录,用以下方式运行。

./bin/emqx start

        下面这个就表示运行成功了。

 4.网页查看

       因为安全组的问题,阿里云和宝塔面板都需要放行以下端口,不然无法访问页面,MQTT消息也没法发送/接收。

        EMQX首页页面默认是18083端口,所以在浏览器里面输入下面的地址就行。

http://[ecs公网地址]:18083/

 EMQX的首页页面。

 可以设置成中文

        现在没有设备连接,所以客户端界面没有显示,可以使用emqx自带的网页版本。

         也可以使用MQTT.fx软件,作为一个客户端进行连接测试,首先需要配置一下服务器。    

 主要是配置emqx服务的ip和端口1883(不是网页页面的端口,这个是MQTT通信的端口),模拟设备的用户名(多个设备的用户名不能重复,不然会导致冲突,一个上线了另外一个就会下线),其它的默认就行,如果设置了用户和密码,需要在User Credentials里面配置。

         配置完,点击Connect就可以连接了,可以看到fx001已经显示出来了。

        可以在Subscribe先订阅一个主题,然后回到Publish发布一个消息。

         现在是同一台电脑订阅、发布,你也可以换另外一个设备Publish发布一个aaa的消息。

         订阅里面可以看到成功发布了aaa的消息。

         怎么通过emqx查看是否收到消息呢?可以通过主题监控,新建刚刚的MQTT_TEST/a主题

         再发送一条abc消息,可以看到消息流入是Publish界面发布的,消息流出是订阅Subscibe界面收到的。


总结

        EMQX的安装和简单使用教程基本上到这就结束了,这里还存在一些问题,比如网页上是无法查看主题具体发布了什么消息,只能查看到统计数量,并且消息没有记录到数据库里面进行保存,下一节搭建一个服务器显示消息和保存数据到数据库。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/858930.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号