华为云搭建MQTT服务器(全)

一、进入服务器实例

二、配置安全组

三、远程登录到云服务器终端

四、Linux下安装EMQX

本章节将介绍如何在 Ubuntu 系统中下载安装并启动 EMQX。

支持的 Ubuntu 版本:

  • Ubuntu 22.04
  • Ubuntu 20.04
  • Ubuntu 18.04

2.1 官网地址

链接:https://www.emqx.io/docs/zh/v5.2/deploy/install-ubuntu.html

2.2 通过Apt源安装

EMQX 支持通过 Apt 源安装,免除了用户需要手动处理依赖关系和更新软件包等的困扰,具有更加方便、安全和易用等优点。

在命令行终端,复制下面的命令过去,按下回车键。

【1】通过以下命令配置 EMQX Apt 源:

curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash

【2】运行以下命令安装 EMQX:

sudo apt-get install emqx

【3】运行以下命令启动 EMQX:

emqx start

五、登录EMQX内置管理控制台

EMQX 提供了一个内置的管理控制台,即 EMQX Dashboard。方便用户通过 Web 页面就能轻松管理和监控 EMQX 集群,并配置和使用所需的各项功能。

在浏览器里输入: http://122.112.225.194:18083 就可以访问EMQX的后台管理页面。可以管理以连接的客户端或检查运行状态。

这里面的IP地址,就是自己ECS云服务器的公网IP地址。

打开浏览器后,输入地址后打开的效果:

image-20231108112216658

默认用户名和密码:

用户名:admin
密码:public

第一次登录会提示你修改新密码,如果不想设置,也可以选择跳过(公网服务器部署,还是要修改密码安全些)。

下面修改新密码:

image-20231108112320173

登录成功的页面显示如下:

image-20231108112412396

3.2 MQTT配置

这里可以配置MQTT的一些参数,根据自己的需求进行配置。

image-20231108112603617

3.3 测试MQTT通信

新建一个客户端,点击连接。

image-20231108112632462

连接之后,然后点击订阅,和发布,如果下面消息能正常的接收。说明MQTT服务器通信是已经正常,没问题了。

并且在这个页面也可以看到主题发布主题订阅的格式。

image-20231108112651564

六、MQTT客户端登录服务器测试

接下来就打开我们自己的MQTT客户端登录MQTT服务器进行测试数据的通信。

端口选择: 1883

根据软件参数填入参数,登录,进行主题的发布和订阅。

image-20231108112828605

说明: 目前还没有配置客户端认证,现在只要IP和端口输入正确,MQTT三元组可以随便输入,都可以登录上服务器的,服务器没有对三元组做校验。

EMQ X 默认配置中启用了匿名认证,任何客户端都能接入 EMQX。没有启用认证插件或认证插件没有显式允许/拒绝(ignore)连接请求时,EMQX 将根据匿名认证启用情况决定是否允许客户端连接。

然后打开EMQX的管理后台,可以看到我们的设备已经登录服务器了,名字为test1

image-20231108112900540

在订阅主题的页面也可以看到我们客户端设备订阅的主题。

image-20231108112938585

客户端认证配置

EMQX 默认配置中启用了匿名认证,任何客户端都能接入 EMQX。没有启用认证插件或认证插件没有显式允许/拒绝(ignore)连接请求时,EMQX 将根据匿名认证启用情况决定是否允许客户端连接。

在正式产品里肯定是要启用认证的,不然任何设备都能接入。

下面就介绍如何配置 客户端认证。

【1】打开客户端认证页面

image-20231107160746380

【2】选择密码认证

image-20231107160844450

【3】选择内置数据库

image-20231107160916912

【4】设置认证方式(都可以默认,不用改),直接点击创建。

image-20231107161002220

【5】创建成功后,点击用户管理

image-20231107161043692

【6】添加用户

image-20231107161154596

image-20231107161254779

【7】添加成功

image-20231107161317252

【8】添加完毕之后,打开MQTT客户端可以进行测试。

登录的时候,MQTT用户名和密码必须输入正确,按照上一步添加的信息进行如实填写,否则是无法登录服务器的。

image-20231108113054185

客户端授权配置

客户端授权页面可以配置每个客户端(设备)的主题发布,订阅权限。限制它是否可以发布主题,订阅主题。 如果有需要就可以进行配置。

http://127.0.0.1:18083/#/authorization/detail/built_in_database?tab=users

【1】创建数据源

image-20231107153705954

【2】选择内置数据库

image-20231107153725972

【3】完成创建

image-20231107153746654

【4】点击权限管理

image-20231107153810651

【5】选择客户端ID,点击添加

image-20231107153902413

【6】配置权限

image-20231107161803875

 数据转发(集成)

在集成选项里,可以对设备数据处理。 比如:转发到自己的HTTP服务器,转发到自己其他的MQTT服务器,创建规则,某些事件触发某些动作等等。

image-20231107225638965

选择数据桥接。

可以把数据发送端自己的HTTP服务器,或者发送到其他的MQTT服务器。

image-20231107225815739

选择HTTP服务 (如果自己有HTTP服务器,可以将数据转发给自己的HTTP服务器)。

image-20231107225942506

 

七、MQTT客户端消息互发测试

4.1 添加2个设备

为了方便测试设备间互相订阅主题,数据收发,在客户端认证页面至少添加2个设备。我这里分别添加了test1test2

image-20231107163706657

4.2 设备间测试

设备A订阅设备B的主题,设备B订阅设备A的主题,实现数据互发。

image-20231108113409036

八、MQTT实时图传测试

下面演示,利用MQTT协议进行图像传输。

这是打包好的APP,0积分可以下载,下载下来就可以测试图传:
https://download.csdn.net/download/xiaolong1126626497/88512661

这是MQTT协议图传上位机的Qt源码,如果需要源码的可以到这里下载:
https://download.csdn.net/download/xiaolong1126626497/87614468

这是Qt的工程,利用Qt开发的图传软件,分别为发送端和接收端。

下面演示,利用MQTT协议进行图像传输。

image-20231108114236259

这是Qt的工程,利用Qt开发的图传软件,分别为发送端和接收端。

image-20231107172033585

运行效果: 进行图传效果是非常的好。 报文最大一次可以发送 256MB

image-20231108114241812

 

九、单片机设备上云

只要是MQTT客户端能正常上云通信了,那么单片机也是一样的。

上位机也可以采用MQTT协议接入服务器,订阅设备的主题,就可以实时接收设备的消息(当然,也可以采用HTTP协议接入)。

十、数据桥接

EMQX支持将设备上传的数据转发到其他地方,比如,自己的HTTP服务器。方便自己服务器进行其他的处理。

通过数据桥接,用户可以实时地将消息从 EMQX 发送到外部数据系统,或者从外部数据系统拉取数据并发送到 EMQX 的某个主题。而 EMQX Dashboard 提供了可视化创建数据桥接的能力,只需在页面中配置相关资源即可。

本章节就介绍如何搭建自己的HTTP服务器。配置EMQX转发数据到自己的HTTP服务器,保存处理数据。

搭建HTTP服务器

我这里直接使用python写代码搭建一个HTTP服务器。 ECS服务器上默认没有安装python3,需要先安装一下。

【1】安装python3

root@emqx:~/emqx# apt install python3 Reading package lists... Done Building dependency tree Reading state information... Done python3 is already the newest version (3.6.7-1~18.04). 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

【2】编写代码

from flask import Flask, json, request

app = Flask(__name__)

@app.route('/', methods=['POST'])
def print_messages():
  reply= {"result": "ok", "message": "success"}
  print("got post request: ", request.get_data())
  return json.dumps(reply), 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

将以上代码保存到一个名为 server.py 的文件中。

这段代码创建了一个使用 Flask 框架的 Web 服务器,可以接收根路径的 POST 请求。当接收到 POST 请求时,服务器会将请求的数据打印到终端,并返回一个 JSON 格式的响应给客户端。服务器将在本地运行,并监听默认的 8000 端口。

【3】运行程序

# 安装 flask 依赖
pip install flask
pip3 install flask
    
# 启动服务
python3 server.py

在命令行中执行 python3 server.py,就可以启动一个简单的HTTP服务器,可以接收并处理POST请求。当有POST请求发生时,服务器将返回收到的POST数据。可以根据自己的需要,进一步扩展处理POST请求的逻辑。

**运行示例: ** (代码可以在本地写好上传到服务器,也可以直接 vim server.py 打开编辑器直接编写 )

image-20231108131050910

可以通过发送 POST 请求到 http://your-server-ip:8000/ 的方式来测试这个服务器。

比如:

http://122.112.225.194:8000/

数据转发配置

【1】在集成选项里,可以对设备数据处理,将数据转发到自己的HTTP服务器。

image-20231107225638965

【2】选择Webhook。

Webhook,使用 Webhook 来转发数据到 HTTP 服务;

使用 Webhook 其实就是将 EMQX 接收并处理后的数据发送到一个 HTTP 服务上,再根据预设好的 HTTP 服务来处理和集成业务数据。

同样用户需要有一个预先搭建好的 HTTP 服务,需要在配置信息页面填写 HTTP 请求的服务地址,选择一个请求方法 POST、GET、PUT 或 DELETE,配置请求头,将需要发送的数据使用模板语法填写到请求体(body)中即可。

image-20231108140647960

【3】选配置Webhook

触发器选择所有消息和事件,URL里填自己的服务器地址。

image-20231108142755735

【4】点击测试。 测试服务器是否OK。

image-20231108142850439

【6】没问题就直接点击保存

image-20231108142934893

【7】创建成功

image-20231108142949199

【8】保存之后。 会自动创建规则数据桥接。 非常方便。

image-20231108143109840

image-20231108143045417

image-20231108143015030

测试转发效果

【1】打开MQTT客户端,发送数据测试。

image-20231108143157768

【2】看python服务器的终端,可以看到收到了EMQX服务器转发过来的数据。

如果自己接下来想要进行其他的操作,服务器写代码进行对应的处理即可。

image-20231108143322909

【3】 点击这个服务可以看到已经触发转发的详情。

image-20231108143423459

image-20231108143447694

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值