The Top Open Source IoT Platforms for Developers

0
24136

This article takes a quick look at nine top IoT platforms for developing IoT projects, and discusses their features and properties.

The term ‘the Internet of Things’ was first used by Kevin Ashton in 1999 in the context of supply chain management with radio frequency identification (RFID)-tagged or barcoded items (things) that offered greater efficiency and accountability to businesses.

In an interview, Kevin Ashton told the RFID Journal, “If we had computers that knew everything there was to know about things —using data they gathered without any help from us—we would be able to track and count everything and greatly reduce waste, loss and cost. We would know when things needed replacing, repairing or recalling and whether they were fresh or past their best.”

The Internet of Things is at the centre of overlapping Internet-oriented (middleware), things-oriented (sensors) and semantic-oriented (knowledge) visions. The Internet-oriented vision emphasises the networking paradigm and exploits the established IP-based networking infrastructure, in order to attain efficient connections between devices. It also focuses on developing lightweight protocols to meet IoT specifications. Being things-oriented focuses on physical objects, and on finding the means to identify and integrate them with the virtual world. The semantic-oriented vision aims to utilise semantic technologies, making sense of objects and their data to represent, store, interconnect and manage enormous amounts of information provided by the increasing number of IoT objects.

The IoT can be defined as,“A world of interconnected things that are capable of sensing, actuating and communicating among themselves and with the environment (i.e., smart things or smart objects), while providing the ability to share information and act in parts autonomously to real/physical world events and by triggering processes and creating services with or without direct human intervention.”

The IoT envisions a self-configuring, adaptive, complex network that interconnects ‘things’ to the Internet by using standard communication protocols. The interconnected things have physical or virtual representation in the digital world, sensing/actuation capabilities, a programmability feature and a unique identity. Gartner predicts that by 2020, 95 per cent of all new products will use IoT technology.

IoT platforms: An introduction

IoT platforms are regarded as the most critical component of the IoT ecosystem. Any IoT device has to connect to other IoT devices and applications (mostly cloud-based) to transfer information using standard Internet protocols. The gap between the device sensors and data networks is filled by IoT platforms. IoT platforms connect the data to the sensor arrangement, and provide insights using back-end applications to make sense of the plethora of data generated by the countless sensors.

A complete IoT system requires the following:

  • Hardware such as sensors or devices. The task of sensors is to acquire data from the environment and perform actions accordingly.
  • Connectivity in order to transmit the data to the cloud and a way to receive commands from the cloud. For some IoT systems, this bridge between the hardware and the cloud could be a router or a gateway in the network.
  • Software that is installed on the cloud, the main task of which is to analyse the data collected from sensors and perform the task of decision making.
  • A user interface, to facilitate user interaction. This can be a Web interface, where collected data is represented as numbers or graphs, or it could be a mobile app installed on a smartphone to interpret data and issue alerts to the end users, depending on sensor environments.

In a nutshell, IoT platforms support software that facilitates connectivity between IoT systems. These platforms facilitate communication, data flow, device management and app functionality.

Types of IoT platforms

There are, essentially, four types of IoT platforms.

  • End-to-end IoT platforms facilitate the handling of millions of simultaneous device connections by providing hardware, software, connectivity, security and device management tools. In addition, these platforms provide OTA (over the air) firmware updates, cloud connectivity and device management to facilitate device monitoring.
  • Connectivity platforms provide cheap and low power connectivity solutions via Wi-Fi and cellular technology.
  • Cloud platforms reduce the complexity of building complex network stacks and provide back-end facilities for device monitoring.
  • Data platforms based on IoT platforms provide numerous tools for data routing, and facilitate management and visualisation of data using data analytics tools.

Evaluation of IoT platforms

In order to select the best IoT based platform, the following factors need to be considered.

  • Scalability: The IoT platform should be scalable enough to accommodate growing needs without any hiccup. The platform should support dynamic growth, 24×7 uptime and efficient backup to prevent all sorts of errors.
  • Reliability: The IoT platform should handle all sorts of failover and have disaster recovery options to keep the overall system up and running without any issues. It is very important for every end user to pay sufficient attention to the reliability of the platform, which involves a combination of parameters linked to the architecture and operations.
  • Customisation: IoT platforms should support lots of customisations and be well integrated with cloud services. They should consist of APIs, and have extensive libraries as well as strong integration with other platforms to enhance the core functionality of the system with the programmer’s customised code.
  • Operations: The IoT platform’s operations should not be hidden; rather the end user should be greeted with a centralised interface which gives all the details with regard to system statistics, hardware information and the modules or services.
  • Protocols: The most important and foremost protocol to facilitate IoT is MQTT. The IoT platform should support the MQTT protocol to provide all sorts of communication from sensors to the cloud. Almost all cloud service providers use MQTT. These include Microsoft Azure, Amazon AWS, Google Cloud, etc. The IoT platform should support the API over WebSockets, REST and CoAP.
  • Hardware support: To choose an effective IoT platform, it is very important that the hardware facilitates low-end devices by using MQTT or CoAP protocols and, overall, the systems should be flexible and powerful enough to run programs written in any language.
  • Cloud technology: The IoT platform should be flexible enough to support all operations without any hiccups, whether in the cloud, on premise or hybrid.
  • Technical support: IoT platforms should have strong back-end technical support, and service providers should ensure regular updation of the platform with all the basic upgrades, security patches and bug fixes. Strong support develops confidence among end users.
  • Systems architecture: An IoT platform should deploy production-grade, well-supported frameworks, tools and languages, making the platform easy to operate and flexible enough to support all sorts of custom implementations.
  • Security: This is another significant parameter for an IoT platform. The service provider should offer SSL/TLS based communication with devices and applications, along with authentication for devices and users. It is very important to facilitate encrypted communication and the platform should have authorisation capabilities. It should be secure enough to defend the end user data from all sorts of backdoors, DDoS attacks, website vulnerabilities, malware and even rootkits.
  • Operational expenses: When evaluating an IoT platform, the end user must consider parameters like pay per node, pay per active device, pay per message, the price of premium features, the price of support, etc.

Let’s now look at nine IoT platforms that fulfil all the above requirements and are the best in the business.

Kaa

Kaa is a production-ready, flexible, multi-purpose middleware platform for developing end-to-end IoT solutions, connected applications and smart products. It provides a holistic approach for implementing rich 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. It scales from tiny startups to a massive enterprise, and supports advanced deployment models for multi-cloud IoT solutions. Kaa enables effective data management for connected objects and strong back-end infrastructure by providing server and endpoint SDK components. The Kaa platform reduces the associated costs and risks of developing IoT products, while speeding up the time-to-market.

Figure 1: The Kaa IoT platform

The Kaa IoT platform consists of three main components.

Kaa Server: This is the back-end of the platform and is used to manage tenants, applications, users and devices. It provides all sorts of integration interfaces and administration support.

Kaa extensions: This comprises software modules to improve the overall functionality of the platform.

Endpoint SDK: This is regarded as the library that provides client-side APIs for various Kaa platform features and handles all sorts of communication, data marshalling, persistence, etc. It is designed for all sorts of customised client applications to run a wide range of connected devices.

Features

  • It is a sophisticated mechanism for the delivery of configurable event messages across connected devices. Events can be unicast or multi-cast.
  • Facilitates cross-device interoperability.
  • Performs real-time device monitoring, remote device provisioning and configuration.
  • Consists of topic-based notification systems to allow end users to deliver messages of any predefined structure to subscribed endpoints.
  • Provides updates of operational data like configuration data from server to endpoints.
  • Offers a wide range of options when it comes to selecting the network stack for establishing communication between the server and endpoints — Wi-Fi, Ethernet, ZigBee, MQTT, CoAP, XMPP, TCP, HTTP, etc.

Official website: https://www.kaaproject.org/

SiteWhere

SiteWhere is an open source IoT application enablement platform that facilitates ingestion, storage, processing and integration of device data at a massive scale. It provides a complete management system to enable end users to cut all per-device charges imposed by SaaS operators. It facilitates connectivity of devices using different protocols like MQTT, SMQP, STOMP, etc, and devices can even be added through self-registration, REST services or in batches. The platform is based on the modern microservices architecture and is designed for reliability, high throughput, low latency and stability.

The platform is licensed under CPAL 1.0 and can be implemented as an on-premise solution with complete freedom and scalability. The platform syncs well with third party integration frameworks like Mule AnyPoint to allow even data to trigger complex interactions, like adding data to Salesforce. It protects information by allowing only limited access to data, using the best user management systems.

SiteWhere components include the following:

Core platform: Apache Tomcat 7 (Server Core), a Spring framework (a core configuration framework that performs bootstrapping), Spring Security (the security infrastructure), and Hazelcast (for high performance data processing)

Data storage technologies: MongoDB, Apache HBase and InfluxDB

Integration technologies: Mule AnyPoint platform, Apache Spark

Asset management systems: WSO2 identity server

Figure 2: SiteWhere components

Features

  • Supports the unlimited running of IoT applications on a single instance.
  • Devices can be added using self-registration, REST services or batches.
  • Controls unlimited devices using batch command operations.
  • Integrates with Azure EventHub for massive cloud processing, connects to Twilio for cloud communication, and supports platforms like Arduino and Android.

Official website: http://www.sitewhere.org/

DeviceHive

DeviceHive is an open source IoT data platform that 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 Compose and Kubernetes deployment through which public, private or even hybrid clouds can be deployed from a single machine to extensive enterprise clusters. DeviceHive facilitates connectivity to any device or development board via the REST API, WebSockets or MQTT.

Figure 3: DeviceHive IoT platform

Features

  • Highly customised behaviour using JavaScript.
  • Supports Big Data solutions like Spark, Cassandra, Kafka and ElasticSearch.
  • Allows batch analytics and machine learning on top of device data.
  • Connects any device using the REST API, MQTT or WebSockets.
  • Direct integration with Alexa.

Official website: https://devicehive.com/

Figure 7: MainFlux

Zetta

Zetta is an open source, 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.

Figure 4: Zetta IoT platform

Architecture

The Zetta IoT platform’s architecture comprises the following components.

  • Zetta Server: This is the top level of the abstraction component of Zetta. It contains drivers, scouts, apps and server extensions. It runs on hardware like Raspberry Pi, Arduino, BeagleBone, etc.
  • Scouts: These provide a discovery mechanism for all devices on the network or those that require system resources to speak to a specific protocol. They are also used to identify information for devices, such as a MAC address.
  • Drivers: These are responsible for modelling devices and interacting with them at a physical level.
  • Server extensions: These deal with API management, defining additional APIs and adding security to them.
  • Registry: This is a small database in the context of the server, which stores all the information with regard to devices.

Features

  • Can run on the cloud, on a PC or even small development boards.
  • Turns any device into an API.
  • Easy interface and simple programming to control sensors, actuators and controllers.
  • Optimised for data-intensive and real-time applications.
  • Allows developers to assemble smartphone apps, device apps and cloud apps together into large, complex adaptive ‘systems of systems’ to operate in the world of automation.

Official website: http://www.zettajs.org/

DSA (Distributed Services Architecture)

Distributed Services Architecture (DSA) is another open source IoT platform for performing inter-device communication, logic and applications at every layer of the IoT infrastructure. It allows interaction between devices in a decentralised manner, and enables a network engineer to distribute functionality between discrete computing resources. The DSA community is developing a library called ‘distributed service links’, which allows protocol translation and data integration to and from third party resources. All the modules are lightweight, facilitating DSBroker, multiple DSLinks and client Web applications on the same low-powered devices like Pi, BeagleBone and other computing platforms.

DSA comprises three main components.

  • NodeAPI: Also called the IoT blueprint, it is regarded as a common open communication method for all DSA modules.
  • DSLink: Facilitates data exchange with other connected nodes by abstracting field-bus and third party proposed protocols.
  • DsBroker: Broadcasts the presence and data structures of connected DSLinks to other subscribing DSLinks and DSBrokers.

Features

  • Machine to machine authorisation life cycle.
  • Allows users to manage subscriptions for listeners and QoS buffers for publishers.
  • Implements DSA Query DSL.
  • Manages node attributes, node permissions and connections from DSLinks.
  • Full hardware integration support, and support for all protocols for IoT connectivity.

Official website: http://www.iot-dsa.org/

Thingsboard.io

Thingsboard.io is another 100 per cent open source IoT platform 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. It builds workflows based on device life cycle events, REST API events, RPC requests, etc.

Figure 5: Thingsboard.io

Features

  • A strong platform combining scalability, performance and fault-tolerance.
  • Easy management of all connected devices in a highly secure manner using rich server side APIs.
  • Transforms and normalises device data, and facilitates alarms for triggering alerts on all telemetry events, updates and inactivity.
  • Enables use-case specific features using customisable rule chains.
  • Handles millions of devices at the same time.
  • No single point of failure, as every node in the cluster is identical.
  • Multi-tenant installations out-of-the-box.
  • Thirty highly customised dashboard widgets for easy user access.

Official website: https://thingsboard.io

Thinger.io

Thinger.io is open source and completely hardware agnostic. It provides a ready-to-go platform to design scalable cloud infrastructure that can be fully controlled via an easy GUI (admin) panel and can also be integrated into the business logic with the REST API.

It provides API discovery right out-of-the-box for easy coding and Web interactions. It eliminates the need to select compatible vendor hardware as it provides bloated software to perform all tasks.

Figure 6: Thinger.io

Features

  • Strong platform for sensing and actuating devices in real-time.
  • Countless optimisations under the hood to minimise data bandwidth, processing power and code size; offers server scalability and is fully written in C++ using multi-threaded ASIO for the server side.
  • Supports prominent protocols like CoAP and MQTT.
  • Highly scalable, secure for hosting data with easy-to-use admin console.
  • Easy coding and totally supports modern hardware like Arduino, ESP8266, Raspberry Pi, Intel Edison, etc.
  • Docker and IFTT integration.

Official website: https://thinger.io/

MainFlux

MainFlux is an open source, modern, scalable, secure and patent-free IoT platform based on the cloud. It is completely designed using the Go programming language. It provides a strong platform for the development of IoT solutions, applications and products. MainFlux has powerful capabilities to manage large scale deployments and voluminous transactions. The back-end cloud platform configuration and APIs provide easy device connectivity without any sort of adjustments to enable end users to save time, and provides visualisations and analytical tools on dashboards for quick analysis. Unlike other IoT platforms, this platform supports all protocols—MQTT, WebSockets, CoAP and REST API.

Features

  • Supports SDK libraries to help end users to code in C/C++, JavaScript, Go and Python.
  • Easy deployment and highly scalable platform using Docker.
  • Fine-tuned security using MainFlux authentication and the authorisation server with an access control scheme based on API keys and scoped JWT.
  • LoRa integration.
  • Supports a lot of hardware and intelligent devices using open source hardware platforms —WeIO is integrated with MainFlux.

Official website: https://www.mainflux.com/

Figure 8: ThingSpeak

ThingSpeak

ThingSpeak is regarded as the topmost open source platform for IoT. It’s an IoT application and uses an API to store and retrieve data from things using the HTTP protocol. It facilitates the creation of sensor logging applications, location tracking applications and a social network of things with status updates.

It allows end users to aggregate, visualise and analyse live data streams in the cloud. ThingSpeak has integrated support from numerical computing software like MATLAB, allowing users to analyse, visualise and upload data using MATLAB without having to purchase the software. The platform collects and stores sensor data in the cloud and develops IoT applications. It fully supports a range of development boards like Arduino, ESP8266, BeagleBone and Pi.

The core element of ThingSpeak is a ‘ThingSpeak Channel’. This stores the data that we send to ThingSpeak and comprises the following:

  • Eight fields for storing data of any type — these can be used to store the data from a sensor or from an embedded device.
  • Three location fields to store the latitude, longitude and the elevation. These are very useful for tracking a moving device.
  • One status field, which is a short message to describe the data stored in the channel.

To use ThingSpeak, one needs to sign up and create a channel. Once that is done, send the data, and allow ThingSpeak to process and retrieve it.

Features

  • Easy device configuration to transmit data to the ThingSpeak platform using standard IoT platforms.
  • Real-time visualisation of sensor data and data aggregation using third party sources.
  • IoT analytics runs based on schedules or events.
  • MATLAB analytics, RESTful and MQTT APIs.
  • Enables the prototyping and building of IoT systems without any server setup and Web software installation.
  • Automatically acts on data and communication via third party services like Twilio or Twitter.

Official website: https://thingspeak.com/

LEAVE A REPLY

Please enter your comment!
Please enter your name here