1. 功能概述
ThinkLink 的告警通知功能是基于平台强大的 RPC (Remote Procedure Call) 机制 实现的。通过将告警逻辑封装在触发联动模型中,平台能够根据设备上报的数据实时判断是否达到告警条件,并调用预设的 alarm 类型 RPC 消息,实现告警的触发和消除,并通知相关用户或系统。
ThinkLink 平台已内置默认的 ALARM RPC 实现。用户可以基于此默认实现进行修改,以满足特定的告警通知需求。

2. 核心机制:RPC 与数据流
2.1 告警 RPC 消息类型
告警功能通过特定的 RPC 消息类型 alarm 来实现。该 RPC 负责将告警事件(包括触发、消除、告警详情等)发送给平台的告警处理模块,进而触发邮件、短信等通知动作。
关于 alarm RPC 的具体参数配置和实现方法,请参考平台官方文档:
https://mensikeji.yuque.com/staff-zesscp/gqdw7f/lyh7hfbvi9sumrs2#kHHGt
2.2 告警数据流逻辑
告警的触发是一个完整的链式数据处理过程,确保了从原始数据到最终告警通知的准确性和实时性。
|---------------------|----------------------------------------------|--------------------|
| 步骤 | 描述 | 关键组件 |
| 1. 数据上行 | 设备将遥测数据 (Telemetry Data) 上报至 ThinkLink 平台。 | 设备 |
| 2. 物模型解析 | 平台根据设备的物模型 (Thing Model) 对上行数据进行解析和标准化。 | 物模型 |
| 3. 调用触发模型 | 平台调用与设备/资产关联的触发联动模型 (Trigger Linkage Model)。 | 触发联动模型 |
| 4. 条件判断与 RPC 调用 | 触发模型中的脚本判断数据是否达到预设的告警或消除条件,并调用 alarm RPC。 | 触发脚本 / alarm RPC |
3. 告警功能配置流程
用户需要通过以下两个主要步骤来实现自定义告警功能:
步骤一:建立触发联动模型 (Trigger Linkage Model)
告警的触发和消除逻辑完全由触发联动模型中的 JavaScript 脚本控制。
配置建议:
- 触发阈值 :建议将告警阈值(如
alarm_depth、alarm_weight)和通知接收组(如group)等信息配置在设备的服务端属性 (Server Attributes) 中。这样可以通过修改设备属性来实现告警逻辑的动态配置,无需修改脚本。 - RPC 方法 :脚本中必须调用
alarm方法,并传递必要的参数。
触发脚本示例:
以下示例展示了如何根据设备的遥测数据 (depth 和 weight1) 与服务端属性 (alarm_depth 和 alarm_weight) 进行比较,从而决定是触发新告警 (new) 还是消除告警 (clear)。
function trigger_script(device, thingModelId) {
// 定义告警动作常量
const ACTION = {
no: "no", // 无动作
new: 'new', // 触发新告警
clear: 'clear' // 消除告警
};
// 定义告警级别常量
const LEVEL = {
low: 'low',
mid: 'mid',
high: 'high',
urgent: 'urgent'
};
let name = "alarm_bin"; // 告警名称,用于唯一标识
let title = "Alarming : [" + device.name + "]"; // 告警标题
let desc = ""; // 告警描述
let level = LEVEL.high; // 默认告警级别
// 从服务端属性获取通知组,如果未定义则为空数组
let group = device.server_attrs?.group ?? [];
let action = ACTION.clear; // 默认动作为消除告警
let tdata = device?.telemetry_data[thingModelId]; // 获取遥测数据
// 检查关键数据是否存在,若不存在则不处理
if (tdata?.depth === undefined && tdata?.weight1 === undefined) {
return null;
}
// 告警触发逻辑 1: 深度低于阈值
if (tdata?.depth <= device.server_attrs.alarm_depth) {
desc = "[" + device.name + "]" + " warning, please process ";
action = ACTION.new;
}
// 告警触发逻辑 2: 重量高于阈值
if (tdata?.weight1 >= device.server_attrs.alarm_weight) {
desc = "[" + device.name + "]" + " caution!!!!";
action = ACTION.new;
}
// 如果 action 仍为 clear,则表示告警条件已消除
// 如果 action 为 new,则表示触发新告警
// 返回 RPC 调用指令
return {
delayms: 0,
abort_previous_timer: true,
actions: [{
method: "alarm", // 调用告警 RPC
params: {
_eui: device.eui, // 设备 EUI
action: action, // 告警动作 (new/clear)
name: name, // 告警名称
title: title, // 告警标题
level: level, // 告警级别
desc: desc, // 告警描述
group: group // 通知组
}
}]
}
}
步骤二:挂载告警规则
完成触发联动模型的创建后,需要将其与告警规则关联,并挂载到目标对象上。
- 关联规则 :将包含上述脚本的触发联动模型与 ALARM 规则进行关联。
- 挂载对象 :将该 ALARM 规则挂载到对应的 设备 (Device) 、资产 (Asset) 或 子设备 (Sub-device) 上。
完成挂载后,当目标对象上报新的遥测数据时,系统将自动执行触发脚本,并根据脚本的返回结果调用 alarm RPC,从而实现告警通知功能。
TKL+EB组合方案重新定义了LoRaWAN在存量市场改造中的角色:
它不仅解决了传感器无线化接入的难题,更通过EB的灵活性与远程可控性,实现了 硬件先行、软件后置、快速迭代 的新型部署范式。对于广大缺乏技术积累的集成商而言,这是一条通往规模化、标准化物联网项目的捷径。
无论您是传感器厂商、系统集成商,还是智慧城市解决方案提供商,只要您有 将传统设备接入 LoRaWAN 网络的需求 ,我们都诚挚邀请您与门思科技合作。
- 免费提供技术支持与对接服务;
- 无需支付任何费用;
- 只需提供设备样品、说明书及相关接入需求,即可启动对接流程。
ThinkLink 体验地址 :https://thinklink.manthink.cn