Skip to main content
Version: v5.0

Telemetry config

A telemetry configuration defines the following criteria:

  • The bindings between namedTelemetryCollections, telemetry items, and the IoT data. When a telemetry config updates, the bindings update.
  • Criteria to lookup the normalization script that normalizes the raw IoT data​

A telemetry config is owned by a namespace and you can only have one telemetry config per namespace.

Telemetry config schema#

When you define your telemetry config, refer to the following data structure with reference to the following table:

{  "_name": "",  "_userType": "",  "_configData": {    "_bindings": [      {        "collectionDesc": {          "<property>": "<value>"        },        "query": {          "<property>": "<value>"        }      }    ],    "_normalizationScript":{      "<property>": "<value>"    }  },  "_namespaces": [    ""  ],  "_shortName": "",  "_description": ""}
PropertyTypeDescriptionRequired
_nameStringName your telemetry configuration in long form with a maximum of 100 characters.Required
_userTypeStringEnter a new or shared custom type with a maximum of 100 characters.Required
_configDataObjectPass an object with your config data.Required
   - ._bindingsArray of ObjectPass an array that contains your bindings query objects. Pass an empty array or omit the property to look up all collections.Required
     - .collectionDescObjectPass an object that contains a key-value pair to target a named telemetry collection.Required
     - .queryObjectPass an object that contains a key-value pair to target the telemetry items you want to look up.Required
   - ._normalizationScriptObjectPass an object that contains a key-value pair to target your normalization script. If there is more than one match, the latest version returns.Required
_namespacesArray of StringEnter the namespace that you want to own the telemetry configuration.Required
_shortNameStringGive your telemetry configuration an abbreviated name with a maximum of 22 characters.Required
_descriptionStringEnter a description for the telemetry configurationRequired

Example#

{  "_name": "Telemetry Config - 1",  "_userType": "telemetry_config",  "_configData": {    "_bindings": [      {        "collectionDesc": {          "_userType": "air_quality_sensors"        },        "query": {          "building-unit": "lab"        }      },      {        "collectionDesc": {          "_userType": "temperature-sensors"        },        "query": {          "floor": "floor-3"        }      }    ],    "_normalizationScript": {      "_userType": "telemetry_parser_script"    }  },  "_namespaces": [    "automation_3E4tpXPu"  ],  "_shortName": "telconfig",  "_description": "Telemetry Config for project A"}

During TelemetryConfig creation:#

  • Telemetry items are identified using the query defined in the bindings.
  • Bindings are created using the telemetry ID, source ID (a unique identifier for the sensor), namespace, and the telemetry collection. These bindings are cached by source ID and namespace.

When a message arrives at the Telemetry Worker:#

  • A normalization script is invoked with the raw message (assumed the raw message would have device id)
  • The script transforms the raw message into a Readings object (from the Item service), which includes the source ID.
  • The system retrieves bindings using the source ID and namespace.
  • It then identifies the corresponding telemetry collection and routes the readings accordingly.

APIs#

To post a telemetry config object to the item service, use Create Telemetry Config API.

To get, update, and delete telemetry configs on the platform, use the following APIs: