产品定价 立即试用
IoT网关
文档 > 物联网网关功能 > 报告策略
入门
安装
目录

上报策略

简介

上报策略(Report Strategy)功能用于配置网关向平台上报数据的方式。它采用分层配置体系,可按需在不同层级定义策略。

配置层级

上报策略按以下优先级顺序应用:

  1. 默认配置:如果未指定其他配置,则应用默认上报策略(ON_RECEIVED)。
  2. 全局配置:在tb_gateway.json文件中定义,适用于所有连接器、设备和数据点,除非被覆盖。
  3. 连接器配置:在连接器的配置文件中定义,适用于该连接器内的所有设备和数据点,除非被覆盖。
  4. 设备配置:在连接器配置文件的设备部分定义,适用于该设备的所有数据点,除非被覆盖。
  5. 数据点配置:在特定数据点的时序或属性部分定义,优先级高于所有其他层级。

覆盖行为

层级中较低级别定义的配置会覆盖较高级别的配置。例如:

  • 数据点级策略将覆盖设备、连接器、全局和默认级别定义的策略。
  • 设备级策略将覆盖连接器、全局和默认配置中该设备所有数据点的策略,除非定义了特定的数据点策略。

更多详情请参阅分层配置覆盖

适用范围

-上报策略适用于所有内置连接器。 -对于自定义连接器,将应用默认策略或全局/连接器配置中定义的策略。如需支持更低级别的配置(设备和数据点),需要自定义实现。

这种灵活性确保了上报行为可以根据不同系统和设备的特定需求进行定制。

上报策略类型

网关支持以下类型的上报策略:


接收即上报(On received)

  • 说明:网关在接收到数据后立即向平台实例上报。这是默认上报策略

  • 使用场景:适用于需要实时数据可视化的场景。

  • 配置:配置只需指定上报策略的type

1
2
3
4
5
{
  "reportStrategy": {
    "type": "ON_RECEIVED"
  }
}

变化时上报(On change)

  • 说明:网关仅在数据发生变化时向平台实例上报。

  • 使用场景:适用于传感器数量较多的系统,以减少传输数据量。

  • 配置:配置只需指定上报策略的type

1
2
3
4
5
{
  "reportStrategy": {
    "type": "ON_CHANGE"
  }
}

周期上报(On report period)

  • 说明:网关按固定时间间隔向平台实例上报数据,无论数据是否发生变化。

  • 使用场景:适用于避免过于频繁的更新,或通过按定义的时间间隔上报数据来保持连接活跃。即使没有变化或未收到新数据,最后一个值仍会在间隔结束时上报。

  • 行为:如果在间隔期间收到多个值,则仅上报最新的值。

  • 配置:配置需要指定上报策略的type和以毫秒为单位的reportPeriod

1
2
3
4
5
6
{
  "reportStrategy": {
    "type": "ON_REPORT_PERIOD",
    "reportPeriod": 60000
  }
}

变化或周期上报(On change or report period)

  • 说明:网关在数据变化时或按固定时间间隔向平台实例上报数据,以先满足的条件为准。

  • 使用场景:适用于希望减少数据传输但仍需对重大变化进行实时更新的场景。

  • 行为: -数据变化时立即发送。 -如果没有变化,数据将在指定间隔结束时发送,即使未收到新数据。

  • 配置:配置需要指定上报策略的type和以毫秒为单位的reportPeriod

1
2
3
4
5
6
{
  "reportStrategy": {
    "type": "ON_CHANGE_OR_REPORT_PERIOD",
    "reportPeriod": 60000
  }
}

使用示例

以下是一些示例,展示如何在配置层级的不同级别配置上报策略


示例1:连接器级上报策略

  • 场景:全局使用ON_CHANGE,但对于Modbus连接器,每60秒上报一次数据以减少速率限制的使用。其他连接器的数据应使用全局配置。

  • 配置
    • 全局配置tb_gateway.json):
      1
      2
      3
      4
      5
      
      {
        "reportStrategy": {
          "type": "ON_CHANGE"
        }
      }
      
    • Modbus连接器配置
      1
      2
      3
      4
      5
      6
      
      {
        "reportStrategy": {
          "type": "ON_REPORT_PERIOD",
          "reportPeriod": 60000
        }
      }
      

      注意:如果使用UI界面,您可以在连接器配置的常规标签页中设置上报策略。

  • 结果
    • Modbus连接器的数据每60秒上报一次。 -其他连接器(如OPC-UA)的数据在发生变化时立即上报。

示例2:设备级上报策略

  • 场景:全局使用ON_CHANGE,但对于特定的MQTT设备,在数据变化时或每60秒上报数据,以先满足的条件为准。

  • 配置
    • 全局配置tb_gateway.json):
      1
      2
      3
      4
      5
      
      {
        "reportStrategy": {
          "type": "ON_CHANGE"
        }
      }
      
    • MQTT连接器设备配置(在mapping中):
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      
      {
        "mapping": [
          {
            "topicFilter": "...",
            "deviceInfo": "...",
            "reportStrategy": {
              "type": "ON_CHANGE_OR_REPORT_PERIOD",
              "reportPeriod": 60000
            },
            "attributes": [...],
            "timeseries": [...]
          }
        ]
      }
      
  • 结果
    • MQTT设备的数据在变化时或60秒内无变化时上报。
    • MQTT连接器中其他设备的数据仅在变化时上报。

示例3:数据点级上报策略

  • 场景:对Modbus设备使用ON_REPORT_PERIOD每60秒上报一次数据,但对于特定数据点(valveState),仅在变化时上报。

  • 配置
    • Modbus连接器配置
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      
      {
        "reportStrategy": {
          "type": "ON_REPORT_PERIOD",
          "reportPeriod": 60000
        },
        "master": {
          "slaves": [
            {
              "unitId": 1,
              "attributes": [...],
              "timeseries": [
                {
                  "tag": "valveState",
                  "type": "uint16",
                  "functionCode": 4,
                  "objectsCount": 1,
                  "address": 3,
                  "reportStrategy": {
                    "type": "ON_CHANGE"
                  }
                }
              ]
            }
          ]
        }
      }
      
  • 结果
    • Modbus设备的常规数据每60秒上报一次。
    • valveState数据点仅在值变化时上报。

示例4:跨连接器混合上报策略

  • 场景: -全局使用ON_RECEIVED。 -对Modbus连接器使用ON_REPORT_PERIOD,每30秒上报一次数据。 -对MQTT连接器中的特定设备使用ON_CHANGE_OR_REPORT_PERIOD,在数据变化时或每15秒上报。

  • 配置
    • 全局配置
      1
      2
      3
      4
      5
      
      {
        "reportStrategy": {
          "type": "ON_RECEIVED"
        }
      }
      
  • Modbus连接器配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    {
      "reportStrategy": {
        "type": "ON_REPORT_PERIOD",
        "reportPeriod": 30000
      },
      "master": {
          "slaves": [
            {
              "unitId": 1,
              ...
              "attributes": [...],
              "timeseries": [...]
            }
          ]
      }
    }
    
    • MQTT连接器设备配置
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      
      {
        "mapping": [
          {
            "topicFilter": "...",
            "deviceInfo": "...",
            "reportStrategy": {
              "type": "ON_CHANGE_OR_REPORT_PERIOD",
              "reportPeriod": 15000
            },
            "attributes": [...],
            "timeseries": [...]
          }
        ]
      }
      
  • 结果: -大多数连接器的数据立即上报(默认ON_RECEIVED策略)。
    • Modbus连接器的数据每30秒上报一次。 -特定MQTT设备的数据在变化时或每15秒上报。

分层配置覆盖

上报策略功能采用分层方式,较低级别的配置会覆盖较高级别定义的配置。这确保了最具体的配置被应用。

关键覆盖规则

  1. 默认配置: *当任何级别都未指定其他策略时,使用默认上报策略(ON_RECEIVED)。

  2. 全局配置: *在tb_gateway.json文件中定义的上报策略适用于所有连接器、设备和数据点,除非在更具体的级别被覆盖。 *此策略覆盖默认配置。

  3. 连接器级配置: *在连接器级别设置的上报策略适用于所有设备及其数据点(如果未定义设备级或数据点级策略)。 *此策略覆盖全局配置和默认配置中设置的配置。
    • 示例:如果连接器定义了上报策略,该连接器内的所有设备和数据点将继承此策略,除非在更低级别被覆盖。
  4. 设备级配置: *为设备设置的上报策略适用于其所有数据点(属性和时序),除非定义了数据点特定的策略。 *此策略覆盖连接器、全局和默认级别设置的配置。
    • 示例:如果设备定义了上报策略,其所有数据点将使用此策略,除非特定数据点覆盖了它。
  5. 数据点级配置: *为特定数据点设置的上报策略会覆盖设备、连接器、全局和默认级别配置的策略。
    • 示例:如果数据点定义了自己的上报策略,该策略将用于该数据点,无论更高级别配置了什么策略。

覆盖示例

-如果全局配置指定了ON_CHANGE,但某个连接器设置为ON_REPORT_PERIOD,则该连接器中的所有设备和数据点将遵循ON_REPORT_PERIOD策略。 -如果连接器内的某个设备配置了ON_CHANGE_OR_REPORT_PERIOD,此策略将应用于其所有数据点,除非某个特定数据点有自己的配置。 -最后,如果单个数据点配置了ON_RECEIVED,它将覆盖所有其他策略,包括设备级配置。

这种分层结构提供了灵活性和控制力,确保可以在最细粒度的级别满足特定需求,同时保持对更广泛配置的回退。

总结

通过组合这些策略,您可以针对实时需求、速率限制管理和系统效率优化数据上报。