~ Second post of a three part series.In our previous post, we focussed on introducing IoT, the reasons for its prevalence and its application across industries. In this post, we will look at the new technology requirements and architectures required for IoT solutions. This post will also identify the three stacks of software required by any IoT solution.
IoT is an umbrella term that includes multiple different categories such as wireless sensor/actuator networks, internet-connected wearables, low power embedded systems, RFID enabled tracking, use of mobile phones to interact with the real world (e.g. sensing), devices that connect via Bluetooth-enabled mobile phones to the Internet, smart homes, connected cars and many more. The result is that no single architecture will suit all these areas and the requirements each area brings. However, a modular scalable architecture that supports adding or subtracting capabilities, as well as supporting many requirements across a wide variety of these use cases is inherently useful and valuable. It provides a starting point for architects looking to create IoT solutions as well as a strong basis for further development.
IoT Architecture: Devices, Gateways, and IoT Platforms
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.
Understanding the IoT Devices
Sensors and actuators are devices, which help in interacting with the physical environment. Any device that detects events or changes in its environment and then provides a corresponding output can be classified as a sensor. The data collected by the sensors has to be stored and processed intelligently in order to derive useful inferences from it. For IoT purposes, sensors are often integrated circuits, since the small size and low cost of these chips make them particularly useful. Commonly used IoT sensors include accelerometers, thermometers, gyroscopes, light sensors, MEMS sensors, and magnetometers, but particular industries or markets (such as healthcare) may have specialized sensors as well. Sensors can transform an ordinary “thing” into part of the Internet of Things. As more of varieties of tiny, inexpensive sensors are readily available, the range of connected things has expanded across business and consumer applications.
Stack for Constrained Devices » Sensors and Actuators
The key features of the software stack running on a device may include :
1. 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.
2. Hardware Abstraction – a software layer that enables access to the hardware features of the MCU, such as flash memory, GPIOs, serial interfaces, etc.
3. 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.
4. Remote Management – the ability to remotely control the device to upgrade its firmware or to monitor its battery level.
Understanding IoT Gateways
Internet of Things (IoT) gateway is a device which serves as the connection point between IoT devices and the cloud. An IoT gateway is an important aspect of building an efficient, secure, and easy-to-maintain system. This gateway can be a hardware appliance or virtual. An IoT gateway works by receiving data from IoT sensors, which it can then send onwards to the cloud; it also receives information from the cloud which then goes to the device itself to help it perform necessary functions, such as regulating environmental changes and detecting possible issues with functioning. All information moving from an IoT device to the cloud, or vice versa, goes through the connected IoT gateway. By managing this connection, the gateway can perform security tasks, help manage devices and translate protocols.
One benefit of an IoT gateway is added security for the IoT network and data. Because the gateway protects information moving in both directions, it protects data moving to the cloud from leaks, as well as prevents unauthorized control of IoT devices from outside parties. IoT gateways can also be used to convert non-cloud connected legacy devices to the internet for brownfield development. By connecting a gateway to a device's sensors, the data can be analysed or transported directly by the gateway, even though the device itself would be unable to do so.
The key features of a gateway software stack include
1. Operating System – typically a general purpose operating system such as Linux.
2. Application Container or Runtime 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.
3. 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.
4. 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.
5. Remote Management – the ability to remotely provision, configure, startup/shutdown gateways as well as the applications running on the gateways.
Understanding IoT Platforms
The IoT Cloud Platform represents the software infrastructure and services required to enable an IoT solution. An IoT Cloud Platform typically operates on a cloud infrastructure (e.g. OpenShift, AWS, Microsoft Azure, and Cloud Foundry) or inside an enterprise data center 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 main purpose of IoT platforms is to reduce the complexities for IoT developers, service providers, and implementers. IoT platforms therefore enable the IoT developer to focus on the differentiated and unique value the application provides and outsource common, industry-wide features and functionality. This obviously reduces time to market, needed investment and expertise and risk.
The core features of an IoT Cloud Platform include :
1. 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.
2. 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.
3. Data Management and Storage – a scalable data store that supports the volume and variety of IoT data. Software stack for gateways Software stack for IoT Cloud Platforms 7 Copyright © 2016 The Eclipse Foundation. All Rights Reserved IoT Architectures
4. Event Management, Analytics & UI – scalable event processing capabilities, ability to consolidate and analyze data, and to create reports, graphs, and dashboards.
5. Application Enablement – ability to create reports, graphs, dashboards, … and to use API for application integration.
The Internet of Things is a paradigm where everyday objects can be equipped with identifying, sensing, networking and processing capabilities that will allow them to communicate with one another and with other devices and services over the Internet to accomplish some objective. Ultimately, IoT devices will be ubiquitous, context-aware and will enable ambient intelligence. Any IoT Solution requires substantial amount of technology in the form of software, hardware, and networking. The IoT space is evolving rapidly and we expect that the associated technologies will also evolve in sync.