设备网关与子设备
这篇解决什么
网关和子设备怎么绑、gatewayId 谁写。读完能对上产品 deviceType 2 / 1,以及管理端绑定和动态注册绑定是同一列。
默认端口 48080。设备主数据见 设备管理。子设备换密钥见 设备动态注册。
示意图:两类产品。绑定只写子设备行的 gatewayId。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 绑定 | PUT /iot/device/bind-gateway | ruoyi-office/yudao-module-iot/.../device/IotDeviceController.java |
| 解绑 | PUT /iot/device/unbind-gateway | 同上 |
| 子设备列表 | GET /sub-device-list | 同上 |
| 未绑定分页 | GET /unbound-sub-device-page | 同上 |
| 详情页 | 子设备 Tab | ruoyi-office-vben/.../device/detail/modules/sub-device.vue |
IotProductDeviceTypeEnum.isGateway 认 2。isGatewaySub 认 1。直连 0 没有 gatewayId 语义。
管理端绑定:传入 subIds + gatewayId。解绑同样要带子设备和网关,防止解错家。未绑定分页给「还能挂到这台网关」的子设备用。
动态注册路径:网关已在线,代子设备调 register-sub。子设备必须已预创建,且产品是网关子设备类型。已绑别的网关会抛 DEVICE_GATEWAY_BINDTO_EXISTS。
网关设备自己也是 iot_device 一行,deviceType 从网关产品冗余。不要另建「网关表」。
协议细节(MQTT 代理子设备 topic 等)按协议篇写。本篇只保证主数据关系。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
deviceType | 1 子设备 / 2 网关 | IotDeviceDO / IotProductDO |
gatewayId | 子设备指向网关主键 | IotDeviceDO |
subIds / gatewayId | 管理端绑定入参 | IotDeviceBindGatewayReqVO |
子设备产品不能拿去当网关
registerSubDevice0 会校验产品 deviceType 必须是网关子设备。网关产品下建出来的设备才能当 gatewayId。
绑定和注册写的是同一列
管理端 bind-gateway 与子设备动态注册都更新 iot_device.gatewayId。查绑关系看这列即可,没有第二张关系表。
按本仓库 DO 生成的 ER。两行都在 iot_device。
配置与操作
走 设备详情 子设备 Tab。绑定 PUT /iot/device/bind-gateway,解绑 /unbind-gateway,都要带 subIds + gatewayId。网关产品 deviceType=2,子设备 1,直连 0 没有 gatewayId 语义。两行都在 iot_device,没有第二张关系表。
动态注册绑定写同一列。已绑别的网关抛 DEVICE_GATEWAY_BINDTO_EXISTS。开启见 IoT 功能设计。

本系统截图:设备管理。网关和子设备都是 iot_device 一行,绑定写 gatewayId。
