一:broker
本次演示使用的是 EMQX 作为mqtt的broker
EMQX介绍
EMQX 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。而 MQTT 实际上是一种应用层协议,用于实现轻量的、发布订阅式的物联网消息协议。事实上,虽然 EMQX 的定位是物联网消息协议 MQTT 的 broker,但是它的处理能力已经超过了它的定义。
EMQX安装
在这里,我们使用docker傻瓜式一键部署
环境准备:
- 已安装docker
- 网络通畅
- 开放防火墙或者直接关闭
执行如下命令:
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest
通过浏览器访问 http://localhost:18083/(localhost 可替换为实际 IP 地址)以访问 EMQX Dashboard 管理控制台,进行设备连接与相关指标监控管理。
默认用户名及密码:
- 用户名:admin
- 密码:public
第一次进入系统后会要求修改默认密码
EMQX使用
第一次进入系统,界面如下所示:
图中标注地方因为笔者已经有mqtt的客户端连接到此broker了,初始为0
查看监听器
在这里用户查看或者新增监听器,默认 EMQX 已经为我们设置好了四个通用的监听器,用于监听不同协议的内容
其中,mqtt使用的tcp协议,由上图可知,tcp服务所监听的端口为1883,固localhost:1883即为mqtt服务的broker地址
- tcp:用于MQTT/tcp 服务
- ws:用于websocket 服务 (EMQX自带了一个Websocket客户端,下面有讲)
创建broker客户端认证
即创建连接到该broker的用户名与密码
点击创建,选择 Password-Based => 内置数据库(没有特殊需求的话,一直下一步下一步即可)
点击用户管理,创建用户,结果如下:
此时,一个简单的broker服务就创建好了,那么具体细节是什么呢,这就看下面所说的mqtt配置
MQTT配置
在这里,我们可以配置MQTT客户端连接的一些信息,当然,如无特殊需求,默认即可。
WebSocket 客户端
EMQX 自带了WebSocket 客户端即MQTT的客户端,端口位于监听器中ws对应的端口,配置好账户密码,选择mqtt5协议,点击连接即可。如上图代表成功连接 broker服务
注意:客户端ID 一定唯一
订阅与发布配置
在WebSocket客户端我们约定好订阅一个 主题为 topci01 的主题
其中Qos表示对消息的处理级别,0:即发即忘 1:至少发一次,可重复发 2:只发送一次,但一定确保接收到
发布处配置要发布的主题 为 topic01 与订阅相同,这样当发布一条数据时,订阅topic01后的客户端才可收到相应的数据,结果如上图所示。
MQTTBox
该软件是mqtt的客户端,位于微软商店,可直接下载
在微软商店中直接搜索 mqttBox 下载即可
使用方法
创建MQTT Client
配置broker相关信息
参数详解如下:
- MQTT Client Name:客户端名称,自定义
- MQTT Client id:自定义,但要唯一
- protocol : 协议类型
- Host:连接地址,即 broker 所在地址(troilaBox 或者 EMQX)
- userrName :用户名
- password:连接密码
- Broker is MQTT v3.1.1 compliant?: 是否使用mqtt3协议版本 (这里去掉,我们使用mqtt5版本)
其他默认即可
配置主题等信息
测试
客户端与上位机同时获取了订阅topic01后的数据,测试结果无误。
MQTTX
其他可参考MQTTBox配置,大家都相差不差,参考配置如下:
glxaa:mqtt的Broker与Client使用说明