CloudPlugs uses a very flexible and powerful fog computing architecture. Fog computing means cloud computing power complemented by efficient, secure networking and secure edge computing.
At the core of the cloud service, CloudPlugs implements a high-performance, event-drive, secure, polyglot message bus that provides connectivity and protocol transcoding services. Devices can communicate with each other through the cloud, independent of the protocol they use to talk to the message bus. For example, a device speaking MQTT, can transparently communicate with a device speaking REST, WebSockets or PlugNet™.
Devices such as Prototypes, Production Things, Controllers (control applications) and external applications and services communicate through dynamic, hierarchical channels using publish and subscribe methods.
Production Things, Controllers and applications subscribe to channels to publish information and to read or issue control commands. Published data may be formatted as structured or unstructured JSON objects providing maximum flexibility. Devices and applications can subscribe and publish to one or more channels. Access Control Lists (ACLs) are used to determine the level of permissions (None, Read-Only, Read-Write) that devices have over the data or metadata and properties from other devices.
Edge devices or Production Things communicate with the platform by one of three ways:
- Using a SmartPlug™ IoT agent installed on a device or gateway that runs Linux or Windows.
- Using a Connectivity library for REST, WebSockets or MQTT installed alongside the firmware of a low power device.
- Using a SmartPlug™ based legacy gateway to integrate legacy devices and protocols.
In addition, to the message bus, the CloudPlugs enterprise grade cloud backend offers the following functionality and services:
- A Time series No SQL Database that stores all the device data and metadata.
- Storage Engines such as: 1) A Data Collection engine; ii) a Data Retention Engine; iii) a Data Normalization engine so data can be read across different devices and protocols; and iv) a Data Extraction Engine to allow other applications and services to access the device data, or to export the data to other applications.
- A Data and Event Processing Engine that allows users to program their own algorithms for cloud based data processing.
- A Rules Engine to program triggers and alarm and workflows based on device data or events.
- A Geo-location engine to track mobile devices.
- Application Lifecycle Management tools that allow cloud based development, deployment, management and updating of both device and controller applications.
- Device Lifecycle Management tools that allow cloud based prototyping, provisioning, management and updating of your devices.
- Data lifecycle management through the Storage Engines.
- API’s, connectors and gateways to allow seamless integration with 3rd party applications.
Controllers are external applications that manage Things which they have been granted access to. A controller could be a mobile app, a web application or any HMI (Human Machine Interface) application. Controllers comunicate with Production Things through channels, and they may have Read-Only, or Read/Write permissions on Things. Read Only permissions allow controllers to read the properties of a Thing. Read/Write permissions allow Controllers to modify the properties of a Thing as well as to impersonate the Thing.
Business and Operations Support systems receive data and alarms for analysis and decision making and they communicate with the platform and devices through channels as well.