设备接入(概述)
这篇解决什么
设备连的是哪套进程、协议实例怎么开。读完能对上 IotGatewayServerApplication + yudao.iot.gateway.protocols,不要以为开了管理端菜单设备就能连上。
默认管理端 48080。网关是另一套进程。产品上的 protocolType 必须和网关实例的 protocol 对上。
示意图:网关收协议。认证和注册回打管理端。上下行业务走消息总线。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 网关启动类 | 单独进程 | ruoyi-office/yudao-module-iot/yudao-module-iot-gateway/.../IotGatewayServerApplication.java |
| 实例列表 | yudao.iot.gateway.protocols | yudao-module-iot-gateway/src/main/resources/application.yaml |
| 启停 | enabled=false 直接跳过 | IotProtocolManager |
| 产品协议 | IotProtocolTypeEnum | yudao-module-iot-core/.../IotProtocolTypeEnum.java |
IotProtocolManager 实现 SmartLifecycle。配置里每条有 id、protocol、port、enabled。默认样例 全部 enabled: false,不改配置启动网关等于没监听。
protocol 取值:mqtt、emqx、http、tcp、udp、websocket、coap、modbus_tcp_client、modbus_tcp_server。和产品行 protocolType 同一套字符串。
RPC 默认 yudao.iot.gateway.rpc.url=http://127.0.0.1:48112,对微服务 iot-server。单体只起 YudaoServerApplication(48080)时,要把 url 改过去,否则认证 / 注册打空。
消息总线默认 yudao.iot.message-bus.type=redis。本机 Redis 仍是 127.0.0.1:6379。
认证:clientId={productKey}.{deviceName},username={deviceName}&{productKey},password 是 HMAC-SHA256。注册走产品 productSecret,见 设备动态注册。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
id / protocol / port / enabled | 一条协议实例 | IotGatewayProperties.ProtocolProperties |
rpc.url | 管理端认证地址 | IotGatewayProperties.RpcProperties |
token.secret / expiration | HTTP 等协议发的设备 Token | IotGatewayProperties.TokenProperties |
默认实例全关
yaml 里的 mqtt-json、http-json、emqx-1 都是关着的。只起网关进程、不改 enabled,端口不会起来。
产品协议和网关实例要对同一字符串
产品写 mqtt、网关只开 emqx,设备连得上 Broker 也过不了本仓库这条协议栈。先定协议再烧 productKey。
示意图:先开实例、再对 RPC,最后才连设备。
配置与操作
没有「设备接入」协议开关页。改网关 yudao-module-iot-gateway 的 yudao.iot.gateway.protocols:每条 id / protocol / port / enabled。默认样例全部 enabled: false,只起 IotGatewayServerApplication 不会监听。
单体要把 rpc.url 从 48112 改到 http://127.0.0.1:48080。产品 protocolType 必须和实例 protocol 同一字符串。消息总线默认本机 Redis 6379。开启见 IoT 功能设计。

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