产品定价 立即试用
云平台
欧洲地区
文档 > 其他功能 > 设备连接状态
入门
指南 API 常见问题
目录

设备连接状态

设备连接事件

ThingsBoard的DeviceState服务负责监控设备连接状态,并触发推送到RuleEngine的设备连接事件。平台用户可定义如何响应这些事件。

支持的事件包括:

  • Connect事件 - 当设备连接至ThingsBoard时触发。适用于MQTT等基于会话的传输。 对于HTTP传输也会触发,但在该场景下会在每次HTTP请求时触发;
  • Disconnect事件 - 当设备从ThingsBoard断开时触发。适用于MQTT等基于会话的传输。 对于HTTP传输也会触发,但在该场景下会在每次HTTP请求时触发;
  • Activity事件 - 当非活跃设备通过推送遥测、属性更新或RPC命令变为活跃时触发。
  • Inactivity事件 - 当设备在一定时间内无活动时触发。 请注意,即使设备未产生disconnect事件,也可能触发此事件。通常表示一段时间内未触发activity事件。

DeviceState服务负责维护以下服务端属性:

  • active - 表示设备当前状态,true或false;
  • lastConnectTime - 表示设备上次连接ThingsBoard的时间,为自1970年1月1日00:00:00 GMT起的毫秒数;
  • lastDisconnectTime - 表示设备上次从ThingsBoard断开的时间,为自1970年1月1日00:00:00 GMT起的毫秒数;
  • lastActivityTime - 表示设备上次推送遥测、属性更新或执行RPC命令的时间,为自1970年1月1日00:00:00 GMT起的毫秒数;
  • inactivityAlarmTime - 表示上次触发inactivity事件的时间,为自1970年1月1日00:00:00 GMT起的毫秒数。

控制平台如何管理活动

每次设备活动都会导致Device State服务执行一系列操作,如数据库调用和内部簿记。 这可提供有价值的设备当前状态信息,同时也会影响性能。 部分场景不需要精确监控设备状态,用户愿意以牺牲一定的实时活动信息换取整体系统性能提升。

为满足该需求,平台提供活动上报策略功能,用于控制向Device State服务上报活动的频率和数量。 共有四种策略:ALLFIRSTLASTFIRST_AND_LAST。 下文将逐一说明,首先了解核心概念以更好使用该功能。

什么是活动?

活动表示表明设备正在执行操作或与平台通信的事件。 活动示例包括:

  • 连接或断开平台
  • 通过integration或传输层推送时序或属性数据
  • 推送RPC命令
  • 订阅属性更新

上报活动

上报活动指通知Device State服务活动已发生。 Device State服务随后根据活动类型更新属性并触发连接事件。

例如,若活动为设备连接平台,一旦上报活动,Device State服务将更新 lastConnectTimelastActivityTime 属性并触发 Connect事件

活动上报周期

活动上报周期是指系统记录活动的时间段。 时间被划分为连续周期;即一个周期结束后,下一个立即开始。 周期时长可配置

第一个上报周期在ThingsBoard启动时开始。 例如,若系统在第15秒启动,初始上报周期也同时开始。 若周期时长设为15秒,该周期将在第30秒结束,下一个周期随即开始。 该模式在ThingsBoard运行期间循环重复。

image

首次与末次活动事件

  • First事件:上报周期内收到的首次活动。
  • Last事件:上报周期内收到的末次活动。

image

注意:若仅有一次活动,则同时视为first和last。

image

活动上报策略

  • ALL:所有活动立即上报给Device State服务。

image

  • FIRST:仅首次活动立即上报给Device State服务。

image

注意:若某上报周期内无活动,末次活动仍会上报。

image

  • LAST:仅末次活动上报给Device State服务。活动在上报周期结束时上报。

image

  • FIRST_AND_LAST:首次和末次活动均上报给Device State服务。 首次活动立即上报,末次活动在上报周期结束时上报。

image

配置

所有配置均在 thingsboard.yml 中的全局参数完成。

  • state.defaultInactivityTimeoutInSec - 若无活动上报,Device State服务将设备视为不活跃的超时时间(秒)。 默认600秒(10分钟)。可通过为设备设置 inactivityTimeout 服务端属性(单位毫秒)覆盖。
文档信息图标

请注意:
此参数仅控制核心服务如何判断设备连接状态(值保存在设备的 “active” 属性中);不会影响设备会话超时。 设备会话不活动超时由 transport.sessions.inactivity_timeout 属性单独配置。

为避免不一致,建议使二者保持同步:传输会话不活动超时应大于或等于设备不活动超时。

  • state.defaultStateCheckIntervalInSec - Device State服务定期检查设备活动状态的间隔(秒)。默认60秒(1分钟)。
  • state.telemetryTtl - 活动遥测数据的生存时间(毫秒)。默认0毫秒(表示禁用TTL)。

  • transport.activity.reporting_strategy - 传输层的活动上报策略。允许值:ALL、FIRST、LAST、FIRST_AND_LAST。默认LAST。
  • transport.sessions.report_timeout - 传输层上报周期时长(毫秒)。默认3000毫秒(3秒)。
  • transport.sessions.inactivity_timeout - 自设备发送最后一条消息后,设备传输会话保持打开的时长(毫秒)。默认60000毫秒(10分钟)。

下一步