# An Integrated Platform for the Internet of Things Based on an Open Source Ecosystem
## 2 Open Source Ecosystem for the IoT
### Application Support Layer (IoT Middleware)
#### 2.6.2 Comparison of Open Source Middleware  
Through a comprehensive analysis of the main functions of open source IoT middleware and the requirements of IoT applications, the open source platforms were compared using seven features, including both functional and non-functional properties. Other non-functionalities such as flexibility, extensibility, reliability, etc. are not covered here. These seven dimensions are shown in Figure 2. The details are as follows:  
1. Access and management of heterogeneous devices. The platform should support various hardware using different protocols and provide management of device status and firmware updates. The open source middleware technologies introduced above almost all support a variety of mainstream open source hardware and mobile terminals, such as the Raspberry Pi, BeagleBone, Arduino, and so on. The underlying access protocols include ZigBee, CAN, RS-232, Bluetooth, GPIO, LoRA, SIGFOX, and others. Some open source platforms provide identity management for access devices.
2. Application layer data transmission. At present, open source platforms mostly support HTTP/MQTT application layer protocols, and some also support application layer protocols such as WebSocket, Modbus, OPC-UA, CoAP, and AMPP.
3. Data storage and intelligent processing. Data can be stored by the middleware itself to provide edge computing capabilities and can also be stored on cloud platforms. Data processing capabilities include complex event processing (CEP), rule-based event processing, and stream processing; some platforms also support machine learning capabilities.
4. Providing API interface and application support capabilities. The platforms above provide applications with various capabilities through RESTful interfaces.
5. Deployment mode. Some open source systems are deployed as gateways, some are simply deployed as IoT applications, and others have both capabilities.
6. Completeness of security. The platform needs to provide data encryption, secure transmission, identity authentication, and access control mechanisms to meet the needs of IoT applications.
7. Activeness. The activeness of development of the open source system is also an important factor when developers choose a platform. The activeness of the 19 platforms investigated here is shown in Figure 3. The number of results obtained through a Google search and the number of topics in the open source system's own forums can roughly reflect its activeness. The topic in the figure indicates the number of topics of each platform, which mainly comes from the Stack Overflow website and self-built forums.  
Based on the above features, Table 3 shows a comparison of the open source platforms listed in this paper. The symbol \"/\" indicates a feature is unknown. In Table 3, we can see that the degree of activity of the project has a strong correlation with the support it receives. For example, Eclipse Kura is supported by the Eclipse open source organization, and IoTivity has received support from big companies such as Intel, Cisco, and Samsung. WSO2 IoT has about 70 partners, and AllJoyn includes more than 100 companies as partners and is supported by the Linux Open Source Foundation. Table 3 also shows that the function of these open source projects is more comprehensive. Most systems are still regularly updated and developed, in addition to some platforms that are mature or have not been maintained. For example, 44 systems were updated in 2018 and 15 were updated in 2017.