# Internet of Things Platforms for Academic Research and Development: A Critical Review
## 2 Internet of Things Platforms
### Open Source Platforms
Third party users and applications interact with the OpenMTC Backend by means of oneM2M-compliant APIs, that allow them to place data queries and issue commands without specific knowledge of the communication protocol supported by sensors and actuators. The translation between the hardware agnostic APIs and the actual device is carried out by the backend and by the Gateways, that convert hardware-specific data formats to and from the data format compliant to the oneM2M standard. The platform supports HTTP/HTTPs and REST APIs as communication protocols with external applications, and the MQTT protocol with devices. The OpenMTC does not provide any built in processing capabilities, deferring them to the external applications that collect data from devices. Visualization features are also limited, since only a basic dashboard is provided. It should be noted, however, that an OpenMTC FIWARE connector was recently made available. The connector provides a bridge between the OpenMTC middleware and the FIWARE Orion context broker, and allows to process and visualize data made available by devices connected through OpenMTC using all the Generic Enablers defined in FIWARE. Security is guaranteed by supporting secure HTTP connections and certificate-based TLS authentication, and by implementing the concept of dynamic authorization server (DAS), part of the OneM2M standard [44]. The platform can be installed by downloading sources and building both the software development kit and the components into docker containers, that can be then accessed over HTTP. Documentation is available both in the Github repository and on the platform webpage. The webpage includes a short tutorial for getting started and a few examples of code samples to access the platform. The SiteWhere [45] platform adopts a micro-services-based architecture, similarly to Lelylan. Micro-services provide connectivity with devices, integration with external services, and command delivery to devices. While the first generation of the platform was available in both Community (free) and Enterprise (paid) editions, the SiteWhere 2.0 is currently available only in its open source Community Edition. SiteWhere supports a wide range of protocols including MQTT, AMQP and STOMP protocols for communications with device. SDKs are available supporting integration of Sitewhere with several platforms, including Android, iOS, Arduino and Blivision. Similarly to Lelylan and OpenMTC, Sitewhere does not offer built-in data processing and visualization; the platform offers instead outbound connectors that allow to asynchronously read data associated to and event source (e.g., a device performing measurements) and forward it for processing to external databases such as Azure and Apache SoIr. Security-related aspects are not addressed in the platform documentation. The platform can be installed on a kubernetes cluster, either deployed on a local machine or on a cloud installation. Installation from sources can be performed using the grade building tool with a single shell command. Documentation is available on the platform webpage, and includes deployment and installation guides, although instructions do not make reference to any specific architecture, and include links to external pages for installing tools required for installation. The webpage also provides examples on how to connect to the platform using JSON as well as from Android apps and from the Kura IoT framework [46]. ThingsBoard [47] is a platform available under multiple licenses, ranging from a PaaS version running in the cloud, to an open source community edition, to a paid professional edition. The open source community edition allows both cloud-based and local deployments, and supports several protocols through dedicated APIs, including MQTT, HTTP, constrained application protocol (CoAP), LwM2M and SNMP. In addition, several additional protocols, including BLE, Modbus, OOPC-UA are supported through the IoT Gateway component, that uses converters to translate such protocols in a format compatible with ThingsBoard.