The interoperability of different devices needs well-defined standards. But standardization is difficult because of the varied requirements of different applications and devices. For heterogeneous applications, the solution is to have a middleware platform, It will hide the details of the smart things. It acts as a software bridge between things and applications. It needs to provide the required services to the application developers so that they can focus more on the requirements of applications rather than on interacting with the baseline hardware. So we can say that the middleware supports the hardware and provides an Application Programming Interface (API) for communication and data management. computation, security, and privacy.

What is Middleware?

Middleware is a device that hides information between things and applications and acts as a bridge.

middleware in iot

The challenges, by any IoT middleware, are as follows:

  1. Interoperability and Programming Abstractions: For transferring and communicating between devices, middleware is very helpful. Interoperability is of three types: network, semantic, and syntactic. Network interoperability deals with heterogeneous interface protocols for communication between devices. Syntactic interoperability ensures that applications are oblivious to different formats, structures, and encoding of data. Semantic interoperability deals with abstracting the meaning of data within a particular domain. It is loosely inspired by the semantic web. 
  2. Device Discovery and Management: This feature support the devices to be aware of all other devices in the neighborhood and the services provided by them. In the Internet of Things, the infrastructure is mostly dynamic. The devices have to announce their presence and the services they provide. The solutions in this domain are inspired by semantic web technologies. The middleware provides APIS with a list of the IoT devices, their services, and their capabilities. IoT middleware needs to perform load balancing, manage devices based on their levels of battery power, and report problems in devices to the users. 
  3. Scalability: In IoT, a large number of devices are communicated. IoT applications need to scale due to ever-increasing requirements. This should be managed by the middleware by making required changes when the infrastructure scales. 
  4. Big Data and Analytics: IoT sensors collect a huge amount of data. A lot of big data algorithms are used to analyze IoT data. It is necessary to take this into account and conclude data by using sophisticated machine learning algorithms. 
  5. Security and Privacy: IoT applications as related to personal life or industry. So security is very essential in this environment. The middleware has such a mechanism, along with user authentication, and the implementation of access control.
  6. Cloud Services: The cloud is an essential part of a IoT deployment. Most of the sensor data are analyzed and stored in a centralized cloud. It is necessary for 101 middleware to run on different types of clouds and to enable users to advantage of the cloud to get a better vision from the data collected by the sensors.

There are many middleware solutions available for the Internet of Things:

  1. Event-Based: All the components interact with each other through events. Each event has a type and some parameters. Events are generated by producers and received by consumers. This can be viewed as a publish/subscribe architecture, where entities can subscribe for some event types and get notified of those events. 
  2. Service-Oriented: Service-oriented middlewares are based on Service-Oriented Architectures (SOA), in which we have independent modules that provide services through accessible interfaces. A service-oriented middleware views resources as service providers. It briefs the underlying resources through a set of services that are used by applications.

Popular IoT Middleware 


FiWare is a very popular IoT middleware framework that is developed by the EU. The aim of designing Fiware is to keep smart cities, logistics, and shop floor analytics in mind. FiWare contains a large body of code, reusable modules, and APIS that have been contributed by thousands of FiWare developers. Any application developer can take a subset of these components and build his/her IoT application. FiWare indicates the information collected by sensors as context information. It defines generic REST APIS to capture the context from different scenarios. All the context information is sent to a dedicated service called a context broker. FiWare provides APIS to store the context and also query it. The target applications are provided by APIS to analyze, query, and mine the information that is collected from the context broker.


OpenIoT is another popular open-source initiative. It has 7 different components. At the lowest level, we have a physical plane. It collects data from IoT devices and also does some preprocessing of data. It has different APIS to interface with different types of physical nodes and get information from them. The next plane is the virtualized plane, which has 3 components. We first have the scheduler, which manages the streams of data generated by devices. It primarily assigns them to resources and takes care of their QoS requirements. The data storage component manages the storage and archival of data streams. Finally, the service delivery component processes the streams. It has several roles. It combines data streams, preprocesses them, and tracks some statistics associated with these streams such as the number of unique requests or the size of each request.

The uppermost layer is the application layer, which also has 3 components: request definition request presentation, and configuration. The request definition component helps us create requests to be sent to the IoT sensors and storage layers. It can be used to fetch and query data. The request presentation component creates mashups of data by issuing different queries to the storage layer, and finally, the configuration component helps us configure the IoT devices