The IoT hardware requires operating systems and communication protocols to interact with a user and other devices. Some components facilitate communication and exchange of information between devices. In IoT architectures, integration layers play an important role in combining and integrating information acquired from thousands of devices and presenting this information to users. In this section, we review the general software structure inside of an IoT system. In the design of an IoT software platform, scalability, the extensibility and interoperability between heterogeneous devices and their business models should be considered. Also, IoT enabling technologies (hardware) may move geographically hence need to communicate with others in a real-time mode. This kind of operation necessitates decentralised and event-driven software architecture. Service-oriented-architecture (SoA) ensures the scalability and interoperability of heterogeneous technologies in one platform. In a generic SoA four layers are defined:
In a SoA for an IoT middleware, the software between objects (things which are equipped with sensors) and applications should provide object abstraction, service management and service composition through a secure network.
Each IoT software main task is device identification in the network. For object identification, different addressing methods are used based on internet protocols (IPs) such as IPv4, IPv6, and 6LoWPAN. For the identification, it should be notified that an object’s identification and address are different. While an object can be identified locally, for example inside a 6LoWPAN network, the object within the global network uses public IPs as the address. Identification methods aim to make a clear identity for an object inside the network. Communication link technologies should provide the infrastructure for the connection of smart devices (sensor nodes). The IoT sensor nodes should work normally under severe designs specifications including low-power consumption, and operation in the noisy environment. Currently, there are different communication protocols which can be used for IoT applications, which have been covered in chapter “5. Introduction to the IoT Communication and Networking”.