A Telemetry 2.0 Report Profile is a configuration, authored in JSON, that can be sent to any RDK device which supports Telemetry 2.0. A Report Profile contains properties that are interpreted by the CPE in order to generate and upload a telemetry report. These properties define the details of a generated report, including:

  • Scheduling (how often the report should be generated) 
  • Parameters (what key/value pairs should be in the report)   
  • Encoding (the format of the generated report)   
  • Protocol (protocol to use to send generated report)

Examples


On this Page :

Profile Properties


Property

Type

Required

DescriptionstringOptional
VersionstringOptional
ProtocolstringRequired
EncodingTypestringRequired
ReportingIntervalintegerOptional
ReportingAdjustmentsobjectOptional
ActivationTimeOutintegerOptional
DeleteOnTimeOutbooleanOptional
TimeReferencestringOptional
GenerateNowbooleanOptional
RootNamestringOptional
ParameterarrayRequired
TriggerConditionarrayOptional
HTTPobjectOptional
RBUS_METHODobjectOptional
JSONEncodingobjectOptional



Description


Text describing the purpose of this Report Profile.

Description

  • is optional
  • Type: string


Version


Version of the profile. This value is opaque to the Telemetry 2 component, but can be used by server processing to indicate specifics about data available in the generated report.

Version

  • is optional
  • Type: string


Protocol


The protocol to be used for the upload of report generated by this profile.

Protocol

  • is required
  • Type: string

Protocol Constraints

enum: the value of this property must be equal to one of the following values:

Value

Explanation

"HTTP"When Protocol is equal to HTTP, an HTTP element is expected to occur within the Profile.
"RBUS_METHOD"When Protocol is equal to RBUS_METHOD, generated reports will be sent to the cloud via a protocol provider component on the device.  An RBUS_METHOD element is expected to occur within the Profile, and it will provide details for communicating with the protocol provider.

EncodingType


The encoding type to be used in the report generated by this profile.

EncodingType

  • is required
  • Type: string

EncodingType Constraints

enum: the value of this property must be equal to one of the following values:

Value

Explanation

"JSON"When EncodingType is equal to JSON, a JSONEncoding element is expected to occur within the Profile.

ReportingInterval


The interval, in seconds, at which this profile shall cause a report to be generated.

ReportingInterval

  • is optional
  • Type: integer


ReportingAdjustments


A set of optional properties that modify or adjust the reporting for a profile.  If GenerateNow is present, ReportingAdjustments shall be ignored.

ReportingAdjustments

  • is optional
  • Type: object

ReportingAdjustments Type

object (ReportingAdjustments)


ActivationTimeOut


The amount of time, in seconds, that this profile shall remain active on the device. This is the amount of time from which the profile is received until the CPE will consider the profile to be disabled. After this time, no further reports will be generated for this report.

ActivationTimeOut

  • is optional
  • Type: integer


DeleteOnTimeOut


Only valid in conjunction with ActivationTimeOut.  Indicates whether this profile should be removed from memory when the ActivationTimeOut is reached.  This is most useful for profiles that are intended to be short-lived and not persisted across reboots.  

DeleteOnTimeOut

  • is optional
  • Type: boolean


TimeReference


For Telemetry 2.0 in RDK versions prior to Release 6.0, Time Reference must be value of "0001-01-01T00:00:00Z".

For Telemetry 2.0 in RDK versions 6.0 and later, Time Reference is supported as follows:

An absolute time reference in UTC that indicates when a report shall be sent.  The UTC time can be arbitrarily in the future or past; only the time of day shall be respected. When TimeReference is a value other than the default, each ReportingInterval must complete at this time plus or minus an integer multiple of ReportingInterval.  In other words, in order for a ReportingInterval to complete at the TimeReference, the T2 component must calculate when the first ReportingInterval should expire in order for subsequent ReportingIntervals to line up to the required TimeReference. This means that the first report may occur at an interval shorter than ReportingInterval.  TimeReference is only valid for profiles that specify a ReportingInterval.

TimeReference

  • is optional
  • Type: string

TimeReference Default Value

The default value is:

"0001-01-01T00:00:00Z"

GenerateNow


When true, indicates that the report for this Report Profile should be generated immediately upon receipt of the profile.

GenerateNow

  • is optional
  • Type: boolean

GenerateNow Default Value

The default value is:

false

RootName


Name to be used as root of the generated JSON for the report.  If not specified, the root name for the report will default to "Report".  

RootName

  • is optional
  • Type: string

RootName Default Value

The default value is:

Report

Parameter


An array of objects which defines the data to be included in the generated report. Each object defines the type of data, the source of the data and an optional name to be used as the name (marker) for this data in the generated report.

Parameter

  • is required
  • Type: object[]

Parameter Type

object (Parameter Definition)

Parameter Constraints

maximum number of items: the maximum number of items for this array is: 800


TriggerCondition


An array of condition definition objects which defines the conditions upon which a report should be generated.  If any one condition evaluates to TRUE, the report is generated.   Each condition definition object in the array defines the type of data, the source of the data, the operator and value to evaluate.

TriggerCondition

  • is optional
  • Type: array[]

TriggerCondition Type

array (TriggerCondition Definition)

TriggerCondition Constraints

maximum number of items: the maximum number of items for this array is: 50


HTTP


HTTP Protocol details that will be used when Protocol="HTTP".

HTTP

  • is optional
  • Type: object

HTTP Type

object (HTTP Protocol Definition)


RBUS_METHOD


RBUS_METHOD Protocol details that will be used when Protocol="RBUS_METHOD".

RBUS_METHOD

  • is optional
  • Type: object

RBUS_METHOD Type

object (RBUS_METHOD Protocol Definition)


JSONEncoding


JSON Encoding details that will be used when EncodingType="JSON".

JSONEncoding

  • is optional
  • Type: object

JSONEncoding Type

object (JSON Encoding Definition)


Examples


Example 1

This is an example of a complete Report Profile. The "Parameter" property defines the data to be gathered and reported. Notice that there are three types of data supported: dataModel, event, and grep. The other properties define scheduling, protocols and encoding of the generated report.


{
    "Description": "T2.0 WiFi data example",
    "Version": "0.1",
    "Protocol": "HTTP",
    "EncodingType": "JSON",
    "ReportingInterval": 900,
    "TimeReference": "0001-01-01T00:00:00Z",
    "Parameter": [{
            "type": "dataModel",
            "name": "MAC",
            "reference": "Device.DeviceInfo.X_COMCAST-COM_CM_MAC"
        },
        {
            "type": "grep",
            "marker": "WIFI_BYTESSENTCLIENTS_1",
            "search": "WIFI_BYTESSENTCLIENTS_1:",
            "logFile": "wifihealth.txt"
        },
        {
            "type": "grep",
            "marker": "WIFI_BYTESSENTCLIENTS_2",
            "search": "WIFI_BYTESSENTCLIENTS_2:",
            "logFile": "wifihealth.txt"
        },
        {
            "type": "event",
            "eventName": "WIFI_CWconfig_1_split",
            "component": "ccsp-wifi-agent"
        },
        {
            "type": "event",
            "eventName": "WIFI_CWconfig_2_split",
            "component": "ccsp-wifi-agent"
        },
        {
            "type": "dataModel",
            "reference": "Device.WiFi.Radio.{i}.OperatingChannelBandwidth"
        },
        {
            "type": "dataModel",
            "name": "WIFI_NF_1_split",
            "reference": "Device.WiFi.Radio.1.Stats.X_COMCAST-COM_NoiseFloor"
        },
        {
            "type": "dataModel",
            "name": "WIFI_NF_2_split",
            "reference": "Device.WiFi.Radio.2.Stats.X_COMCAST-COM_NoiseFloor"
        }
 
    ],
    "HTTP": {
        "URL": "https://some.example.url/",
        "Compression": "None",
        "Method": "POST",
        "RequestURIParameter": [{
                "Name": "profileName",
                "Reference": "Profile.Name"
            },
            {
                "Name": "reportVersion",
                "Reference": "Profile.Version"
            }
        ]
 
    },
    "JSONEncoding": {
        "ReportFormat": "NameValuePair",
        "ReportTimestamp": "None"
    }
 
}

  • No labels

4 Comments

  1. Sorry if this is an unrealted question, but I was looking for a formula to get started calculating WHiX.  When I search rdkcentral for WHiX I find it mentioned in the glossary and then on this page!  Is there any information on available on formula that uses the example report?

  2. Hello Z-Tom Hopewell 

    Currently WHiX algorithm is not open sourced and hence is not available to the community. The earlier mention of WHiX in this page was part of an example to 'Report profile'. We have removed any references to WHiX from this page so as to avoid any such confusions in future. We apologize for any inconvenience caused

  3. Do we support any other encoding types other than EncodingType="JSON"?

    1. Hello Z-Vineeth Shankar   No other encoding types are supported today, but the intention is to support new types in future.  Community contributions and suggestions welcome!