系统升级
系统平台 → 系统升级,用于升级 ThinkLink 自身(不是网关、不是固件)。

页面顶部显示当前部署的核心版本信息:
| 字段 | 含义 |
|---|---|
| mode | 部署形态:gw(TKG,网关版) / tke(独立部署版) / tkc(Docker 容器部署) |
| DB.Ver | 当前数据库 schema 版本 |
| P.Ver | 当前程序版本 |
关键:TKG 与 TKE 升级包不通用
后端会根据当前 mode 校验上传包的文件名前缀,传错包会直接被拒:
| 当前 mode | 接受的升级包前缀 | 示例 |
|---|---|---|
gw | tkg 开头 | tkg-2.00.020.tar.gz |
tke 或 tkc | tke 开头 | tke-2.00.020.tar.gz |
不要混传
- TKG 包(
tkg-*.tar.gz)只能传给mode=gw的网关版部署。 - TKE 包(
tke-*.tar.gz)可以传给mode=tke或mode=tkc的部署,独立部署和 Docker 部署共用同一类包。 - 上传错前缀的包会立即报"The upgrade package name is invalid"。
升级流程
- 备份数据库(强烈建议)。
- 准备好与当前 mode 匹配的
.tar.gz升级包。 - 点页面上的
上传并升级,选择升级包。 - 后端自动完成以下动作:
- 把上传的
.tar.gz解压到升级目录; - 校验解压后是否包含
tkl_upgrade.sh,没有就报错回滚; - 执行
tkl_upgrade.sh完成主升级; - 如果存在
tkl_post_upgrade.sh,再执行清理脚本(删除上传包、清空升级目录)。
- 把上传的
- 升级过程中 ThinkLink 服务可能重启,页面会短暂不可用。等服务恢复后刷新,查看
P.Ver/DB.Ver是否变成新版本。
风险提示
- 升级前务必备份数据库,并确认有回退方案。
- 升级期间不要断电、不要 kill 进程。
- 网关上的 TKG 部署在远端时,确保你有 SSH 兜底通道,万一 Web 服务起不来可以从后台干预。
- 大版本之间的 schema 变更不可逆,跨多个版本升级前先看对应版本的 release notes。
与"网关升级包"的区别
| 系统升级(本页) | 网关升级包 | |
|---|---|---|
| 升级谁 | ThinkLink 本体(TKG/TKE/TKC) | 被纳管的网关设备固件 |
| 谁操作 | admin 在系统平台直接上传 | admin 上传到系统,租户在自己的"网关管理"页下发 |
2.00.084–2.00.085 升级说明
基线:后端由 2.00.083 72f15f5 经 2.00.084 ee0a198 到 2.00.085 ec61d78;配套前端由 6050602 经 0a62364 到 da5e848,前端按提交核对,不假定同名版本号。当前是源码和文档契约更新,未部署、未执行目标数据库迁移、未完成真实设备验收。
| 功能 | 升级后的使用要求 |
|---|---|
| 设备在离线通知 | 设备/模板默认关闭,按实际心跳启用;严格超过两倍心跳超时,历史消息按接收时间刷新;关闭保留最后状态 |
| MQTT 状态通知 | 状态变化事件不是报警;API online、属性 _online 和 MQTT data.online 尚未统一 |
| BACnet 属性来源 | 自由字符串来源、属性路径及来源参与唯一键;对象 units 与物模型 unit 区分,默认值不代表检测结果 |
| RPC 搜索及备注 | 名称/标识/缺少标识时的 ID 搜索;多处列表备注显示两行并悬停展开,存储不变 |
程序与数据库迁移
- 按现有发布流程备份程序、数据库与服务配置。构建使用对应锁文件;084 新增
@stevenleep/timewheel,生产包必须包含work-thread/device-status/index.js及迁移 SQL。 - 从 083 到 085 按顺序执行 084、085 迁移;从 084 到 085 执行 085;更早版本仍需补齐中间迁移。程序版本变化或页面可打开不能证明数据库升级成功。
- 084 的
sql/ver-2.00.084/system-01-device-status.sql为系统级设备表及设备模板表添加默认"FALSE"的notify_offline。 - 085 包含
sql/ver-2.00.085/system-01-version.sql和sql/ver-2.00.085/tenant-01-bacnet-data-source.sql。后者为各租户bacnet_object增加默认telemetry_data的data_from,唯一键扩展为(eui, data_from, thing_model, field_name)。 - 085 租户 SQL 使用无 schema 的
"bacnet_object",依赖升级器逐租户设置search_path;不要在任意连接默认 schema 下单独执行,也不要替换不存在的 schema 占位符。 - 核对目标程序/数据库版本、每个租户列及索引、Worker 启动、BACnet 服务与点表同步、配套前端保存回读。升级不会自动开启全部设备检测或生成全部状态对象。
兼容与目标环境验收
- 验证新旧设备/模板、旧 Excel 缺列保留、普通新增默认关闭及模板继承;模板重置保留活动时间并重新计算。局部更新不覆盖未读取字段。
- 验证在线、超时离线、恢复、重复消息不重复通知、关闭再开启、历史消息、Worker 恢复、跨租户同 EUI 隔离;检查缺失心跳和截止恰好相等时的三种状态口径。
- 验证旧遥测点表、属性路径、不同来源同名字段、未知来源默认值和 0/false;确认
_online变化到达正确组织 BACnet 点位,区分 Input 拒绝写入与 Output/Value RPC 成功、失败、设备反馈。 - 浏览器验证开关、来源输入、RPC 搜索和备注展开。分别报告文档/契约已更新、已部署、联调通过,不以源码检查代替实际验收。
随源码验证记录称:084 类型检查、针对性测试和独立 Worker 打包运行通过,但全量测试 424 项中 384 通过、36 失败、4 跳过;085 最终针对性测试 102 项及类型检查通过,含本机 UDP/COV/Worker 等,升级器使用模拟租户。前端仍有 91 项基线类型错误,记录称无新增诊断。这些是上游记录,本轮文档工作没有重跑后端/前端测试;它们不证明全量失败已解决、真实数据库迁移、MQTT/Modbus/BACnet 设备联调、前端浏览器交互或完整生产构建已通过。
2.00.080–2.00.083 升级说明
本节以 tkl-main 2.00.083 和配套 tkl-web 为基线,合并近期使用变化。先确认目标前后端实际版本、数据库迁移及接口能力,再启用功能。
| 功能 | 操作调整 |
|---|---|
| 文件管理 | 资源管理 → 文件管理;普通文件单文件及组织合计均为 50 MiB。替换保留身份及链接,关闭共享使旧公开链接失效。 |
| 微应用 | 资源管理 → 微应用,管理权限 1401;最多 10 个应用,每应用 20 MiB。保留应用 ID、配置与业务权限,核对旧角色迁移。 |
| 设备编辑 | 分组按需读取,保存差异;新增 3D 配置页签,对象或 null,保存后回读。 |
| 位置详情 | 区分本级与本级及子孙级;总览使用最少字段和完整分页。 |
| BACnet | 参数保存后点击重启;点表修改自动同步,检查运行状态和同步错误。同一后端进程只运行一个组织实例。 |
| 组织服务权限 | SYSADMIN 禁用 Modbus/BACnet 后停止服务并隐藏入口,保留配置与点表;重新允许后需组织手动启动。 |
管理员和运维检查
- 备份并按升级器执行应有迁移;核对外部视图、报表和直连 SQL。六组设备数据已迁至 device_data,2.00.082 的 3D 主表列是过渡结构,2.00.083 最终迁入 device_data;不要跳过必要迁移。
- 核对资源管理角色权限(父菜单 1400、微应用 1401、文件管理 1402),验证配额、替换后内容更新、共享关闭与票据到期。
- 核对 3D 对象、null、空对象及并发保存回读,位置范围、完整分页和跨组织隔离。保存成功不等于运行时生效、持久化完成或真实设备执行。
- 系统 LoRaWAN 网关档案属于 SYSADMIN;释放设为 RELEASE 并禁用,不是物理删除。分别检查
pgResult和tkoResult,数据库成功不等于 ThinkOne 同步成功。bigint 使用十进制字符串;保存省略 tenant 可能释放归属,不能当作保留。 - 租户删除报错可能发生在业务数据已删、LoRaWAN 释放或运行资源清理阶段。先查各阶段结果,不自动重建或认定全部未执行;文件和 BACnet 实例也需核验。
PG_WORKER是指定网关名单的临时维护补丁。符合条件时可能清理日志、修复 PostgreSQL 参数并重启 pgsqlDB 容器。增量迁移有历史名单,新安装为空;上线前核对当前名单及维护窗口,不复制历史网关 EUI 或执行结论。MQTT OK 不等于现场参数已生效。
本手册发布不包含业务平台部署、数据库迁移或设备验收。
2.00.077–2.00.079 升级说明
| 版本 | 功能变化 |
|---|---|
2.00.077 | BACnet 点表修改后自动同步至正在运行的服务,无需再点击“应用点表”;支持数值变化通知和可写点位控制。 |
2.00.077 | 新增 BACnet、Modbus TCP 的组织服务使用权限。关闭权限会停止对应服务并隐藏入口,保留配置和点表;重新允许后需手动启动。 |
2.00.078 | 为指定维护范围内的网关提供数据库运行修复,增加日志清理并调整数据库资源配置。修复时数据库会短暂重启。 |
2.00.079 | 支持定制列表、卡片和驾驶舱按需获取设备信息,减少不需要的数据传输;标准设备列表的现有操作方式保持不变。 |
2.00.071–2.00.073 升级说明
| 功能 | 变化 |
|---|---|
| 场景管理 | 设备按物模型分组绑定;选择物模型后,可分页选择设备并批量绑定或解除绑定。首次从旧版场景结构升级时,旧场景及绑定需重新建立;设备、物模型和遥测数据保留。 |
| 微应用 | 同一应用可同时支持 PC 和移动端,也可只选择一种终端;支持按终端筛选。 |
| 主应用设置 | 每个租户最多设置一个支持移动端的主应用。设置新主应用时自动取消旧设置,也可关闭全部主应用设置。 |
| 对象存储配置 | 升级保留已有系统配置,不再自动写入默认配置。 |
2.00.070 升级说明
| 功能 | 变化 |
|---|---|
| 位置管理 | 位置按完整路径显示和导入导出,保留原位置编码及设备、网关绑定。列表删除选中位置,树形删除包含下级位置;两种操作都不删除设备或网关。 |
| 微应用 | 增加 PC、移动端分类和筛选,原有应用归入 PC。 |
| 部门管理 | 增加部门详情查看;支持在定制设备或成员视图中汇总多个部门及其下级部门,同一设备或成员只计一次。标准设备列表的部门筛选方式保持不变。 |
| 数据转发 | 改善 MQTT 断线重连后的转发恢复。 |
| 设备模板 | 改善通过模板新增及重置设备时的数据一致性,保留过程数据。 |