物模型配置
这篇解决什么
属性、事件、服务各落哪一行、TSL 从哪拼。读完能对上 iot_thing_model,不要指望一张 JSON 大字段装整个产品。
默认端口 48080。产品先建好见 产品管理。设备上报按这里的 identifier 对列。
示意图:一个功能一行。TSL 接口按 type 拆成三组 JSON。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 物模型 | @RequestMapping("/iot/thing-model") | ruoyi-office/yudao-module-iot/.../thingmodel/IotThingModelController.java |
| 类型 | IotThingModelTypeEnum | yudao-module-iot-api/.../IotThingModelTypeEnum.java |
| 管理端 | 属性 / 服务 / 事件 / TSL | ruoyi-office-vben/.../views/iot/thingmodel/ |
接口:POST /create、PUT /update、DELETE /delete、GET /get、GET /list、GET /page、GET /get-tsl。权限字 iot:thing-model:*。
type:1 属性,2 服务,3 事件。属性细节在 property JSON(ThingModelProperty),服务在 service,事件在 event,MyBatis 用 JacksonTypeHandler。
同一产品下 identifier 是设备侧功能名。改 identifier 等于改协议字段,已上报的历史对不上新列。
get-tsl 只读拼装,不另存 TSL 表。前端 modules/tsl.vue 展示这份结构。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
productId / productKey | 挂哪个产品 | IotThingModelDO |
identifier / name | 功能标识、显示名 | 同上 |
type | 属性 / 服务 / 事件 | 同上 |
property / event / service | 对应 type 的 JSON | 同上 |
物模型行没有租户列
IotThingModelDO 继承 BaseDO,不是 TenantBaseDO。租户边界在产品。跨租户不要直接拿 productKey 拼物模型。
属性进 TDengine,事件服务不进同一套列
改属性后走产品页的 POST /iot/product/sync-property-table。只改事件或服务,不用同步时序表。
按本仓库 DO 生成的 ER。一对多,不是一产品一行。
配置与操作
产品建好后走 物模型 页(views/iot/thingmodel/),POST /iot/thing-model/create。填 productId / productKey、identifier、name、type(1 属性 / 2 服务 / 3 事件),细节写对应 JSON。权限字 iot:thing-model:*。
保存后设备上报按 identifier 对列。改 identifier 等于改协议字段,历史对不上新列。改属性后再走产品页 POST /iot/product/sync-property-table。只改事件或服务不用同步时序表。GET /get-tsl 只读拼装,不另存 TSL 表。

本系统截图:产品页。物模型菜单 4037 默认隐藏,从产品进。
