Working with telemetry data
IIoTNext Platform provides a rich set of features related to time-series data:
- Collect data from devices using various protocols and integrations;
- Store time series data in time-series database;
- Query the latest time-series data values or all data within the specified time range with flexible aggregation;
- Subscribe to data updates using WebSockets for visualization or real-time analytics;
- Visualize time series data using configurable and highly customizable widgets and dashboards;
- Filter and analyze data using flexible Rule Flow;
- Generate alarms based on collected data;
- Forward data to external systems using External Rule Nodes (e.g. Kafka or RabbitMQ Rule Nodes).
This guide provides an overview of the features listed above, and some useful links to get more details.
Data points
IIoTNext Platform internally treats time-series data as timestamped key-value pairs. We call single timestamped key-value pair a data point. Flexibility and simplicity of the key-value format allow easy and seamless integration with almost any IoT device on the market. Key is always a string and is basically a data point key name, while the value can be either string, boolean, double, integer, or JSON.
The following JSON contains 5 data points: temperature (double), humidity (integer), hvacEnabled (boolean), hvacState (string) and configuration (JSON):
{ "temperature": 42.2, "humidity": 70, "hvacEnabled": true, "hvacState": "IDLE", "configuration": { "someNumber": 42, "someArray": [1,2,3], "someNestedObject": {"key": "value"} } }
You may notice that the JSON listed above does not have timestamp information. In such a case, IIoTNext Platform uses the current server timestamp. However, you may include timestamp information in the message. See the example below:
{ "ts": 1527863043000, "values": { "temperature": 42.2, "humidity": 70 } }
Time-series data upload API
You may use built-in transport protocol implementations:
The above protocols support JSON message format.
Data visualization
We assume you have already pushed time-series data to IIoTNext Platform. Now you may use it in your dashboards. We recommend dashboards overview to get started. Once you are familiar with how to create dashboards and configure data sources, you may use widgets to visualize either the latest values or real-time changes and historical values. Good examples of widgets that visualize the latest values are digital and analog gauges, or cards. Charts are used to visualize historical and real-time values and maps to visualize the movement of devices and assets.
You may also use input widgets to allow dashboard users to input new time-series values using the dashboards.
Data storage
IIoTNext Platform stores all telemetry data in a high-performance time-series database. IIoTNext Platform supports throughputs to the tune of 5000 datapoints per second. Higher throughput demands of your application can be met using our scalable backend.
Data retention
As of now, IIoTNext Platform retention policy is ‘forever’, which means telemetry data is retained forever and never deleted automatically. However, older datapoints can be deleted manually on request.
Data durability
The device that sends messages with time-series data to IIoTNext Platform will receive a confirmation once the message is successfully stored into the Rule Engine Queue that is configured for a particular device profile.
As a tenant administrator, you may configure processing strategy for the queue. You may configure the queue either to reprocess or ignore the failures of the message processing. This allows granular control on the level of durability for the time-series data and all other messages processed by the rule engine.
Rule engine
The Rule Engine is responsible for processing all sorts of incoming data and events. You may find the most popular scenarios of using attributes within the rule engine below:
Generate alarms based on the logical expressions against time-series values
Use alarm rules to configure most common alarm conditions via UI or use filter nodes to configure more specific use cases via custom JS functions.
Modify incoming time-series data before they are stored in the database
Use message type switch rule node to filter messages that contain “Post telemetry” requests. Then, use transformation rule nodes to modify a particular message.
Calculate delta between previous and current time-series value
Use calculate delta rule node to calculate power, water, and other consumption based on smart-meter readings.
Fetch previous time-series values to analyze incoming telemetry from the device
Use originator telemetry rule node to enrich incoming time-series data message with previous time-series data of the device.
Fetch attribute values to analyze incoming telemetry from the device
Use enrichment rule nodes to enrich incoming telemetry messages with attributes of the device, related asset, customer, or tenant. This is an extremely powerful technique that allows modifying processing logic and parameters based on settings stored in the attributes.
Use analytics rule nodes to aggregate data for related assets
Use analytics rule nodes to aggregate data from multiple devices or assets.
Useful to calculate total water consumption for the building/district based on data from multiple water meters.