设备管理
这篇解决什么
设备实例落哪张表、在线状态和密钥在哪。读完能对上 iot_device,以及分组、导入、地图只是同一张表的不同读法。
默认端口 48080。产品见 产品管理。子设备绑网关见 设备网关与子设备。
示意图:设备必须挂产品。groupIds 是多分组,不是中间表。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 设备 | @RequestMapping("/iot/device") | ruoyi-office/yudao-module-iot/.../device/IotDeviceController.java |
| 分组 | /iot/device-group | IotDeviceGroupController |
| 属性 / 消息 | 时序与上下行 | IotDevicePropertyController / IotDeviceMessageController |
| 管理端 | 列表、详情、分组 | ruoyi-office-vben/.../views/iot/device/ |
创建设备:POST /create。改资料:PUT /update。分组:PUT /update-group。删除:DELETE /delete、DELETE /delete-list。分页 GET /page,精简列表 GET /simple-list,有经纬度的 GET /location-list,按产品计数 GET /count。
IotDeviceStateEnum:0 未激活,1 在线,2 离线。onlineTime / offlineTime / activeTime 是网关上报后回写,管理端不要手改当协议。
deviceName 在产品内唯一。deviceSecret 是一机一密。动态注册成功后才有密钥;管理端预创建也会生成。
deviceType 从产品冗余下来。直连 0、子设备 1、网关 2。子设备的 gatewayId 指向网关设备主键。
常量 DEVICE_ID_ALL = 0 表示「全部设备」,规则、场景里会用到,不是真设备行。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
deviceName / deviceSecret | 设备名、认证密钥 | IotDeviceDO |
productId / productKey | 所属产品 | 同上 |
gatewayId | 子设备挂的网关 | 同上 |
state | 未激活 / 在线 / 离线 | 同上 |
groupIds | 多分组,LongSetTypeHandler | 同上 |
config | 下发到设备的 JSON | 同上 |
设备密钥不要写进指南样例当可复用值
deviceSecret / productSecret 是认证材料。文档只写字段名。演示数据里的值不要当生产密钥抄。
在线不是管理端开关
state 由接入网关心跳 / 上下线事件更新。只改 MySQL 行,设备侧连不上。
按本仓库 DO 生成的 ER。分组是设备行上的集合,不是独立关系表。
配置与操作
走管理端 设备列表(views/iot/device/)。POST /iot/device/create 必须挂产品,填 deviceName(产品内唯一)。管理端预创建会生成 deviceSecret。分组 PUT /update-group 写 groupIds。子设备填 gatewayId。
保存后实例在 iot_device。state(0 未激活 / 1 在线 / 2 离线)由接入网关心跳回写,不要手改当协议。DEVICE_ID_ALL = 0 表示全部设备,不是真设备行。

本系统截图:设备接入 → 设备管理(/iot/device/device)。
