## 5 State of the Art
### Middleware Platforms for IoT Systems  
Middleware platforms for IoT systems provide access to and control physical devices. They also support data collection, data analysis, or application composition services. These platforms, however, do not provide computing services, do not utilize network-level information, such as link quality and link lifetime, and are not designed for complex multilayer network environments.  
For example, Hydra [10] platform enables applications to access heterogeneous physical devices, supports multiple communication technologies, and uses web service technology to address heterogeneity-related problems. Global Sensor Networks [11] platform virtualize sensors to address device heterogeneity. Google Fit [12] provides a cloud storage service to store data from heterogeneous IoT devices and applications, and native support for Bluetooth low energy. Xively [13] is a cloud-based platform that provides data collection and storage services whereas Calvin [14] and Node-RED [15] support the composition and management of IoT applications. MQTT is a lightweight message transport protocol based on a publish-subscribe model [16]. It enables heterogeneous devices and applications to communicate with another and provides a reliable and secure message delivery service. An IOcloud proposed in [17] uses IoT nodes as active elements of infrastructure. IoT node is defined as any computing unit such as smartphone and Raspberry Pi that host IoT resources such as LED or temperature sensor. A high-level design of a message-service-oriented middleware for the fog of things paradigm is given in [18]. The proposedmiddleware enables devices to exchange IoT data through messages and supports the migration of services when a gateway or a fog node fails. The middleware is distributed among several fog of things entities such as fog servers and fog gateways, and it is based on a Microservices architecture. VIRTUS middleware based on the publish-subscribe communication model is proposed in [19]. It is designed for healthcare applications and aims to provide real-time and secure communication among heterogeneous devices. A data-centric middleware based on a publish-subscribe communication model is proposed in [20]. The middleware is designed for a dynamic mobile environment. It addresses frequent connection and disconnection-related issues and also supports various quality of service (QoS) levels. A location and activity-aware mobile distributed sensing platform is proposed in [21]. The platform enables users to collect sensor data on-demand based on user requirements and location. It uses sensing as a service model and a concept of a virtual sensor. Any device which produces data can be a virtual sensor. The platform consists of three components: Context-aware Mobile Sensor Data Engine, Activity-aware Module, and Location-aware Module. Context-aware Mobile Sensor Data Engine enables sensor data collection and processing without any coding efforts. It supports push and pull data streaming mechanisms as well as decentralized and centralized communication. The activity-aware module can recognize several activities such as biking, walking, and running. The location-aware module is able to recognize when a user enters or leaves a certain area. A systematic survey of several IoT platforms is presented in [22]. Most of these platforms support heterogeneous sensing and actuation devices and several standard communication paradigms and protocols. To address interoperability, either a gateway is used or devices are required to support standard or commonly used protocols such as HTTP or MQTT.