# An Integrated Platform for the Internet of Things Based on an Open Source Ecosystem
## 2 Open Source Ecosystem for the IoT  
At present, the overall architecture of IoT technology consists of three layers: the device layer, network layer, and the service support and application layer.  
For the device layer, it is necessary to solve the problem of how and when the device is accessed by the IoT. These problems are as follows:  
1. Device access and state management: Access management refers to which protocols the device layer supports for devices to access the network. State management means how to manage the life cycle of the device, i.e., device access, data-read and device control, status maintenance, and device failure management, which provides status information for the upper application.
2. Device identification: Many devices need to be distinguished by identifiers. Does the device ID need to include location information? How can the relative positional relationship between devices be reflected? For example, a hierarchical resource structure corresponding to a geographical location can be applied for managing device resources in an IoT application environment. However, this implementation requires manually associating relative relationships between resources. If the identifier can automatically include the relative geographical position relationship, it can automate the hierarchical management of resources. When a device accesses the network, can the device identifier be generated automatically? How can we locate smart things based on their device IDs?
3. Data description: Different devices have different data description methods, which are text-based or semantic-based. Therefore, the device layer needs to flexibly support and process commonly used data description methods, and be able to perform functions such as data format conversion and semantic reasoning for the different data descriptions.  
The network layer is responsible for the network communication and connection management between devices and the remote server. The data transmission protocol and the networking mode can be determined from the application. For example, in an IoT environment, there are many sensing nodes with limited resources, which intermittently transmit few data. This kinds of new requirements are imposed on the network transmission mechanism in a large-scale network environment.  
The service support layer provides developers with service development platforms and basic platform functions. These basic functions may include:  
1. Service discovery: It should be easy for developers to discover the service capabilities of the device.
2. Resource management: This function monitors the status of resources. When the resource fails, or when the resource is about to be invalid due to low battery levels, it selects alternative resources to ensure that the application has a certain degree of robustness.
3. Security mechanism: They provide a variety of efficient security mechanisms to ensure the safety and reliability of data transmission, storage, and processing.  
4. Intelligent data processing and personalized service provisioning functions: Intelligent algorithms are applied to multi-source sensing data for intelligently inferring and gaining new knowledge. It can also provide users with personalized services by using sensors to obtain contextual information.  
With the development of IoT technology, the combination of many open source technologies constitutes an open source ecosystem for the IoT, with each part implementing different functions of IoT architecture. These functions range from data sensing to applications for end users. This section analyzes the existing IoT open source technologies which can satisfy the different layer requirements. We also mention some IoT requirements that have not been implemented by the open source ecosystems thus far.