A typical IoT solution is characterized by many devices (i.e. things) that may use some form of gateway to communicate through a network to an enterprise back-end server that is running an IoT platform that helps integrate the IoT information into the existing enterprise. The roles of the devices, gateways, and cloud platform are well defined, and each of them provides specific features and functionality required by any robust IoT solution.
Stack for Constrained Devices: Sensors and Actuators
The “Thing” in the IoT is the starting point for an IoT solution. It is typically the originator of the data, and it interacts with the physical world. Things are often very constrained in terms of size or power supply; therefore, they are often programmed using microcontrollers (MCU) that have very limited capabilities. The microcontrollers powering IoT devices are specialized for a specific task and are designed for mass production and low cost.
The software running on MCU-based devices aims at supporting specific tasks. The key features of the software stack running on a device may include
- IoT operating system – many devices will run with ‘bare metal’, but some will have embedded or real-time operating systems that are particularly suited for small constrained devices, and that can provide IoT-specific capabilities.
- Hardware abstraction – a software layer that enables access to the hardware features of the MCU, such as flash memory, GPIOs, serial interfaces, etc.
- Communication support – drivers and protocols allowing to connect the device to a wired or wireless protocol like Bluetooth, Z-Wave, Thread, CAN bus, MQTT, CoAP, etc., and enabling device communication.
- Remote management – the ability to remotely control the device to configure rules or commands, to upgrade its firmware or to monitor its battery level.
- Rule based Intelligence – Device can be configured with rules (Intelligence) and thresholds to trigger or act based on parameters monitored by device
Stack for Gateways: Connected and Smart Things
The IoT gateway acts as the aggregation point for a group of sensors and actuators to coordinate the connectivity of these devices to each other and to an external network. An IoT gateway can be a physical piece of hardware or functionality that is incorporated into a larger “Thing” that is connected to the network. For example, an industrial machine might act like a gateway, and so might a connected automobile or a home automation appliance.
An IoT gateway will often offer processing of the data at the ‘edge’ and storage capabilities to deal with network latency and reliability.
IoT gateways are becoming increasingly dependent on software to implement the core functionality. The key features of a gateway software stack include:
- Operating system – typically a general purpose operating system such as Linux.
- Application container or run-time environment – IoT gateways will often have the ability to run application code, and to allow the applications to be dynamically updated. For example, a gateway may have support for Java, Python, or Node.js.
- Communication and Connectivity – IoT gateways need to support different connectivity protocols to connect with different devices (e.g. Bluetooth, Wi-Fi, Z-Wave, ZigBee). IoT Gateways also need to connect to different types of networks (e.g. Ethernet, cellular, Wi-Fi, satellite, etc.…) and ensure the reliability, security, and confidentiality of the communications.
- Data management & Messaging – local persistence to support network latency, offline mode, and real-time analytics at the edge, as well as the ability to forward device data in a consistent manner to an IoT Platform.
- Remote management – the ability to remotely provision, configure, startup/shutdown gateways as well as the applications running on the gateways.
- Rule Based Intelligence – provides rules on data-processing events and acting on events/data based on threshold based rules configured and running on gateways.
Fig – IoT Gateway Stack
IoT Gateway satck can be combined with NB-IoT or CAT-M or LoRA wireless access-point to create an IoT-network solution.
Stack for IoT Cloud Platforms
The IoT Cloud Platform represents the software infrastructure and services required to enable an IoT solution. An IoT Cloud Platform typically operates on top of Openstack or Container Cloud platform running on Server-HW and is expected to scale both horizontally, to support the large number of devices connected, as well as vertically to address the variety of IoT solutions. The IoT Cloud Platform will facilitate the interoperability of the IoT solution with existing enterprise applications and other IoT solutions.
The core features of an IoT Cloud Platform include
- Connectivity and Message Routing – IoT platforms need to be able to interact with very large numbers of devices and gateways using different protocols and data formats, but then normalize it to allow for easy integration into the rest of the enterprise.
- Device Management and Device Registry – a central registry to identify the devices/gateways running in an IoT solution and the ability to provision new software updates and manage the devices.
- Data Management and Storage – a scalable data store that supports the volume and variety of IoT data.
- Event Management, Analytics & UI – scalable event processing capabilities, ability to consolidate and analyze data, and to create reports, graphs, and dashboards.
- Intelligence based on Data Analytics – Rules based intelligence based on analyzed / consolidated data
- Application Enablement – ability to create reports, graphs, dashboards, … and to use API for application integration.
Fig – IoT Cloud Platform
Across the different stacks of an IoT solution are a number of features that need to be considered for any IoT architecture, including:
- Security – Security needs to be implemented from the devices to the cloud. Features such as authentication, encryption, and authorization need be part of each stack.
- Ontologies – The format and description of device data is an important feature to enable data analytics and data interoperability. The ability to define ontologies and metadata across heterogeneous domains is a key area for IoT.
- Development Tools and SDKs – IoT Developers will require development tools that support the different hardware and software platforms involved.
Key characteristics for IoT Stacks
There are some common characteristics that each IoT stack should embrace, including
- Loosely coupled – Three IoT stacks have been defined but it is important that each stack can be used independently of the other stacks. It should be possible to use an IoT Cloud Platform from one supplier with an IoT Gateway from another supplier and a third supplier for the device stack.
- Modular – Each stack should allow for the features to be sourced from different suppliers.
- Platform-independent – Each stack should be independent of the host hardware and cloud infrastructure. For instance, the device stack should be available on multiple MCUs and the IoT Cloud Platform should run on different Cloud PaaS.
- Based on open standards – Communication between the stacks should be based on open standards to ensure interoperability.
- Defined APIs – Each stack should have defined APIs that allow for easy integration with existing applications and integration with other IoT solutions
IoT Solution is an integration and system development project using COTS HW as much as possible and different IoT software pieces to create a vertical end-to-end solution for deployment or trial.