Action 二1、device state 设备状态节点入门教程官方文档适配版本文基于 ThingsBoard 官方文档 http://www.ithingsboard.com/docs/user-guide/rule-engine-2-0/nodes/action/device-state/ 编写专为初学者设计用最直白的语言讲清原理、配置和实操。一、什么是 device state 节点它是 ThingsBoard 规则引擎里的动作节点Action Node核心作用是给设备主动发送「连接 / 活动 / 断开 / 不活动」事件更新设备在线状态并触发后续的告警、通知等逻辑。简单说就是让系统知道设备 “现在是在线还是离线、是在活动还是休眠”并按你的需求做出反应。官方定义直译 通俗解释原文Sends device connectivity events for the message originator.通俗版给消息来源Originator这个设备发送连接性事件让系统更新它的在线状态。二、核心原理新手必懂1. 它怎么工作触发前提只有当消息的来源Originator是 ** 设备Device** 时节点才会正常工作。如果是资产、客户等其他实体消息会直接进入「Failure」链路失败分支。时间戳规则优先用消息元数据里的 ts 字段作为事件时间戳如果没有 ts就用消息本身的时间戳。状态更新事件会被发送到「设备状态服务Device State Service 」这个服务会更新设备的服务器端状态属性比如 lastActivityTime、active 等再把事件消息转发给规则引擎的其他节点。2. 四种事件类型详解官方配置项对应你截图里的下拉选项每个事件都有明确的作用新手一定要分清事件类型官方作用通俗解释触发时机Connect Event发送设备连接事件告诉系统 “设备连上了”设备首次建立 MQTT/HTTP 连接时Activity Event发送设备活动事件告诉系统 “设备还活着在发数据”设备上报遥测数据、更新属性、接收 RPC 指令时Disconnect Event发送设备断开连接事件告诉系统 “设备主动下线了”设备主动断开连接比如程序关闭、设备断电时Inactivity Event发送设备不活动事件告诉系统 “设备超时没动静可能离线了”设备超过设置的 “不活动超时时间” 没发数据时3. 它和 “设备自动在线检测” 有什么区别系统自带的自动检测根据设备的 lastActivityTime inactivityTimeout 自动判断是否离线无需手动触发。device state 节点主动触发事件适合自定义场景比如设备通过心跳包上报 “我还活着”手动维持在线状态灵活性更高。三、手把手配置步骤新手零失败步骤 1添加节点到规则链打开 ThingsBoard 控制台 → 进入「规则引擎」→ 找到你要配置的规则链比如默认的 Root Rule Chain点击「编辑」。点击左上角「添加节点」→ 在弹出的窗口里切换到「Action」分类。在列表里找到「device state」点击添加到画布上。步骤 2配置节点参数对应你的截图双击画布上的 device state 节点进入配置界面名称必填给节点起个好懂的名字比如 “设备心跳活动更新”方便以后维护。状态开关右上角的 Disabled 表示节点当前是禁用的点击切换为 Enabled 才会生效。设备连接性事件必填从下拉菜单里选一个事件类型新手最常用的是 Activity Event维持设备在线状态。点击「添加」完成配置。步骤 3连接节点链路输入链路把前置节点比如设备遥测数据接收节点的输出连接到 device state 节点的输入。举个例子设备上报数据 → 消息类型过滤节点 → device state 节点。输出链路根据你的需求连接后续节点比如正常输出Success可以连接到告警清除节点设备在线时清除离线告警。失败输出Failure可以连接到日志节点方便排查问题。四、官方推荐实战示例设备在线监控附完整规则链场景说明设备每 30 秒上报一次心跳数据超过 60 秒没上报就判定为离线生成告警恢复上报后自动清除告警。前置准备配置设备属性先给设备设置「不活动超时时间」进入设备详情页 → 点击「属性」→ 切换到「服务器属性」。点击「添加属性」键inactivityTimeout值60000单位毫秒也就是 60 秒保存属性配置节点顺序节点类型配置要点链路连接1Message Type Switch只接收POST_TELEMETRY_REQUEST设备上报数据类型的消息输出连接到节点 22device state名称设备心跳活动更新事件类型Activity Event输入来自节点 1输出Success连接到节点 3输出Failure连接到日志节点3Clear Alarm告警类型设备离线告警条件清除告警输入来自节点 2 的 Success 链路4Create Alarm告警类型设备离线告警触发条件INACTIVITY_EVENT输入来自系统自动触发的不活动事件或手动触发的Inactivity Event效果验证设备正常上报数据每次上报都会触发 Activity Event更新设备的 lastActivityTime设备保持在线状态不会生成告警。设备停止上报数据超过 60 秒后系统自动触发 Inactivity Event设备状态变为离线节点 4 生成离线告警。设备恢复上报数据触发 Activity Event节点 3 自动清除离线告警设备恢复在线状态。五、官方补充说明新手也能懂事件会被存储在设备状态服务中系统会根据这些事件维护设备的 active 属性在线 / 离线。你可以在设备详情页的「状态」标签里查看设备的 lastConnectTime、lastActivityTime 等信息验证节点是否正常工作。节点处理失败时比如设备不存在、权限不足消息会进入 Failure 链路建议新手把 Failure 链路连接到日志节点方便排查问题。2、genertator 生成器一、当前配置整体说明你的截图是 ThingsBoard 规则引擎里的 Generator 节点配置界面核心作用是按固定周期自动生成模拟设备数据用来测试规则链、模拟设备上报场景。当前配置的关键参数名称生成器状态Disabled未启用需要点击切换为 Enabled 才会生效生成消息限制0无限生成不会停止生成频率1 秒每秒生成 1 条消息发起者类型Current Rule Node当前规则节点自身不是真实设备脚本语言TBELThingsBoard Expression Language简化版脚本二、配置项逐段拆解新手必懂1. Generation parameters生成参数配置项你的值含义说明注意事项Generated messages limit0生成消息数量限制0 无限循环生成测试时建议先设为10或20避免一直发数据占资源Generation frequency in seconds1生成消息的时间间隔单位秒1表示每秒发 1 条适合快速测试生产环境建议用30/60秒模拟真实设备上报2. Originator消息发起者你的配置Current Rule Node当前规则节点含义消息的 “发送者” 是这个 Generator 节点本身不是真实设备 / 资产。影响优势无需绑定真实设备直接测试规则链逻辑。不足如果后续要接 Device State 节点或设备相关的告警发起者必须是真实设备否则节点会执行失败进入 Failure 链路。3. Generator function生成脚本你的脚本代码带注释版j脚本效果每秒生成一条 temp42、humidity77 的固定数据元数据固定为 {data:40}。问题点当前脚本生成的是固定值每次数据都一样无法模拟真实设备数据变化也无法和 Device State 联动维持设备在线状态。三、优化建议新手避坑1. 核心问题修正问题影响修正方案发起者不是设备后续无法使用Device State节点更新设备状态设备永远显示离线把 Originator 改为Device并选择一个真实存在的设备脚本生成固定值无法模拟真实设备数据波动测试效果差修改脚本生成随机 / 递增数据生成频率 1 秒太快测试时数据刷屏调试困难改为30秒或60秒模拟真实设备上报间隔2. 优化后的完整配置示例配置参数推荐名称设备模拟数据生成器状态Enabled启用生成消息限制0无限生成频率30 秒发起者类型Device选择一个真实设备比如你的测试设备优化脚本TBEL带随机数据 心跳计数javascript效果每 30 秒给指定设备上报一次随机温湿度数据 递增心跳计数和真实设备行为几乎一致。四、实战用法Generator Device State 实现设备在线监控场景目标用 Generator 模拟设备每 30 秒上报一次数据通过 Device State 节点维持设备在线状态超时 60 秒未上报自动触发离线告警。步骤 1配置设备基础属性进入测试设备详情页 → 「属性」→「服务器属性」添加 inactivityTimeout值为 6000060 秒超时步骤 2规则链节点配置按顺序节点顺序节点类型配置要点链路连接1Generator名称设备模拟数据生成器频率30 秒发起者测试设备脚本用上面的优化版输出Success连接到节点 22Device State名称设备活动更新事件类型Activity Event输入来自节点 1输出Success连接到节点 33Clear Alarm告警类型设备离线告警清除条件收到Activity Event输入来自节点 24Create Alarm告警类型设备离线告警触发条件INACTIVITY_EVENT输入来自系统自动触发的不活动事件步骤 3效果验证正常运行Generator 每 30 秒生成数据 → 触发 Activity Event → 设备 lastActivityTime 更新 → 设备保持在线告警自动清除。停止 Generator超过 60 秒无数据上报 → 系统触发 Inactivity Event → 设备变为离线自动生成告警。五、常见问题排查检查发起者是否存在如果是设备确认设备未被删除 / 禁用。后续节点收不到消息检查 Generator 的 Success 链路是否正确连接到下一个节点。检查脚本是否有语法错误TBEL 脚本错误会直接走 Failure 链路。设备一直不在线确认 Generator 的发起者是真实设备不是 Current Rule Node。确认 Device State 节点配置了 Activity Event且链路正确。3、gps geofencing events GPS地理围栏事件一、核心原理新手必懂数据提取从设备上报的消息体或元数据中提取纬度latitude和经度longitude坐标。围栏判断根据配置的地理围栏圆形 / 多边形判断当前坐标是否在围栏内。事件生成跟踪设备状态变化进入 / 离开 / 停留生成对应的事件消息Entered/Left/Inside/Outside并转发到后续节点如告警、通知、数据存储。状态记忆节点会记住设备上一次的位置状态只有当状态发生变化从外到内 / 从内到外时才会触发 Entered/Left 事件避免重复告警。二、配置项逐段拆解1. 基础信息名称GPS地理围栏事件自定义标识不影响功能仅用于可视化管理状态Disabled当前未启用需点击切换为 Enabled 才会生效2. 坐标字段配置Coordinate field names配置项你的值含义说明Latitude field namelatitude消息体 / 元数据中存储纬度的字段名默认是latitudeLongitude field namelongitude消息体 / 元数据中存储经度的字段名默认是longitude节点会优先从消息体中读取这两个字段如果消息体中没有会自动去元数据中查找。3. 地理围栏配置Geofence configuration配置项你的值含义说明Perimeter typePolygon围栏类型当前选择的是多边形围栏也支持圆形CircleFetch perimeter information from metadata已开启从消息元数据中动态获取围栏信息适合每个设备有独立围栏的场景Perimeter key namess_perimeter元数据中存储围栏信息的字段名当前为ss_perimeter补充说明如果关闭 Fetch perimeter information from metadata需要在节点中手动固定配置围栏坐标适合所有设备共用同一个围栏的场景。多边形围栏的元数据格式示例JSONjson[{latitude: 31.2304, longitude: 121.4737},{latitude: 31.2314, longitude: 121.4747},{latitude: 31.2294, longitude: 121.4757}]三、节点输出链路说明配置完成后节点会根据判断结果将消息发送到不同的输出链路链路名称触发条件典型用途Entered设备从围栏外移动到围栏内生成 “进入安全区域” 通知Left设备从围栏内移动到围栏外触发 “离开安全区域” 告警Inside设备持续在围栏内状态未变化记录位置日志维持在线状态Outside设备持续在围栏外状态未变化记录位置日志或生成持续告警Failure坐标 / 围栏信息缺失、格式错误排查数据上报问题4、math function 数学函数一、核心作用与原理1. 核心功能对消息、元数据、实体属性或时序数据中的数值执行加减乘除、三角函数、统计运算等数学函数。支持多数据源参数常量、消息体、元数据、属性、时序数据灵活组合计算。计算结果可直接写入消息体、元数据或持久化为设备属性 / 时序数据无需额外脚本。2. 工作原理参数解析节点从指定数据源提取数值参数如消息体中的 temperature、元数据中的 offset、设备属性中的 calibrationFactor。函数计算根据配置的数学函数如 ADD、AVG、SIN执行运算。结果输出将计算结果写入目标位置消息体 / 元数据 / 数据库并转发消息到 Success 链路参数缺失 / 类型错误时进入 Failure 链路。二、节点配置详解新手分步指南1. 基础配置项配置项说明示例名称自定义节点标识不影响功能温度单位转换函数类型选择要执行的数学运算如ADD、DIV、SQRTMUL乘法参数配置为函数的每个参数指定数据源和路径参数 1消息体temperature参数 2常数1.8输出配置指定计算结果的保存位置写入消息体fahrenheit字段2. 支持的参数来源5 种参数类型说明适用场景常数固定数值无需外部数据单位转换系数、固定偏移量消息体Message从当前消息的msg字段中提取数值设备上报的原始数据如temperature元数据Metadata从消息的元数据中提取数值设备上报的附加参数如calibration实体属性Attribute从消息发起者设备 / 资产的属性中提取数值设备校准系数、告警阈值时序数据Timeseries从设备的历史时序数据中提取数值计算滑动平均、差值对比3. 常用数学函数分类类别示例函数作用基础运算ADD、SUB、MUL、DIV、MOD加减乘除、取模统计函数AVG、MIN、MAX、SUM平均值、最大 / 最小值、求和幂 / 开方POW、SQRT、CBRT幂运算、平方根、立方根三角函数SIN、COS、TAN、RAD正弦 / 余弦 / 正切、角度转弧度其他ABS、ROUND、SIGNUM绝对值、四舍五入、符号函数5、message count 消息计数这是 ThingsBoard 官方文档定义的时间窗口消息计数节点和按条数计数的版本不同它以固定时间间隔统计消息数量是监控设备活跃度、流量异常、生成统计报表的核心工具。一、核心原理官方定义官方说明Counts incoming messages over a specified time interval and outputs a message containing the count result.中文在指定的时间间隔内统计传入的消息数量并输出一条包含计数结果的消息。工作流程以截图配置为例窗口初始化节点启动为每个消息发起者设备 / 资产创建独立计数器初始值为 0。消息计数时间窗口内如你设置的 60 秒每有一条消息流入节点对应发起者的计数器 1消息会直接通过 Success 链路正常流转不影响数据处理。窗口结束时间窗口到期节点为每个发起者生成一条汇总消息包含该窗口内的消息总数。重置循环计数器自动清零开始下一个时间窗口的统计。二、截图配置项逐段解析配置项你的值官方说明 通俗解释名称消息计数节点自定义标识仅用于规则链可视化管理不影响功能逻辑Interval in seconds60统计时间窗口单位为秒。你的配置表示每 60 秒1 分钟统计一次消息数Output time series key prefixmessageCount输出结果的时序数据键名前缀最终生成的字段名为messageCount完整格式为{prefix}_{serviceId}单服务场景直接使用前缀节点描述在指定时间间隔内对传入消息进行计数并输出包含计数结果的消息官方功能说明直接对应节点核心作用三、关键特性与输出格式1. 按发起者独立计数节点会自动按消息的发起者设备 / 资产分组统计不同设备的计数相互独立不会互相干扰。例如设备 A 在 60 秒内收到 10 条消息设备 B 收到 5 条消息节点会分别生成两条汇总消息各自包含对应设备的计数结果。2. 输出消息结构示例每个窗口结束时节点会生成一条 POST_TELEMETRY_REQUEST 类型的消息结构如下json{msg: {messageCount: 15 // 该时间窗口内对应设备的消息总数},metadata: {ts: 1717243200000, // 窗口结束的时间戳deviceName: test-device // 消息发起者的设备名},msgType: POST_TELEMETRY_REQUEST}
Thingsboard规则链五
Action 二1、device state 设备状态节点入门教程官方文档适配版本文基于 ThingsBoard 官方文档 http://www.ithingsboard.com/docs/user-guide/rule-engine-2-0/nodes/action/device-state/ 编写专为初学者设计用最直白的语言讲清原理、配置和实操。一、什么是 device state 节点它是 ThingsBoard 规则引擎里的动作节点Action Node核心作用是给设备主动发送「连接 / 活动 / 断开 / 不活动」事件更新设备在线状态并触发后续的告警、通知等逻辑。简单说就是让系统知道设备 “现在是在线还是离线、是在活动还是休眠”并按你的需求做出反应。官方定义直译 通俗解释原文Sends device connectivity events for the message originator.通俗版给消息来源Originator这个设备发送连接性事件让系统更新它的在线状态。二、核心原理新手必懂1. 它怎么工作触发前提只有当消息的来源Originator是 ** 设备Device** 时节点才会正常工作。如果是资产、客户等其他实体消息会直接进入「Failure」链路失败分支。时间戳规则优先用消息元数据里的 ts 字段作为事件时间戳如果没有 ts就用消息本身的时间戳。状态更新事件会被发送到「设备状态服务Device State Service 」这个服务会更新设备的服务器端状态属性比如 lastActivityTime、active 等再把事件消息转发给规则引擎的其他节点。2. 四种事件类型详解官方配置项对应你截图里的下拉选项每个事件都有明确的作用新手一定要分清事件类型官方作用通俗解释触发时机Connect Event发送设备连接事件告诉系统 “设备连上了”设备首次建立 MQTT/HTTP 连接时Activity Event发送设备活动事件告诉系统 “设备还活着在发数据”设备上报遥测数据、更新属性、接收 RPC 指令时Disconnect Event发送设备断开连接事件告诉系统 “设备主动下线了”设备主动断开连接比如程序关闭、设备断电时Inactivity Event发送设备不活动事件告诉系统 “设备超时没动静可能离线了”设备超过设置的 “不活动超时时间” 没发数据时3. 它和 “设备自动在线检测” 有什么区别系统自带的自动检测根据设备的 lastActivityTime inactivityTimeout 自动判断是否离线无需手动触发。device state 节点主动触发事件适合自定义场景比如设备通过心跳包上报 “我还活着”手动维持在线状态灵活性更高。三、手把手配置步骤新手零失败步骤 1添加节点到规则链打开 ThingsBoard 控制台 → 进入「规则引擎」→ 找到你要配置的规则链比如默认的 Root Rule Chain点击「编辑」。点击左上角「添加节点」→ 在弹出的窗口里切换到「Action」分类。在列表里找到「device state」点击添加到画布上。步骤 2配置节点参数对应你的截图双击画布上的 device state 节点进入配置界面名称必填给节点起个好懂的名字比如 “设备心跳活动更新”方便以后维护。状态开关右上角的 Disabled 表示节点当前是禁用的点击切换为 Enabled 才会生效。设备连接性事件必填从下拉菜单里选一个事件类型新手最常用的是 Activity Event维持设备在线状态。点击「添加」完成配置。步骤 3连接节点链路输入链路把前置节点比如设备遥测数据接收节点的输出连接到 device state 节点的输入。举个例子设备上报数据 → 消息类型过滤节点 → device state 节点。输出链路根据你的需求连接后续节点比如正常输出Success可以连接到告警清除节点设备在线时清除离线告警。失败输出Failure可以连接到日志节点方便排查问题。四、官方推荐实战示例设备在线监控附完整规则链场景说明设备每 30 秒上报一次心跳数据超过 60 秒没上报就判定为离线生成告警恢复上报后自动清除告警。前置准备配置设备属性先给设备设置「不活动超时时间」进入设备详情页 → 点击「属性」→ 切换到「服务器属性」。点击「添加属性」键inactivityTimeout值60000单位毫秒也就是 60 秒保存属性配置节点顺序节点类型配置要点链路连接1Message Type Switch只接收POST_TELEMETRY_REQUEST设备上报数据类型的消息输出连接到节点 22device state名称设备心跳活动更新事件类型Activity Event输入来自节点 1输出Success连接到节点 3输出Failure连接到日志节点3Clear Alarm告警类型设备离线告警条件清除告警输入来自节点 2 的 Success 链路4Create Alarm告警类型设备离线告警触发条件INACTIVITY_EVENT输入来自系统自动触发的不活动事件或手动触发的Inactivity Event效果验证设备正常上报数据每次上报都会触发 Activity Event更新设备的 lastActivityTime设备保持在线状态不会生成告警。设备停止上报数据超过 60 秒后系统自动触发 Inactivity Event设备状态变为离线节点 4 生成离线告警。设备恢复上报数据触发 Activity Event节点 3 自动清除离线告警设备恢复在线状态。五、官方补充说明新手也能懂事件会被存储在设备状态服务中系统会根据这些事件维护设备的 active 属性在线 / 离线。你可以在设备详情页的「状态」标签里查看设备的 lastConnectTime、lastActivityTime 等信息验证节点是否正常工作。节点处理失败时比如设备不存在、权限不足消息会进入 Failure 链路建议新手把 Failure 链路连接到日志节点方便排查问题。2、genertator 生成器一、当前配置整体说明你的截图是 ThingsBoard 规则引擎里的 Generator 节点配置界面核心作用是按固定周期自动生成模拟设备数据用来测试规则链、模拟设备上报场景。当前配置的关键参数名称生成器状态Disabled未启用需要点击切换为 Enabled 才会生效生成消息限制0无限生成不会停止生成频率1 秒每秒生成 1 条消息发起者类型Current Rule Node当前规则节点自身不是真实设备脚本语言TBELThingsBoard Expression Language简化版脚本二、配置项逐段拆解新手必懂1. Generation parameters生成参数配置项你的值含义说明注意事项Generated messages limit0生成消息数量限制0 无限循环生成测试时建议先设为10或20避免一直发数据占资源Generation frequency in seconds1生成消息的时间间隔单位秒1表示每秒发 1 条适合快速测试生产环境建议用30/60秒模拟真实设备上报2. Originator消息发起者你的配置Current Rule Node当前规则节点含义消息的 “发送者” 是这个 Generator 节点本身不是真实设备 / 资产。影响优势无需绑定真实设备直接测试规则链逻辑。不足如果后续要接 Device State 节点或设备相关的告警发起者必须是真实设备否则节点会执行失败进入 Failure 链路。3. Generator function生成脚本你的脚本代码带注释版j脚本效果每秒生成一条 temp42、humidity77 的固定数据元数据固定为 {data:40}。问题点当前脚本生成的是固定值每次数据都一样无法模拟真实设备数据变化也无法和 Device State 联动维持设备在线状态。三、优化建议新手避坑1. 核心问题修正问题影响修正方案发起者不是设备后续无法使用Device State节点更新设备状态设备永远显示离线把 Originator 改为Device并选择一个真实存在的设备脚本生成固定值无法模拟真实设备数据波动测试效果差修改脚本生成随机 / 递增数据生成频率 1 秒太快测试时数据刷屏调试困难改为30秒或60秒模拟真实设备上报间隔2. 优化后的完整配置示例配置参数推荐名称设备模拟数据生成器状态Enabled启用生成消息限制0无限生成频率30 秒发起者类型Device选择一个真实设备比如你的测试设备优化脚本TBEL带随机数据 心跳计数javascript效果每 30 秒给指定设备上报一次随机温湿度数据 递增心跳计数和真实设备行为几乎一致。四、实战用法Generator Device State 实现设备在线监控场景目标用 Generator 模拟设备每 30 秒上报一次数据通过 Device State 节点维持设备在线状态超时 60 秒未上报自动触发离线告警。步骤 1配置设备基础属性进入测试设备详情页 → 「属性」→「服务器属性」添加 inactivityTimeout值为 6000060 秒超时步骤 2规则链节点配置按顺序节点顺序节点类型配置要点链路连接1Generator名称设备模拟数据生成器频率30 秒发起者测试设备脚本用上面的优化版输出Success连接到节点 22Device State名称设备活动更新事件类型Activity Event输入来自节点 1输出Success连接到节点 33Clear Alarm告警类型设备离线告警清除条件收到Activity Event输入来自节点 24Create Alarm告警类型设备离线告警触发条件INACTIVITY_EVENT输入来自系统自动触发的不活动事件步骤 3效果验证正常运行Generator 每 30 秒生成数据 → 触发 Activity Event → 设备 lastActivityTime 更新 → 设备保持在线告警自动清除。停止 Generator超过 60 秒无数据上报 → 系统触发 Inactivity Event → 设备变为离线自动生成告警。五、常见问题排查检查发起者是否存在如果是设备确认设备未被删除 / 禁用。后续节点收不到消息检查 Generator 的 Success 链路是否正确连接到下一个节点。检查脚本是否有语法错误TBEL 脚本错误会直接走 Failure 链路。设备一直不在线确认 Generator 的发起者是真实设备不是 Current Rule Node。确认 Device State 节点配置了 Activity Event且链路正确。3、gps geofencing events GPS地理围栏事件一、核心原理新手必懂数据提取从设备上报的消息体或元数据中提取纬度latitude和经度longitude坐标。围栏判断根据配置的地理围栏圆形 / 多边形判断当前坐标是否在围栏内。事件生成跟踪设备状态变化进入 / 离开 / 停留生成对应的事件消息Entered/Left/Inside/Outside并转发到后续节点如告警、通知、数据存储。状态记忆节点会记住设备上一次的位置状态只有当状态发生变化从外到内 / 从内到外时才会触发 Entered/Left 事件避免重复告警。二、配置项逐段拆解1. 基础信息名称GPS地理围栏事件自定义标识不影响功能仅用于可视化管理状态Disabled当前未启用需点击切换为 Enabled 才会生效2. 坐标字段配置Coordinate field names配置项你的值含义说明Latitude field namelatitude消息体 / 元数据中存储纬度的字段名默认是latitudeLongitude field namelongitude消息体 / 元数据中存储经度的字段名默认是longitude节点会优先从消息体中读取这两个字段如果消息体中没有会自动去元数据中查找。3. 地理围栏配置Geofence configuration配置项你的值含义说明Perimeter typePolygon围栏类型当前选择的是多边形围栏也支持圆形CircleFetch perimeter information from metadata已开启从消息元数据中动态获取围栏信息适合每个设备有独立围栏的场景Perimeter key namess_perimeter元数据中存储围栏信息的字段名当前为ss_perimeter补充说明如果关闭 Fetch perimeter information from metadata需要在节点中手动固定配置围栏坐标适合所有设备共用同一个围栏的场景。多边形围栏的元数据格式示例JSONjson[{latitude: 31.2304, longitude: 121.4737},{latitude: 31.2314, longitude: 121.4747},{latitude: 31.2294, longitude: 121.4757}]三、节点输出链路说明配置完成后节点会根据判断结果将消息发送到不同的输出链路链路名称触发条件典型用途Entered设备从围栏外移动到围栏内生成 “进入安全区域” 通知Left设备从围栏内移动到围栏外触发 “离开安全区域” 告警Inside设备持续在围栏内状态未变化记录位置日志维持在线状态Outside设备持续在围栏外状态未变化记录位置日志或生成持续告警Failure坐标 / 围栏信息缺失、格式错误排查数据上报问题4、math function 数学函数一、核心作用与原理1. 核心功能对消息、元数据、实体属性或时序数据中的数值执行加减乘除、三角函数、统计运算等数学函数。支持多数据源参数常量、消息体、元数据、属性、时序数据灵活组合计算。计算结果可直接写入消息体、元数据或持久化为设备属性 / 时序数据无需额外脚本。2. 工作原理参数解析节点从指定数据源提取数值参数如消息体中的 temperature、元数据中的 offset、设备属性中的 calibrationFactor。函数计算根据配置的数学函数如 ADD、AVG、SIN执行运算。结果输出将计算结果写入目标位置消息体 / 元数据 / 数据库并转发消息到 Success 链路参数缺失 / 类型错误时进入 Failure 链路。二、节点配置详解新手分步指南1. 基础配置项配置项说明示例名称自定义节点标识不影响功能温度单位转换函数类型选择要执行的数学运算如ADD、DIV、SQRTMUL乘法参数配置为函数的每个参数指定数据源和路径参数 1消息体temperature参数 2常数1.8输出配置指定计算结果的保存位置写入消息体fahrenheit字段2. 支持的参数来源5 种参数类型说明适用场景常数固定数值无需外部数据单位转换系数、固定偏移量消息体Message从当前消息的msg字段中提取数值设备上报的原始数据如temperature元数据Metadata从消息的元数据中提取数值设备上报的附加参数如calibration实体属性Attribute从消息发起者设备 / 资产的属性中提取数值设备校准系数、告警阈值时序数据Timeseries从设备的历史时序数据中提取数值计算滑动平均、差值对比3. 常用数学函数分类类别示例函数作用基础运算ADD、SUB、MUL、DIV、MOD加减乘除、取模统计函数AVG、MIN、MAX、SUM平均值、最大 / 最小值、求和幂 / 开方POW、SQRT、CBRT幂运算、平方根、立方根三角函数SIN、COS、TAN、RAD正弦 / 余弦 / 正切、角度转弧度其他ABS、ROUND、SIGNUM绝对值、四舍五入、符号函数5、message count 消息计数这是 ThingsBoard 官方文档定义的时间窗口消息计数节点和按条数计数的版本不同它以固定时间间隔统计消息数量是监控设备活跃度、流量异常、生成统计报表的核心工具。一、核心原理官方定义官方说明Counts incoming messages over a specified time interval and outputs a message containing the count result.中文在指定的时间间隔内统计传入的消息数量并输出一条包含计数结果的消息。工作流程以截图配置为例窗口初始化节点启动为每个消息发起者设备 / 资产创建独立计数器初始值为 0。消息计数时间窗口内如你设置的 60 秒每有一条消息流入节点对应发起者的计数器 1消息会直接通过 Success 链路正常流转不影响数据处理。窗口结束时间窗口到期节点为每个发起者生成一条汇总消息包含该窗口内的消息总数。重置循环计数器自动清零开始下一个时间窗口的统计。二、截图配置项逐段解析配置项你的值官方说明 通俗解释名称消息计数节点自定义标识仅用于规则链可视化管理不影响功能逻辑Interval in seconds60统计时间窗口单位为秒。你的配置表示每 60 秒1 分钟统计一次消息数Output time series key prefixmessageCount输出结果的时序数据键名前缀最终生成的字段名为messageCount完整格式为{prefix}_{serviceId}单服务场景直接使用前缀节点描述在指定时间间隔内对传入消息进行计数并输出包含计数结果的消息官方功能说明直接对应节点核心作用三、关键特性与输出格式1. 按发起者独立计数节点会自动按消息的发起者设备 / 资产分组统计不同设备的计数相互独立不会互相干扰。例如设备 A 在 60 秒内收到 10 条消息设备 B 收到 5 条消息节点会分别生成两条汇总消息各自包含对应设备的计数结果。2. 输出消息结构示例每个窗口结束时节点会生成一条 POST_TELEMETRY_REQUEST 类型的消息结构如下json{msg: {messageCount: 15 // 该时间窗口内对应设备的消息总数},metadata: {ts: 1717243200000, // 窗口结束的时间戳deviceName: test-device // 消息发起者的设备名},msgType: POST_TELEMETRY_REQUEST}