Four Buildings Blocks of IOTile Data Management

There are four basic building blocks of data management in IOTile Cloud:

  1. Stream - A unique time series of data.  A stream is the data produced from a given input or output of a specific device (like temperature or electrical pulses from a sensor device). Streams can also be time series data imported from a 3rd party source (like temperature from the API of an internet weather site). 
  2. Device - A unique source of data.  Physical IOTile Devices are typically sensors (a temperature sensor generating a temperature data stream) or machine readers (a USB or serial port reader generating a data stream from reading an industrial machine like a motor).  Any other source of data that is not a physical device is considered a Virtual Device and can be treated analogously to a Device in the IOTile Framework.
  3. Variables - A set of data streams that share a common index and physical units.   Ten temperature sensors would produce ten unique streams that could be described by a single temperature variable with units of degrees.  For physical IOTile Devices, a variable is made to correspond directly with the identical input/output port on all devices of the same type.  Thus a sensor with two temperature sensors could be said to have two variables (for example, Temp 1 and Temp 2 that might be used for differential measurements).
  4. Projects - A set of devices grouped together to accomplish useful work.  IOTile Cloud uses projects as the primary grouping to encapsulate a set of devices, as well as their variables and streams, to accomplish tasks useful to the user.  This could be a temperature sensor, motor machine reader, and vibration sensor, which together describe the state of the motor in such a way that insight can be ascertained from their relation.  Thus, a project is a digital representation of a physical system. 

For a Project formed of identical Devices, all possible Stream combinations (Device * Variable) exist:

V1: Temp 1 (°C) V2: Temp 2 (°C) V3: Battery (Volts) V4: Reboot Counter (Count)
D1: Temperature Sensor D1V1 D1V2 D1V3 D1V4
D2: Temperature Sensor D2V1 D2V2 D2V3 D2V4
D3: Temperature Sensor D3V1 D3V2 D3V3 D3V4

This Project might be used to represent a set of refrigerators where the differential between the inner cold and outer warm temperatures create a useful representation of the refrigerator system state. 

For a Project formed from dissimilar Devices, only sparse Stream combinations exist:

      V1: Temp (°C) V2: Speed (RPM) V3: Vibration (G)   V3: Battery (V) V4: Reboot Counter (#)
D1: Temp Sensor     D1V1
  D1V3 D1V4
D2: Motor Reader    
D2V2   D2V3 D2V4
D3: Vibration Sensor    

D3V3   D3V3 D3V4

This Project might be used to represent the motor discussed above, where the temperature, motor speed, and external vibration can be used to characterize the health and predictive maintenance of a given motor.

The relationship between Devices, Variables, and Streams can be shown graphically as in the diagram below.

Treating Streams in this manner creates three-dimensional tensor structures to hold historical data. The physical or virtual Device is the first dimension, the Variable is the second, and Time is the third.  This structure allows for IOTile data to be easily ingested and processed for data analysis.  Derivative Streams can be created by understanding and relating different Streams to one another.  Passing sets of Streams through filters allows for the automated triggering of actions.  The creation of derivative Streams, compound filtering, and compound triggering allows for the use of any modern big data and machine learning analytics to be incorporated directly into an automatic data processing system that makes data actionable for the Internet of Things. 

Still need help? Contact Us Contact Us