RoboFuse is composed of a series of technologies, products and components integrated with a micro service-based system, built with high scalability and availability in mind.
Timeseries data (sensor data in our case) is always a challenge no matter what operations are taken on it. RoboFuse platform is built to listen to hundreds of devices simultaneously, but also scale to the required number of instances to guarantee data safety and availability.
Let’s look at the basic RoboFuse components.
Sources
Most of the time devices are categorized by their functions and are specialized to respond for a specific need.
Devices are presenting different complexity and can implement different degree of “intelligence” (i.e. SmartThings)
These devices can be:
- Personal – each device is used by a particular (identified) user
- Shared – device is used by different users – shared
Devices can be static or mobile:
- Installed on home – then they are assets i.e. a thermometer in a specific room
- Wearable – i.e. step counter, mobile phone
Devices can be categorized by type:
- Smart devices – self-contained devices that include sensors, actuators, and a communication module. Smart devices can be general “smart” sensors with built-in communication module (i.e. trackers).
- Gateway is a physical device or software program that serves as the connection point between the cloud and controllers, sensors, and intelligent devices. All data moving to the cloud, or vice versa, goes through the gateway, which can be either a dedicated hardware appliance or software program.
Ingest & Process
For easy data push from the devices (environmental or wearable) a specialized API was designed. Communication API protocols abstraction layer is presented on this layer. This module specializes in the communication scheme with devices, sensors, and IT systems in an IoT context, where the use of lightweight communication protocols in a heterogeneous technological environment must be facilitated.
In this way, the information managed by the subsequent layers of the platform is completely agnostic of the technological protocol used to send the data.
To speed up integration with the platform (from sensors, devices, or IT systems), this component offers the interpretation of a multitude of protocols “out of the box”:
- REST and WebSockets: for Javascript clients, smartphones.
- MQTT for two-way communications and basic devices.
- Web Services / JMS / AMQP for business applications.
In addition, the incorporation of new protocols is facilitated thanks to the deployment of new Plugins.
MQTT
RoboFuse also supports MQTT communication protocol by using specific naming for MQTT topics, RoboFuse is offering integration with RabbitMQ. This is required for pushing data to RoboFuse cloud or to send commands to devices. RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements.
But we understand that one day somebody may want to replace it with different solution, and RoboFuse is built with this aspect in mind.
Compute Unit – Data Flows – Stream process
During the processing phase of different data that are ingested by RoboFuse is needed to process data before / after they are stored.
RoboFuse supports the usage of Nodered as compute unit infrastructure. That means that for each developer account one compute unit can be defined. RoboFuse is providing some predefined flows that cover different needs and examples like:
- MQTT – API bridge – it connect to MQTT process data and then call different API’s
- Events – create your own events / act on different events or thresholds
Store
For implementing the datastore that of the RoboFuse platform different storage technologies are used.
One important component is represented by the DataStore – that store the RealTime data that arrives from Devices. Time series involves the use of data that are indexed by equally spaced increments of time (minutes, hours, days, weeks, etc.). Due to the discrete nature of time series data, many time series data sets have a seasonal and/or trend element built into the data. All data generated by the sensors are time series data.
PostgreSQL
RDBMS storage is required to persist all meta information (cold data in terms of Lambda architecture). This includes data about devices, networks, users, device types and important configuration settings. In other words, it’s responsible for all non-time series data.
Timescale DB
Storing time series data is ensured TimescaleDB. Achieve 10-100x faster queries than other competitors, leverage query parallelization, continuous aggregates, and other performance optimizations.
Analysis
IoT analytics is the application of data analysis tools and procedures to realize value from data generated by connected Internet of Things devices.
RoboFuse provides a default integration with Grafana vizualization tool, that allow easy data query, visualize, alert on, and understand your data.
It is possible to create new applications that can do computation and specific analysis on the IoT data – as a subset and a special case of big data and, as such, consists of heterogenous streams that must be combined and transformed to yield consistent, comprehensive, current, and correct information for business reporting and analysis. This can be done using Compute Units provided by RoboFuse or creating of dedicated analysis application that use the RoboFuse APIs.
Publish
For each datatype defined by RoboFuse under device management module, a specific API resource is created.
For each API resource, devices can send one data object or an array of objects with a maximum limit defined. The array is limited because of the needed resources like data transfer channel – Internet speed and processing time of the array on the server side.
RoboFuse frontend service
Service which provides RESTful and Websocket APIs. Responsible for primary checks, sending requests to Backend service and delivering response from it asynchronously. Also processes some lightweight calls to DB.
RoboFuse backend service
Responsible for storing data in, managing subscriptions, and retrieving data by request from other services. Doesn’t have publicly accessible API.
Customer Apps
To implement different features of the system, a set of functions must be executed on the backend / server side. There are 2 main categories of those.
- The first one is triggered by an end-user interaction with the system, that involves a user that is logged in accordingly.
- A second one is when a backend system is running based on this one scheduler and must process different pieces of data.
We can label them as:
- API’s – first one – an end-user action will trigger one or more API’s
- Server Side – second one;
Server side application is supposed to be deployed on a secure network, encrypted data, etc. and in this case the application can use also the Client Secret ID’s. With this other, private data can be accessed.