Skip to content

设备接入(EMQX 协议) ​

这篇解决什么 ​

外接 EMQX 时网关扮演什么角色。读完能对上 protocol: emqx:网关是 HTTP Hook + MQTT 客户端,不是再起一个 Broker。

产品 protocolType 填 emqx。内嵌 Broker 见 设备接入(MQTT 协议)。总开关见 设备接入(概述)。

示意图:设备只连 EMQX。认证和上下线回调用 Hook。上行靠网关订阅 /sys/#。

从哪改 ​

名称说明仓库路径
协议IotEmqxProtocolruoyi-office/yudao-module-iot/yudao-module-iot-gateway/.../emqx/IotEmqxProtocol.java
Hook/mqtt/auth /mqtt/acl /mqtt/eventIotEmqxAuthEventHandler / IotMqttTopicUtils
样例id: emqx-1,默认关application.yaml

yaml:port: 8090 是 Hook HTTP,不是设备 MQTT 口。设备连 emqx.mqtt-host + mqtt-port(样例 127.0.0.1:1883)。网关自己再用 mqtt-username / mqtt-password / mqtt-client-id 当客户端连上 Broker,默认订 /sys/#,QoS 1。

EMQX 侧要把 HTTP 认证、ACL、Webhook 指到网关 8090 这三条路径。Hook 成功固定回 HTTP 200,body 里 allow / deny / ignore。

事件:client.connected / client.disconnected 用来刷设备在线。注册同样认 clientId 里的 |authType=register|。

Topic 规则与内嵌 MQTT 相同:/sys/{productKey}/{deviceName}/...。ACL Hook 拦跨设备订阅。

样例里 trust-all: true、默认账号只够本机。生产必须关信任全部证书,并改掉 Broker 账号。

字段 ​

名称说明仓库路径
portHook 端口,样例 8090ProtocolProperties
mqtt-host / mqtt-port外部 BrokerIotEmqxConfig
mqtt-topics网关订阅,默认 /sys/#同上
will.topic网关异常下线遗嘱同上

设备不要连 8090

8090 只有 Hook。设备连 EMQX 的 1883(或你改过的 Broker 口)。连错端口就是 HTTP 握手失败。

和内嵌 mqtt 不要同时抢同一套设备

同一产品只能选一个 protocolType。Broker 可以共用机器,产品行不能既写 mqtt 又当 emqx 用。

示意图:按本仓库实现画的时序。

配置与操作 ​

yaml 开 id: emqx-1,protocol: emqx。port: 8090 是 Hook HTTP(/mqtt/auth /acl /event),设备连的是 emqx.mqtt-host:mqtt-port(样例 127.0.0.1:1883)。网关自己当 MQTT 客户端订 /sys/#。

设备不要连 8090。产品 protocolType 填 emqx,不要和内嵌 mqtt 混用同一产品。生产关掉 trust-all。开启见 IoT 功能设计。

IoT 首页

本系统截图:IoT 首页。协议实例在网关 yaml,没有「MQTT / HTTP」独立菜单。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版