tthingsboard规则链(基于社区版本)
一、筛选器Filter1、alarm status filter将入站负载解析为ThingsBoard告警按ID获取最新告警并将其当前状态与配置的状态集合比对。 若获取的状态匹配消息经True路由否则经False路由。解析错误、缺少告警ID或不存在的告警会导致Failure。专门对告警消息按当前告警状态做过滤决定是否继续往下发通知、脚本、转发等T适用场景只在新告警 / 未确认告警时发邮件 / 短信已确认告警不再重复通知告警清除时触发恢复逻辑只统计活跃告警、不处理已清除告警每条告警有这 4 种状态状态英文含义活跃未确认ACTIVE_UNACK刚触发、没人处理最需要通知活跃已确认ACTIVE_ACK已有人确认但问题还在已清除未确认CLEARED_UNACK问题恢复但没人确认恢复已清除已确认CLEARED_ACK问题恢复且已确认闭环ThingsBoard节点配置最简在规则链里添加Alarm Status Filter配置里勾选要放行的状态例如只通知新告警勾选 Active Unacknowledged处理所有活跃告警勾选 Active Unacknowledged Active Acknowledged处理恢复勾选 Cleared Unacknowledged / Acknowledged输出连线True状态匹配往下走发邮件 / 脚本False不匹配丢弃Failure告警不存在 / 解析错误ThingsBoard2、Asset Profile SwitchAsset Profile Switch资产配置分发 节点的核心作用是根据消息来源资产Asset绑定的「资产配置文件Asset Profile」自动将消息路由到不同的规则链分支。它本质上是一个资产类型的分流器专门针对资产数据做逻辑分发和设备用的 Device Profile Switch 是一对分别处理资产和设备的分流需求。消息处理逻辑检查入站消息的来源实体类型是否为ASSET。若不是ASSET则以Failure结束处理。从数据库获取该资产的配置以得到配置名称。若未找到配置例如消息处理时来源实体已不存在则以Failure结束处理。使用标签与获取的配置名称完全匹配的连接将入站消息路由至下游节点。输出连接资产配置名称当入站消息的来源实体类型为ASSET且已找到该资产的配置时。Failure当入站消息的来源实体类型不是ASSET时。当未找到入站消息来源实体的配置时。消息处理过程中发生其他意外错误时。3、check fields presenceCheck Fields Presence 是 ThingsBoard 社区版CE中一个非常实用的过滤器节点核心作用是检查消息中是否存在指定字段并根据结果分流。一、核心作用检查消息中是否包含你配置的所有字段字段全部存在 → 走 Success 分支任意一个字段缺失 → 走 Failure 分支仅检查字段是否存在不校验字段值是否合法如是否为空、是否为数字二、配置与使用步骤添加节点在规则链中搜索并添加 Check Fields Presence配置字段列表在节点配置界面点击 添加需要校验的字段名如 temperature、humidity支持添加多个字段节点会同时校验所有字段字段名大小写敏感必须和消息体中的字段名完全一致设置输出分支Success连接后续处理节点如 Save Telemetry、告警节点Failure连接丢弃或日志节点过滤无效数据4、check relation presence根据配置的方向和关系类型检查入站消息来源实体与另一实体任意实体或指定实体之间是否存在关系。这个节点是干嘛的一句话Check Relation Presence 检查当前设备 / 资产 是否 与另一个实体设备 / 资产 / 用户存在指定关系存在关系 → 走 True不存在关系 → 走 False它不创建关系、不删除关系只检查关系有没有。适用场景你一定会用到只有设备属于某个资产时才执行告警只有设备关联了网关时才转发数据只有设备绑定了用户时才发邮件数据权限校验根据关系判断是否继续处理一句话按实体关系来分流消息5、device profile switchDevice Profile Switch 是社区版CE原生自带的核心分流节点和你之前了解的 Asset Profile Switch 是一对专门用于按设备配置文件Device Profile分流消息是设备类数据路由的基础节点。一、核心作用一句话根据消息来源设备绑定的「设备配置文件Device Profile」自动将消息分发到不同的规则链分支。它本质是设备版的 “类型分流器”替代了旧版 “设备类型” 的分流逻辑仅对 ** 设备Device** 消息生效资产Asset消息会直接走 Failure 分支社区版功能完整无企业版限制二、关键配置与使用步骤1. 前置准备必须先完成进入 Profiles → Device Profiles创建设备配置文件例如 Temperature_Sensor、Energy_Meter给对应的设备绑定目标 Device Profile设备详情页 → 编辑 → 配置文件2. 节点核心配置这个节点本身无额外参数需要配置逻辑完全通过输出连线标签实现在规则链中添加 Device Profile Switch 节点从节点拖出多条输出连线将连线的标签修改为设备配置文件的完整名称大小写敏感不同连线对应不同的 Device Profile消息会自动路由到匹配的分支不匹配的消息、非设备消息会自动进入 Failure 分支三、典型应用场景按设备类型走不同业务逻辑温度传感器走高 / 低温告警、温湿度统计规则链电表设备走能耗增量计算、用电异常告警规则链网关设备走子设备数据转发、在线状态监控规则链数据分类存储 / 转发关键设备数据写入高优先级存储普通设备数据仅本地缓存特定 Profile 的设备数据转发到第三方平台其他设备不转发复杂规则链拆分在根规则链中用该节点做一级分流将不同 Profile 的设备数据转发到独立的子规则链避免主链逻辑臃肿便于维护和调试四、和 Asset Profile Switch 的区别别搞混节点分流依据生效对象适用场景Device Profile Switch设备配置文件Device Profile设备Device传感器、电表、网关等设备数据分流Asset Profile Switch资产配置文件Asset Profile资产Asset工厂、办公楼、仓库等资产数据分流6、entity type filter将入站消息的来源实体类型与配置的实体类型集合进行比对。若类型在集合中消息经 True 路由否则经 False 路由。一、核心用途判断消息是谁发的**Device设备/Asset资产/User用户/Customer客户** 等ThingsBoard只让指定类型实体的消息通过与 Entity Type Switch 区别Filter布尔型True/FalseSwitch直接按类型分多支路Device/Asset/...ThingsBoard二、配置超简单添加节点 → 打开配置Select entity types勾选要放行的实体类型至少选一个常用Device、Asset三、输出三条线True消息来源类型在勾选列表里 → 放行False不在列表里 → 拦截Failure出错实体不存在、配置错误四、典型场景1. 只处理设备上报忽略资产 / 用户消息勾选Device设备数据 → True → 继续存库、告警资产 / 用户数据 → False → 丢弃2. 同时处理设备 资产数据勾选Device Asset设备 / 资产 → True → 统一处理用户 / 客户 → False → 拦截3. 与 Device Profile Switch 组合五、与相似节点对比节点过滤依据输出用途Entity Type Filter实体类型Device/AssetTrue/False布尔过滤拦截非法类型Entity Type Switch实体类型多支路Device/Asset/...直接分流各类型走各分支Device Profile Switch设备配置文件多支路按 Profile 名只对设备按型号 / 类型分流7、entity type switch根据来源实体类型路由入站消息。消息经其标签与实体类型规范名称完全匹配的输出连接转发。一、核心作用大白话Entity Type Switch 按消息来源「实体类型」自动多路分流自动识别这条消息是谁发来的设备 Device资产 Asset客户 Customer用户 User不同实体类型自动走各自独立分支不用写脚本纯可视化分流。✅ 社区版 CE 原生自带完全可用。二、和 Entity Type Filter 区别必记Entity Type Filter只做二选一 True / FalseEntity Type Switch做多路分支Device 走一条、Asset 走一条、其他走 Failure三、节点自带输出分支不用自己定义拖线直接选DEVICEASSETCUSTOMERUSERFAILURE都不是、解析异常消息是什么实体自动跑进对应分支。8、gps geofencing filter提取消息里的经纬度判断设备 / 资产是否在指定圆形 / 多边形围栏内输出 True/False/Failure 三路。一、核心原理从消息 data 或 metadata 取出经纬度默认字段latitude/longitudeThingsBoard按配置的 ** 圆形Circle或多边形Polygon** 围栏做点 - in - 区域判断ThingsBoard在围栏内 → True不在 → False解析失败 / 缺坐标 → Failure二、配置详解界面 参数1. 基础坐标配置Latitude field name纬度字段名默认 latitudeLongitude field name经度字段名默认 longitude查找顺序先 message.data → 无则 message.metadataThingsBoardss_perimeter字段格式要求metadata.ss_perimeter必须是一个 JSON 格式的多边形坐标数组格式如下json[ [31.2304, 121.4737], [31.2314, 121.4747], [31.2324, 121.4737], [31.2304, 121.4737] ]2. 围栏类型Perimeter Type Circle圆形简单常用关闭「Fetch perimeter from metadata」时静态配置Center Lat/Lon圆心经纬度Range半径如 500Range units单位Meter/Kilometer 等当 Perimeter type 为 Circle 时metadata.ss_perimeter 必须是一个 JSON 对象格式如下json{centerLatitude: 31.2304,centerLongitude: 121.4737,range: 500,rangeUnit: METER}centerLatitude圆心纬度centerLongitude圆心经度range半径数值rangeUnit单位支持 METER / KILOMETER / FOOT / MILE9、message type filter核心作用是根据消息的 msgType消息类型进行过滤匹配则放行不匹配则拦截。一、核心作用与适用场景核心作用判断当前消息的类型是否匹配你配置的列表输出三路结果True消息类型在配置列表中 → 放行False消息类型不在配置列表中 → 拦截Failure解析错误 / 消息无类型 → 异常分支典型场景数据清洗分流只处理设备遥测上报POST_TELEMETRY过滤掉属性更新、RPC 请求等其他类型消息告警前置校验仅对设备属性变更POST_ATTRIBUTES触发特定告警逻辑规则链瘦身在根链入口快速过滤无效消息避免后续节点资源浪费二、社区版配置与使用步骤1. 节点配置界面配置项只有一个核心选项Message types要放行的消息类型列表点击 添加需要放行的消息类型支持多选消息类型含义POST_TELEMETRY设备上报遥测数据POST_ATTRIBUTES设备上报属性数据RPC_REQUEST设备 / 服务器 RPC 请求ALARM告警相关消息ENTITY_CREATED实体创建事件ENTITY_UPDATED实体更新事件节点输出逻辑适用场景Message Type Filter布尔型True/False两路只放行特定类型其他全部拦截Message Type Switch多路分支每个类型对应一条独立连线按不同消息类型分别处理遥测存库、属性更新触发告警10、message type switch一、一句话作用Message Type Switch 按消息类型自动多路分流它会自动识别消息是什么类型然后自动走不同的分支。这是规则链最最常用的第一层分流节点二、它会自动分出哪些固定分支不用配置拖出来就自带 5 个输出口POST_TELEMETRY→ 设备上报遥测温度、湿度、GPS…POST_ATTRIBUTES→ 设备上报属性RPC_REQUEST→ 设备 / 平台 RPC 指令TIMESERIES_UPDATED→ 时序数据更新后FAILURE→ 其他类型 / 异常消息是什么类型就自动进哪条线。消息类型 Message type连线标签 Connection label业务含义POST_ATTRIBUTES_REQUESTPost attributes设备上报客户端属性POST_TELEMETRY_REQUESTPost telemetry设备上报遥测数据最常用TO_SERVER_RPC_REQUESTRPC Request from Device设备主动发 RPC 请求到平台ACTIVITY_EVENTActivity Event设备在线活跃事件INACTIVITY_EVENTInactivity Event设备离线不活跃事件CONNECT_EVENTConnect Event设备连接成功事件DISCONNECT_EVENTDisconnect Event设备断开连接事件ENTITY_CREATEDEntity Created创建设备 / 资产 / 客户等实体ENTITY_UPDATEDEntity Updated实体信息更新ENTITY_DELETEDEntity Deleted实体被删除ENTITY_ASSIGNEDEntity Assigned实体被分配给客户 / 用户ENTITY_UNASSIGNEDEntity Unassigned实体解除分配ATTRIBUTES_UPDATEDAttributes Updated任何属性更新服务端 / 共享 / 客户端ATTRIBUTES_DELETEDAttributes Deleted属性被删除ALARM_ACKAlarm Acknowledged告警被确认ALARM_CLEARAlarm Cleared告警被清除ALARM_ASSIGNEDAlarm Assigned告警被指派给处理人ALARM_UNASSIGNEDAlarm Unassigned告警取消指派COMMENT_CREATEDComment Created新增备注COMMENT_UPDATEDComment Updated备注修改RPC_CALL_FROM_SERVER_TO_DEVICERPC Request to Device平台下发 RPC 控制指令给设备ENTITY_ASSIGNED_FROM_TENANTEntity Assigned From Tenant跨租户实体转入ENTITY_ASSIGNED_TO_TENANTEntity Assigned To Tenant跨租户实体转出TIMESERIES_UPDATEDTimeseries Updated遥测时序数据更新TIMESERIES_DELETEDTimeseries Deleted遥测时序数据删除RPC_QUEUEDRPC QueuedRPC 指令已入队列RPC_SENTRPC SentRPC 已下发RPC_DELIVEREDRPC DeliveredRPC 已送达设备RPC_SUCCESSFULRPC SuccessfulRPC 设备执行成功RPC_TIMEOUTRPC TimeoutRPC 超时RPC_EXPIREDRPC ExpiredRPC 过期RPC_FAILEDRPC FailedRPC 执行失败RPC_DELETEDRPC DeletedRPC 指令被删除RELATIONS_DELETEDAll Relations Deleted实体所有关系被清空RELATION_ADD_OR_UPDATERelation Added or Updated实体关系新增 / 修改RELATION_DELETEDRelation Deleted单条实体关系删除REST_API_REQUESTREST API request外部调用 TB RESTAPI 事件OWNER_CHANGEDOwner changed实体所属所有者变更ADDED_TO_ENTITY_GROUPAdded to Group实体加入分组REMOVED_FROM_ENTITY_GROUPRemoved from Group实体移出分组generateReportGenerate Report生成报表事件日常做规则链只需要记这几个高频Post telemetry设备温湿度 / GPS / 能耗上报Post attributes设备上报自身属性RPC Request from Device设备主动请求平台RPC Request to Device平台下发控制设备Connect / Disconnect上下线监控Activity / Inactivity Event心跳离线告警ATTRIBUTES_UPDATED服务端属性变更触发逻辑ALARM_ACK / ALARM_CLEAR告警确认、清除联动其他都是后台系统事件常规物联网项目基本用不到。11、script一、TB 里 Script 分两种TBEL推荐TB 自研表达式语言性能高、安全、社区版首选JavaScript灵活但性能差、有沙箱限制不推荐乱用常用三个带脚本的节点Script Filter脚本判断 → 返回 true/false 做过滤分流Script Transformation脚本修改 msg 结构体、计算字段Check Fields 逻辑判断 复杂校验都能用脚本代替二、脚本内置固定变量必记plaintextmsg // 消息体 JSON 对象metadata // 元数据msgType // 消息类型字符串三、Script Filter 常用示例过滤用1. 温度范围过滤js// TBEL / JS 通用return msg.temperature ! null msg.temperature -40 msg.temperature 80;2. 字段必须存在jsreturn msg.temperature ! undefined msg.humidity ! undefined;3. 只允许设备过滤资产jsreturn metadata.entityType DEVICE;12、switch一、节点核心作用它本质上是一个可编程的多路分支节点你可以通过脚本定义任意分流条件然后为每个分支设置独立的连线标签。你可以用它实现和 Message Type Switch、Device Profile Switch 相同的效果也可以实现更复杂的自定义分流逻辑。二、工作原理与配置1. 核心逻辑你需要编写一段脚本返回一个字符串分支名称。节点根据返回的字符串将消息路由到标签与该字符串完全匹配的输出连线。如果没有匹配的连线或脚本执行出错消息会走 Failure 分支。2. 配置步骤双击节点进入配置界面。在脚本编辑器中编写分流逻辑。从节点拖出多条输出连线并将每条连线的标签设置为你脚本中可能返回的分支名称。三、脚本示例示例 1模拟 Message Type Switch 功能javascript运行// 根据消息类型分流switch (msgType) {case POST_TELEMETRY_REQUEST:return telemetry;case POST_ATTRIBUTES_REQUEST:return attributes;default:return other;}关键注意事项脚本返回值必须是字符串且必须和连线标签完全一致大小写敏感。脚本执行错误或返回值为空消息会直接进入 Failure 分支。虽然功能强大但对于简单场景优先使用专用的 Switch 节点性能更高、配置更简单。