The impact of IoT can be felt across a wide range of industries and applications, including agriculture, health, manufacturing, electronics, transportation and energy. Considering the operational scale of connected devices, the velocity of change, the rapid innovations in the field, as well as the wide variety of standards and use cases that the IoT enables, organisations are increasingly looking at open source architectures and technologies to drive innovation and accelerate development in this field.
The seven high-level requirements for an open source based IoT ecosystem are:
- The use of open standards
- Taking advantage of community innovation and advances
- Wider integration with platforms and devices
- Accelerated time to market to deliver solutions
- Maintaining control of IoT technology selection and licensing
- Iterating more quickly with less risk
- Laying the foundation for future systems and for scaling
Organisations adopting proprietary IoT platforms are finding themselves tied to limited functionality, locked into working with a particular vendor, and are now thinking of other options. Many of them are looking to open source software as an alternative, recognising the value of the community as a hub for innovation and continuous development for IoT.
In the coming years, the IoT market will move towards adopting an open source and open standards ecosystem, which enables collaborative innovation, and promotes interoperability, flexibility and modularity.
Why should open source software be used for IoT?
IoT promotes the adoption of different open source technologies, standards and protocols that help devices to communicate with one another. The following drivers prompt organisations to adopt open source technologies for IoT.
- Cost: Adopting an open source technology IoT framework leads to minimal investments as it is free for use.
- Innovation: Software developed by the open source community builds newer applications, which leads to better innovation and agility. Developers will be able to build different products, which will be interoperable across different OSs such as Android, Windows, iOS and Linux.
- Open API: Usage of open source APIs for the IoT framework offers a common interface for different software, hardware and systems to communicate with one another.
- Libraries: An open source IoT framework offers a wide range of libraries, SDKs and open source hardware like Raspberry Pi and Arduino, ensuring that companies remain on the cutting-edge of technology by using different open source tools to customise IoT platforms.
- Security: Open source software can protect data by implementing really strong encryption for the use of the general public (SSH, SSL, PGP, etc), and hence supply the building blocks for mobile security and the protection of data.
- Interoperability: The adoption of open source solves the problem of interoperability.
The open source IoT ecosystem
There is a need for organisations to provide a validated, modular, flexible IoT solution built to be open, interoperable and cost-effective. The solution should deliver end-to-end open source IoT that addresses enterprise level needs.
The characteristics of open source IoT architecture are:
- Loosely coupled, modular and secure
- Platform independent
- Scalable, flexible and can be deployed anywhere
- Based on open standards
- Streaming analytics and machine learning
- Open and interoperable on the hybrid cloud
- Application agility and integration
- No vendor lock-in, no rigid architectures or proprietary formats and components
An IoT system has both human and digital users. Humans typically interact with the IoT system via devices like smartphones, personal computers, tablets or specialised gadgets. In all cases, the IoT system provides some type of application that connects the human user with the rest of the IoT system.
The IoT solution allows users to:
- Connect, provision, and manage millions of distributed IoT devices and gateways with added security
- Simplify data flow management with intelligence and analytics at the edge
- Provide a comprehensive, centralised advanced analytics and data management platform with the ability to build or refine machine-learning models and push these models to the edge
- Put security in the forefront (with pre-integrated security and manageability across devices), along with access, authentication and applications, as well as data that is in-motion and at-rest
- Use application development, deployment and integration services
Open source development platforms and frameworks
IoT platforms are the support software that connect everything in an IoT system. An IoT platform facilitates communication, data flow, device management and the functionality of applications. These platforms are classified into two categories — enterprise IoT platforms and consumer IoT platforms. Enterprise IoT platforms are used in oil and gas, manufacturing, or asset management. Consumer IoT platforms are for smart home applications or wearables.
The following are some of the top open source development platforms for IoT based applications.
Kaa: Kaa is a flexible, multi-purpose platform for developing end-to-end IoT solutions and connected applications. It provides better communication, control and interoperation capabilities in connected products and smart devices. It is primarily based on flexible microservices, and easily adapts to almost any need and application.
Sitewhere: This facilitates ingestion, storage, processing and integration of device data. It provides connectivity of devices using different protocols like MQTT, SMQP, STOMP, etc; devices can even be added through self-registration, REST services or in batches. The platform is based on the microservices architecture and is designed for reliability, high throughput, low latency and stability.
DeviceHive: This facilitates the connectivity of devices to the cloud within a short interval of time, i.e., just a few minutes to allow streaming of data and command traversal. The platform is distributed under the Apache 2.0 licence and is highly scalable via containerisation. It supports Docker and Kubernetes.
Zetta: This is an API based IoT platform built on Node.js. It is regarded as a complete toolkit to generate HTTP APIs for devices. Zetta combines REST APIs, WebSockets and reactive programming to build data-intensive and real-time applications.
Thingsboard.io: This is used for data collection, processing, visualisation and device management. It supports all standard IoT protocols like CoAP, MQTT and HTTP, as well as cloud and on-premise deployments.
Other open source IoT platforms are DSA, Thinger.io, Mainflux, Thingspeak, etc.
Open source middleware
Middleware acts as an agent between the service provider (IoT devices) and service consumer (enterprise applications). A software layer sits between applications and objects. It is a mediator interface to provide the interaction between the Internet and ‘things’. It hides heterogeneity among the devices, components and technology of an IoT system. Middleware provides solutions to frequently encountered problems, such as interoperability, security and dependability.
The following are some of the top open source middleware platforms for IoT based applications.
Kaa: Kaa is platform-centric middleware. It manages an unlimited number of connected devices with cross-device interoperability. It performs real-time device monitoring, remote device provisioning and configuration, as well as collection and analysis of sensor data. It is a microservices based portable, horizontally scalable, highly available IoT platform. It supports on-premise, public cloud and hybrid models of deployment.
IoTSyS: This is platform-centric and industry-specific middleware. It uses IPv6 for non-IP IoT devices and systems. It is used in smart city/smart grid projects, making automation infrastructure smart. IoTSys provides interoperable Web technologies for sensors and actuator networks.
DeviceHive: This is cloud agnostic, microservices based platform-centric middleware used for device connectivity and management. It has the ability to connect to any device via MQTT, REST or WebSockets. It supports Big Data solutions like ElasticSearch, Apache Spark, Cassandra and Kafka for real-time and batch processing.
Zetta: This is application-centric middleware. It is a service-oriented open source IoT platform built on Node.js combining REST API, WebSockets and reactive programming. It can run on cloud platforms like Heroku to create geo-distributed networks, and stream data into machine analytics platforms like Splunk.
OpenIoT: This is application-centric middleware for pulling information from sensors. It acts as Sensing-as-a-Service for deploying and providing services in a cloud environment.
Other open source middleware platforms are ThingsBoard, NATS, DSA, MainFlux, OpenIoT, Sitewhere, OpenRemote, EclipseIoT, etc.
Open source databases for analytics
The entire IoT implementation revolves around the idea of data collection/insertion through sensors and sending control back to devices. Selecting the right database in the various stages of IoT implementation for a given use case depends on multiple factors like enterprise adoption, business goals, as well as the development and operational perspectives.
The following are some of the top open source databases available for IoT based applications.
MongoDB: This is a powerful, flexible, document-oriented and scalable NoSQL database. It supports features like range queries, sorting, aggregations and geospatial indexes. It supports JSON to store and transmit information. Being a standard protocol, JSON is a great advantage for both the Web and the database. MongoDB supports a rich query language for read and write operations (CRUD) as well as data aggregation, text search and geospatial queries.
MySQL: This is an open source relational database management system that brings data consistency, scalability, high performance, availability and flexibility to IoT solutions by the efficient collection of data from IoT devices. It helps in data transformation through annotation and aggregation, helping users understand the data in a better way.
Redis: This in-memory open source database is a popular choice for IoT solutions. It is widely used in IoT solutions for data ingest real-time analytics, messaging, caching and many other use cases. Today, it helps in edge computing involving deep learning, image recognition and other innovative computing requirements.
Cassandra: This is a highly scalable and distributed open source database for managing voluminous amounts of structured data across many commodity servers. It provides availability, linear scale performance, simplicity and easy distribution of data across multiple database servers. It supports strong data consistency across a distributed architecture.
Hadoop: This is an open source software platform for distributed storage and the distributed processing of very large data sets on computer clusters built from commodity hardware. It helps in driving analytics from all IoT data. It easily ingests data from multiple data sources, and supports both batch as well as real-time data ingest from sensors using tools such as Apache Kafka and Apache Flume. It handles multiple IoT data types, structures and schemas, and supports real-time processing and applications on streaming data. Hadoop is a flexible, scalable and secure database.
Other open source IoT databases are CrateDB, GridDB, InfluxDB, BigChainDB, etc.
Open source IoT communication protocols
IoT protocols are a crucial part of the IoT technology stack. Without them, hardware would be rendered useless as the IoT protocols enable exchange of data in a structured and meaningful way. IoT primarily exploits standard protocols and networking technologies.
The top five open source IoT communication protocols in use are described briefly below.
CoAP (Constrained Application Protocol): CoAP is an Internet application protocol for constrained devices. It has been designed for IoT systems based on HTTP protocols. CoAP makes use of the UDP protocol RESTful architecture. It is used within mobiles and social network based applications.
MQTT: This messaging protocol is used for remote monitoring in IoT. Its primary task is to acquire data from many devices, and transport it to the IT infrastructure. MQTT connects devices and networks with applications and middleware using hub-and-spoke architecture. The MQTT protocol provides efficient information routing functions to small, cheap, low-memory and power consuming devices in vulnerable and low bandwidth based networks.
XMPP: This is a communications IoT protocol for message-oriented middleware based on the XML language. It enables real-time exchange of structured yet extensible data between any two or more network entities. XMPP enables messaging applications to attain authentication, access control, hop-by-hop and end-to-end encryption.
AMQP: This is an application layer protocol that supports reliable communication via message delivery assurance primitives like ‘at-most once’, ‘at least once’ and ‘exactly once’. The AMQP protocol consists of a set of components that route and store messages within a broker service. This protocol enables client applications to talk to the broker and interact with the AMQP model.
Data Distribution Service (DDS): This is used for real-time machine-to-machine communication. It enables scalable, real-time, dependable, high-performance and interoperable data exchange via the publish-subscribe methodology. DDS can be deployed in platforms ranging from low-footprint devices to the cloud, and supports efficient bandwidth usage as well as the agile orchestration of system components.
Other open source IoT communication protocols are VSCP, STOMP, etc.
Open source infrastructure
The following are some of the key open source cloud platforms.
OpenStack: This is open source software for creating private and public clouds, built and disseminated by a large and democratic community of developers, in collaboration with users. OpenStack is mostly deployed as Infrastructure-as-a-Service (IaaS), whereby virtual servers and other resources are made available to customers.
Cloud Foundry: This is an open Platform-as-a-Service (PaaS), which provides a choice of clouds, developer frameworks and application services. Cloud Foundry makes it faster and easier to build, test, deploy and scale applications.
OpenShift: This is Red Hat’s cloud computing PaaS offering. It is an application platform in the cloud, where app developers and teams can build, test, deploy and run their applications.
Cloudify: Cloudify was developed and designed on the principles of openness to power the IT transformation revolution. It enables organisations to design, build and deliver various business applications and network services.
Other open source cloud platforms are WSO2, Cloud Stack, etc.
Open source hardware
Open source hardware consists of physical artefacts of technology designed and offered by the open design movement.
Arduino: This operates through an array of hardware specifications that can be given to interactive electronics. The software comes in the form of the Arduino programming language and the Arduino Integrated Development Environment (IDE).
Raspberry Pi: This is a very low cost computer that runs Linux, but it also provides a set of GPIO (general purpose input/output) pins that allow you to control electronic components for physical computing and explore the Internet of Things (IoT).
mangOH: This industrial grade open source hardware is designed to address common IoT pain points and deliver out-of-the-box IoT prototypes of applications, to bring IoT products to market sooner.
Open source operating systems
The following are the open source operating systems.
Android Things (formerly known as Brillo): This is an operating system from Google built on the power of Android for embedded devices. It has access to all the Android APIs, Google services and developer tools.
RIOT (Real-time IoT): This is a real-time operating system, which is based on micro-kernel architecture for IoT. RIOT is developed by a consortium of universities in Germany and France.
Zephyr: This is another real-time operating system (RTOS) similar to RIOT, launched by the Linux Foundation and available under the Apache licence. It is small, scalable and optimised for resource constrained devices.
Ubuntu Core: This is based on a Linux OS developed for IoT devices. It is delivered as Linux application packages called Snaps.
Open source is well-established in the IoT space. There are many opportunities for enterprises to use open source IoT to make business services more efficient and customer-centric. Open source IoT can help enterprises achieve their most important goals, which are:
- Better customer experience, a unified product and service experience
- Huge cost savings
- Improving customer requests and service delivery
- Improving innovation
- The capability to deliver and manage highly secure, reliable, and scalable IoT solutions
- Gain efficiency and stimulate innovation
The authors would like to thank Kiran M.R. and Raju Alluri of the Enterprise Architecture Group of Wipro Technologies for giving the required time and support when bringing out this article as part of the Architecture Practice effort.