ThingsBoard 如何判断设备的在线/离线状态

如下三个配置项协同工作,共同决定了 ThingsBoard 如何判断设备的在线/离线状态(即服务端属性 active)。它们分别扮演“标准制定者”、“定期执行者”和“信息上报者”的角色。

1. 核心参数详解

配置项 (参数名)作用 (一句话概括)技术解释ThingsBoard 默认值
defaultInactivityTimeoutInSec制定“多久没消息算离线”的等待标准设备在没有任何活动(如上传数据、更新属性)后,被判定为“不活跃”(active 变为 false)的等待总时长600 秒 (10 分钟)
defaultStateCheckIntervalInSec规定“每隔多久检查一次”状态Device State 服务执行周期性扫描,检查并更新所有设备在线状态的间隔时间60 秒 (1 分钟)
transport.sessions.report_timeout决定“多久上报一次设备活动”Transport 服务将设备的活动信号(如心跳、数据)上报给 State 服务的周期时长。它也定义了 Transport 服务自身上报活动的“时间段”。3000 毫秒 (3 秒)

2. 三者如何协同工作

用一个比喻可以帮你更好地理解这三者的关系:

  • Transport 服务:像一个“记分员”,它负责时刻留意设备的一举一动。
  • Device State 服务:像一个“裁判”,它负责最终判定设备是“活跃”还是“不活跃”。
  • report_timeout (3秒):是“记分员”向“裁判”喊话汇报的频率。每隔3秒,记分员就会把看到的设备活动情况告诉裁判。
  • defaultInactivityTimeoutInSec (10分钟):是“裁判”的耐心。如果裁判在整整10分钟内没收到任何关于某个设备的活动报告,他就会判定该设备“不活跃”。
  • defaultStateCheckIntervalInSec (1分钟):是“裁判”低头看表、做出判决的频率。即便设备已经沉默了10分钟,裁判也要等到自己每1分钟一次的“检查时刻”,才会正式宣布该设备“不活跃”,并更新状态。

3. 关键约束与逻辑关系

三者之间存在一个强制的逻辑约束,以确保状态判断的准确性:

约束条件:transport.sessions.report_timeout 必须小于 defaultInactivityTimeoutInSec

这是 ThingsBoard 官方在配置文件中明确要求的。这个条件的核心目的是确保“裁判”在宣布结果前,一定能收到“记分员”的最新报告。

  • 正确示例 ✅:记分员每 3 秒 汇报一次,裁判的耐心是 600 秒。裁判每次都能在耐心耗尽前收到“续命信号”,判断准确。
  • 错误示例 ❌:假设你错误地将 report_timeout 设为 600 秒,而 defaultInactivityTimeoutInSec 设为 60 秒。那么,裁判在第 60 秒时就会因没收到报告而误判设备离线。直到 600 秒后,记分员才慢悠悠地送来报告,裁判又会将状态改回在线。这会导致 active 状态频繁错误震荡。

4. 配置调优建议

了解这些参数的关系后,你可以根据业务需求进行调整:

你的需求推荐做法注意点
快速检测设备离线同时调低三个值,例如:
report_timeout: 3000 毫秒 (保持默认)
defaultInactivityTimeoutInSec: 60 秒
defaultStateCheckIntervalInSec: 30 秒
这会增加系统负载,需要评估服务器性能。
大规模部署,优先保证性能适当放宽检测时间,例如:
defaultInactivityTimeoutInSec: 1200 秒 (20分钟)
defaultStateCheckIntervalInSec: 120 秒 (2分钟)
可以显著降低数据库和服务器的压力。
为单个设备定制策略无需修改全局配置。在设备的“服务端属性”中添加键值对:inactivityTimeout: 300000 (单位是毫秒,此处示例为5分钟)该设备将使用 5 分钟的超时时间,而不是全局的 10 分钟。

5. 重要说明

  1. active ≠ 实时连接状态active 代表的是业务活跃度。即使设备物理断开,只要没超过 inactivityTimeout,其状态依然可能显示为 active。要获取实时连接事件,应使用规则链处理 ConnectDisconnect 事件。
  2. 状态更新存在延迟:由于 defaultStateCheckIntervalInSec 的存在,设备从达到“不活跃”条件到页面状态更新,最多会有1个检查周期的延迟(实际状态变更延迟 = 超时 + 最多一个检查周期)。
内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值