Taxonomy on IoT Technologies for Designing Smart Systems

— The Internet of things(IoT) is now considered among the most emerging technologies aiming to interconnect heterogeneous smart devices in several areas without human interaction. From sensing and identification to data processing and storing. The Building and the monitoring of smart systems like smart homes, smart campus and smart cities pass through several stages on which different tools and platforms coexist to answer this need. In this paper, we present a survey on recent works using IoT tools to build their systems. Particularly, we classify and compare them according to layers and characteristics that we have defined such as data acquisition, data processing , software used, conformity to standards. Hence , our study aims to provide a clear vision on available functionalities during the process of building IoT systems based on most used IoT tools and to help users to choose the most adapted tool depending on their needs.


Introduction
The Internet of Things (IoT) is above all a concept that allows the Internet network to be extended to everyday objects.
This technology allows data transfer between different connected objects without human intervention. The devices can then interact with each other in a completely autonomous way.
The IoT sector is growing and the number of connected objects is becoming increasingly important. From the watch to the shower head, everyday objects are increasingly derived from connected objects for a better adaptation to their user. This is a technological breakthrough leading to major changes in our lifestyle. The bridge between the different machines is then done without human interaction to adapt to the needs and the environment.
The development of these functionalities is possible thanks to the optimization of new electronic technologies such as RFID, WSN and associated sensors. These various sensors allow the retrieval and storage of user data [1].
Many solutions including hardware, software and protocols are proposed everyday to enlarge IoT market offer. The choice of the right tools has become a challenging task due the variety of solutions categories. Besides , other constraints can be faced during the implementation of these smart systems such interoperability of the connected devices, availability and security concerns [2].
The paper is organized as follows : section 2 presents an overview of the IoT system followed by the main protocols and issues in smarts systems. Section 3 presents the goal of the study where we focus on the process of the building an IoT system, more precisely, we presents most used prototyping tools, middleware's and platforms. Section 4 presents real academic implementations of smart systems. Finally, we conclude the paper with a conclusion and future works.

Background on IoT technologies and major issues
In this part, we will present, the concept of internet of things, most used protocols and some major issues.

Basics
The Internet of Things(IoT) is a scenario in which objects, animals and people being assigned unique identifiers, as well as the ability to transfer data over a network without requiring any human-To-human or human-to-machine interaction.
In general, the main components of IoT system can be presented in 3 parts : a) Hardware: The hardware part stands for all the equipments required to: • Collect data and interact physically with environment, such as sensors, tags, cameras... • Read data gathered from sensors and execute a primary data processing, such as readers , microcontrollers... • Filter, synchronize, aggregate and store data, such as terminals and servers. b) Software: The software part is responsible of processing data gathered from the hardware part. It can be a middleware , platform and operating system... c) Protocols: Protocols represent the communication part between the whole IoT system components. Authors in [3] gave a detailed information about protocols and standards. We have summarized the most used ones in table 1 :

Issues
Despite of its several benefits. There are many challenges that are a subject of research. Among the major issues that IoT includes, we find availability , interoperability and security: a) Availability: Many fields using ICT technologies rely strongly on the availability of all components on the system. For example, verification of identity using RFID communication , if the RFID reader is down the employee ill blocked ,another serious example is the payment using NFC technology, if your smartphone is out of energy you will not be able to pass the transaction. There is some solutions trying to deal with the issue as the Blockchain infrastructure proposed in [4].
Interoperability: Due to the emerging of millions of devices connected in the whole network, and also the problematic of coexistence of different standards, many devices cannot be recognized from a system to other. Therefore, the communication between sensors and the backend will be impossible. Many Projects as ReAA and OMO.IN.STA.NT try to responds to this need, but a real standing solution does not exist as argued in [5]. b) Security: Security represents a serious concern in IoT infrastructure. The main problem is to guarantee the safety of IoT components and people privacy during all process of data exchange. In other words, Sensors , data processing unit and servers should be kept confidential, unchangeable and available (CIA). Depending on each layer(physical layer, communication layer or backend layer) of the system threats and countermeasures are proposed in [6].

Motivation and design goal
As described in section 1. A typical IoT system is composed of the hardware part , software and communication part. In this work, we aim to give some details about the platforms while designing an IoT system. This work will help us to decide what is the appropriate software to use for our context.
We believe that the data flow of information in a typical IoT system pass per several steps as shown in figure 1.

IoT tools
For designing an IoT system, several software can be found in the market and the research field, we try in this section to present most known software and tools. We can classify them in 3 categories : Prototyping tools. When you are creating an IoT application, a prototyping tool is the solution for generating the first small physical model of the system. In fact, this step is primordial to test the atom functionalities of your application, measure and realize performance test and also analyze the feasibility and connection between the system components.
The prototyping tools are generally composed of the hardware part containing the process unit interacting with data source devices as sensors and software part dedicated for developers to read data and develop application which will be deployed inside the prototype's main processing unit. Table 2 shows an example of some IoT prototyping tools.
Middleware. The middleware is considered as the interface between the business application and the hardware layer, in case of the internet of things, the middleware will act as the orchestra between backend servers and the data collection layer, In fact, the middleware will give the orders of reading data from the sensors, act on the physical environment if there is any actuators, filter and process the collected data and then send it to the backend part for further treatment.
The problematic here is the emergence of various types of middleware everyday with different programming abstraction level and architecture of accessing to connected IoT devices [10]. Table 3 shows brief overview of some known middleware.
Platforms. A platform is seen as the global level of implementing an IoT application, regrouping all the developer's necessary tools from designing , developing , deploying, storing and data analyzing.
Data management infrastructure remain among the most criteria searched by companies while choosing the appropriate platform [2]. Table 4 shows an example of IOT full platforms.

Literature implementations
In this section, we present an overview concerning recent implementations of smart systems , more importantly, we take into consideration the full process of designing an IoT system.
For each work, we consider some parameters to take into account during the process of building the authors applications, the following criteria are taken into consideration : • Data acquisition : specifies the source of data, it can be sensors in case of a wireless sensor network, tags in case of RFID communication or other technologies. • Communication / protocols : As indicated before, many protocols are supported during the process of exchanging data between the data acquisition layer(Processing unit) and the backend layer. • Processing unit : In case of using a prototyping tool, this field specifies the hardware used for local processing data. • Software : As argued in section A), we determine if any indicated platform or middleware are used to design and run the developed application. • Compliance to IoT standard : Compliance to standards is among the important issues in IoT application, for this reason, we verify in each work, if this point has been taken into account by the author.  Table 5 presents some recent works that regards IoT smarts systems, The goal of this study is to provide researchers with most used IoT tools while designing their smart systems.
As sketched in the previous sections, the first step in a smart system is data acquisition which can result from a single sensing component as pi-camera used in [16] to detect the empty parking spaces or a combination of several data acquisition components to identify, locate and sense such as tags, beacons and sensors respectively. The use of specific protocols and communication technology is justified for each system architecture , context of use and component which will sends gathered data to the processing unit. All this protocols aim to one primordial gain which is reducing power consumption.
For instance, author in [21] used beacons to detect buzz in the campus area. Here, the proximity is calculated based on the BLE communication technology which gives a high accuracy of proximity estimation with reasonable range field and low power usage compared to NFC and GPS. This last is managed and exploited by the software and more precisely the middleware dedicated to combine, process, filter and dispatch data for other treatment in the local or in the cloud network. Collecting data from one category of data acquisition components can be handled with the dedicated software of the processing unit , for example, author in [18] used arduino for interacting between sensors, actuators and the back-end layer.
The problematic occurs when the data comes from different sources of components as designed in the paper [20], in which author collect data from tags, camera, fingerprint sensor and smart-card. Each technology listed in this work use its own SDK and interface to interact between between the data acquisition layer and the backend-layer which justify the design of specific middlware that can synchronise between the several tehcnologies.
According to our vision, the designed system in [20] can be presented as in the figure 2.

Conclusion
In this work, we have presented a survey of IoT tools aiming to design a smart system, In particular, we explain basics of implementing an IoT system. More importantly we clarify the ambiguity concerning tools used for this need. In addition we com-pare some examples of most used tools to facilitate the task of choosing tools to the appropriate context. Moreover, we have completed our work by studying some real academic implementations , based on some criteria that we have defined to provide researchers by models and prototyping methods used to design and implement and a smart system.
As a future work, we aim to use IoT tools based on this study to design and implement our system concerning a smart application dedicated for student managements.