- 物联网
- 后端
- 数据可视化
- 消息队列
【免费下载链接】thingsboard
All-in-one IoT Platform - Device management, data collection, processing and visualization.
本文围绕 ThingsBoard 开源项目中的辅助生活(Assisted Living)解决方案展开,讲解如何通过 ThingsBoard Edge 将数据分析与管理下沉到居所本地:从预置的边缘实体Remote Residence R1、已分配的实体清单,到 Edge 安装连接、HTTP 遥测数据推送与云端告警/遥测同步的完整链路。读完本文,你将掌握该解决方案边缘部署的全流程,并理解这些指令在源码中是如何被动态生成的。
一、什么是 ThingsBoard Edge,为什么辅助生活方案需要它
辅助生活解决方案的核心是让养老/护理机构能够远程监控每位居民的生理状态(心率、体温)、居所环境(温度、湿度、空气质量)以及门窗、烟雾、漏水等安全事件,并借助腕带上的紧急按钮及时发出告警。在单点集中部署模式下,所有传感器数据都要回传到中心 ThingsBoard 服务器处理;一旦居所的网络中断,数据与分析就会中断。
按照 edge_instructions.md 的说明,该解决方案可以选择性地扩展到边缘计算(Edge computing)。ThingsBoard Edge 允许把数据分析和设备管理带到“数据产生的地方”即边缘侧,同时按业务需要与 ThingsBoard 云端无缝同步。这在辅助生活场景中特别有价值:当住户分布在同一城镇、不同城市甚至世界各地时,可以在每一处居所分别部署一台 ThingsBoard Edge,让它就地处理该居所的传感器数据,实现实时分析和决策。
边缘计算带来的三个直接收益,文档中明确列出:
- 离线自治:即使居所与中心服务器之间的网络断开,Edge 仍会继续处理数据,不会丢失任何数据,本地即可完成关键决策(例如居民健康状况转为危急时立刻产生告警并呼叫协助);
- 云端同步:一旦网络恢复,需要的数据会被推送到云端;
- 统一配置:边缘计算的业务逻辑集中在单一位置——ThingsBoard 服务器上统一配置,边缘侧无需重复编写规则。
二、解决方案预置的边缘实体:Remote Residence R1
在安装该解决方案时,ThingsBoard 会自动创建一个名为Remote Residence R1(远程居所 R1)的新边缘实体(Edge Entity)。它代表一座需要通过边缘计算来独立运营的远程居所,是后续所有边缘部署操作的入口。
这一点在源码中得到印证:在 DefaultSolutionService.java 的解决方案安装流程中,provisionEdges(user, ctx, request)被显式调用,随后prepareInstructions()(DefaultSolutionService.java)负责把边缘相关说明动态注入到安装说明中,具体逻辑是:
// Inject edge instructions first, then run the full replacement logic on the combined string if (template.contains("${edge_instructions}")) { if (ctx.getCreatedEdges().isEmpty()) { template = template.replace("${edge_instructions}", ""); } else { Path edgeFile = ctx.getTempDir().resolve("edge_instructions.md"); String edgeTemplate = Files.exists(edgeFile) ? readFileContent(edgeFile) : ""; template = template.replace("${edge_instructions}", edgeTemplate); } }也就是说,只有当解决方案实际创建了边缘实体时,本关联文档的内容才会被注入到用户看到的安装说明中;未创建边缘实体时该占位符会被替换为空。
三、已绑定到边缘实体的实体清单
为了让边缘部署开箱即用,解决方案把特定实体与实体分组预先分配(assign)到了边缘实体Remote Residence R1上,用户无需手工逐个绑定:
| 已分配实体 | 类型 | 说明 |
|---|---|---|
| "Administrators" | USER用户组 | 客户 "Assisted Living Company" 的管理员组 |
| "Residents" | USER用户组 | 客户 "Assisted Living Company" 的居民组 |
| "Floor 1" | 资产 (Asset) | 楼层 1 |
| "Floor 2" | 资产 (Asset) | 楼层 2 |
| "Root 101" | 资产 (Asset) | 房间 101 |
| "Root 102" | 资产 (Asset) | 房间 102 |
| "D00000010001" | 设备 (Device) | 房间传感器设备 |
| "D00000020002" | 设备 (Device) | 房间传感器设备(居民 William Harris 关联设备) |
| "C00000015FE1" | 设备 (Device) | 传感器设备 |
| "C00000025FE2" | 设备 (Device) | 传感器设备(用于模拟心率数据推送) |
| "Assisted Living" | DASHBOARD仪表盘组 | 辅助生活主仪表盘 |
注意(文档原文提醒):受默认边缘许可(default edge license)的实体数量限制,这里只分配了有限数量的资产和设备到边缘;实际生产环境可按许可容量扩充。
这些传感器的类型与报警能力可以在本仓库的辅助生活解决方案报警规则目录中直观印证:alarm_rules 下按传感器逐一预置了报警规则,例如腕带心率异常al_wristband_heart_rate.json、紧急按钮al_wristband_panic_button.json、门磁al_doorsensor_door_open.json、漏水al_leaksensor_water_leak.json、烟雾al_smokesensor_smoke.json、室内温度/湿度/空气质量al_roomsensor_temperature.json等。正是这些规则在边缘侧被实时执行,才支撑起“本地决策”的离线自治能力。
四、安装 ThingsBoard Edge 并连接云端
文档给出的安装路径非常明确:
- 导航到Remote Residence R1 的边缘详情页(edge details page);
- 点击"Install & Connect instructions"(安装并连接说明)按钮,获取针对该边缘实例的安装与连接指引;
- 按指引完成 Edge 安装并与云端建立连接;
- 连接成功后,使用租户凭据(tenant credentials)登录边缘,即可开始管理边缘侧实体。
从源码层面看,上述“边缘详情页”链接不是写死的,而是安装过程中动态生成的。在 DefaultSolutionService.java 中,每个已创建边缘实体的详情 URL 会替换掉模板里的${Remote Residence R1EDGE_DETAILS_URL}占位符:
// Edge detail URLs for (Map.Entry<String, EdgeLinkInfo> edgeLinkInfoEntry : ctx.getCreatedEdges().entrySet()) { ... String edgeName = edgeLinkInfoEntry.getKey(); String edgeDetailsPlaceholder = "${" + edgeName + "EDGE_DETAILS_URL}"; template = template.replace(edgeDetailsPlaceholder, edgeDetailsUrl.toString()); }因此用户最终看到的是一串指向自己租户环境中该边缘详情页的真实 URL,可直接点击进入。
五、设备自动下发与向边缘推送遥测数据
所有已分配给边缘实体Remote Residence R1的设备都会自动下发(provision)到边缘。登录边缘后,进入Entities -> Devices页面即可看到这些设备。
为了验证边缘链路,文档提供了一条可直接执行的模拟命令:以居民"William Harris"的名义模拟一次心跳/脉搏(pulse)数据上报,把数据从居所本地上推到边缘:
curl -v -X POST -d "{\"serial\": \"C00000025FE2\", \"data\":{\"pulse\":55}}" http://localhost:8080/api/v1/${D00000020002ACCESS_TOKEN}/telemetry --header "Content-Type:application/json"{:copy-code}其中:
serial:为"C00000025FE2",标识发出数据的传感器设备;data.pulse:设置为55,模拟居民 William Harris 的脉搏值;D00000020002ACCESS_TOKEN:设备D00000020002的访问令牌(Access Token),会在安装说明生成时被真实令牌替换——见 DefaultSolutionService.java 中的${...ACCESS_TOKEN}替换逻辑;- 请求头
Content-Type: application/json表明 POST 体为 JSON 格式。
边缘 HTTP 端口被修改的情况
如果在边缘安装过程中,把边缘的 HTTP8080 绑定端口改成了 18080,则需要使用下面的等价命令(端口不同,其余完全一致):
curl -v -X POST -d "{\"serial\": \"C00000025FE2\", \"data\":{\"pulse\":55}}" http://localhost:18080/api/v1/${D00000020002ACCESS_TOKEN}/telemetry --header "Content-Type:application/json"{:copy-code}两条命令均通过 ThingsBoard 标准遥测上传接口/api/v1/{accessToken}/telemetry推送,区别仅在于目标主机的端口。
六、数据推送后的预期结果:本地告警与云端同步
文档明确描述了数据推送到边缘后的预期行为:
- 边缘侧产生告警:以 William Harris 名义推送的数据(pulse=55)会触发辅助生活仪表盘上的告警生成——这依赖于预先配置的腕带报警规则(如心率异常、紧急按钮等规则),相关规则文件见 alarm_rules/al_wristband_heart_rate.json;
- 云端遥测同步:同一居民的遥测更新会通过边缘与云端的同步机制上传到 ThingsBoard 云端,你可以在云端查看该居民的实时遥测数据。
这正是前文“离线自治 + 云端同步 + 统一配置”三种能力的直观验证:数据先到达边缘,边缘本地完成实时分析与告警决策,随后按同步策略将数据推送至云端。
七、总结与实践要点
- 辅助生活解决方案的 Edge 扩展是可选的,核心前提是居所分布在不同地理位置且可能面临网络不稳定;
- 安装解决方案后会自动创建边缘实体Remote Residence R1,并预绑定用户组、资产、设备与仪表盘组,减少手工配置;
- 边缘设备由云端自动下发,登录边缘后在Entities -> Devices中即可查看;
- 通过
/api/v1/{ACCESS_TOKEN}/telemetry接口即可模拟设备向边缘上报遥测,注意边缘 HTTP 端口(默认 8080,可改为 18080); - 推送成功后,辅助生活仪表盘会即时生成告警,云端也会收到同步的遥测数据;
- 分配的实体数量受默认边缘许可限制,扩容前需评估许可容量。
若需复现本文全部内容,可直接阅读仓库中的原始说明文档 edge_instructions.md,并结合 DefaultSolutionService.java 理解安装说明与边缘链接的动态生成机制。
- 物联网
- 后端
- 数据可视化
- 消息队列
【免费下载链接】thingsboard
All-in-one IoT Platform - Device management, data collection, processing and visualization.
相关推荐
DiceDB边缘计算:边缘部署方案
DiceDB边缘计算:边缘部署方案 边缘计算时代的数据存储挑战 在边缘计算(Edge Computing)快速发展的今天,传统集中式数据库架构面临着前所未有的挑
数据库缓存后端5分钟快速上手LXGW Neo XiHei字体:完整安装配置指南
5分钟快速上手LXGW Neo XiHei字体:完整安装配置指南 LXGW Neo XiHei(霞鹜新晰黑)是一款基于IPAex Gothic改造的中文黑体字体
ThingsBoard 水表计量解决方案边缘计算扩展实战指南:远程设施本地处理与边缘-云数据同步
ThingsBoard 水表计量解决方案边缘计算扩展实战指南:远程设施本地处理与边缘 云数据同步 这篇技术指南以 ThingsBoard 官方 Water Me
物联网后端数据可视化消息队列
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考