# Internet of Things Platforms for Academic Research and Development: A Critical Review
## 2 Internet of Things Platforms  
When addressing a problem within the framework of IoT requiring the introduction of a platform, the first choice to be faced is whether to use and/or adapt an existing platform or to build a new platform from scratch. The latter choice can be preferred, in particular, for problems with very specific requirements, not addressable by existing platforms, or when the goal is to introduce a new functionality not available in any existing platform. Several examples of platforms designed from scratch for a specific target application can be found in the literature. In [9] a platform specifically designed for railways logistics is introduced and compared with existing logistics software. An IoT platform model specifically designed to take advantage of edge/fog computing is proposed in [10], as the basis for the definition of a new IoT platform, named SAT-IoT. In [11] a platform taking advantage of blockchain technology for efficient decentralized access to edge nodes, called Edgence, is proposed. In most cases, however, building a new platform is an excessive and unnecessary effort, typically when the research goal is to develop an application with requirements that are estimated to be within the scope of existing platforms. If this is the case, the most natural choice is to use an existing platform, posing, thus, the issue of how to select the best platform for the problem at hand. A plethora of IoT platforms with very different business and utilization models are in fact currently available, ranging from paid access to service with no source code access on one extreme, to free service and full access to the source code [7] on the other. The distinction of open source vs. closed source platforms is particularly relevant from the point of view of academic R and D, and was thus adopted as the first discerning feature in organizing the review carried out in the following. Regardless of the availability of the source code, a common set of criteria was adopted to analyze IoT platforms. Based on several previous reviews [6; 7; 12], the following criteria were adopted:  
* communication protocols, related to to the set of protocols made available to communicate with devices and external systems and, correspondingly, to the number of supported hardware platforms;
* data processing capabilities, related to tools for data processing, transformation and analysis;
* data visualization, related to availability of tools for presenting data collected from devices and analyzed in the platform to the external world;
* integration with external services, related to support for interconnection with external storage and processing services, such as databases and content management systems;
* security, related to the security features made available by the platform, aiming at limiting the number of data breaches and mitigating the impact of each breach in ecosystems that can include millions of connected devices. The list above does not exhaust the possible comparison criteria for IoT platforms. Features such as processing power and corresponding speed, reaction time, storage capacity and reliability are all potentially valuable metrics in comparing IoT platforms; unfortunately it is extremely hard to obtain information on these metrics from platforms' documentation and websites. Furthermore, these metrics mostly depend on the amount of computing, networking and storage resources that are made available in the deployment of an IoT plat form. In turn, using these metrics when comparing the closed source platforms analyzed in Section 2.1, typically deployed in the cloud, would most often translate in a comparison between pricing tiers (see for example the case for available storage) rather than between inherent properties of the platforms. An assessment based on these metrics would be even harder to perform for open source platforms that can be installed locally.