# Internet of Things Platforms for Academic Research and Development: A Critical Review
## 2 Internet of Things Platforms
### Open Source Platforms
\"Generic Enablers\" fall under several categories, that can be divided in five groups. The fist group is the \"Core Context Management\" group, and includes the core category: the central element in a FIWARE-compliant platform, the context broker generic enabler, falls into this category. The context broker provides an implementation of the FIWARE API, that enables the interactions with all the other components in an IoT platform: the execution of queries from sensors, the issue of commands to actuators, and more in general the exchange and management of IoT context information between devices and applications, are made possible by the context broker. The context broker originally developed within FIWARE is the Orion context broker, that provides the next-generation service interfaces (NCSI) v2 API. Several additional context brokers, available by incubation, introduced a new API defined according to the ETSI next-generation service interfaces--linked data (NCSI-LD) standard [37]. The second group is the \"Context, Processing, Analysis, Visualization\" group, and includes generic enablers falling under three categories: processing and analysis, visualization and media streams. The processing and analysis category currently includes the FogFlow generic enabler for distributed processing over both edge and cloud architectures, and several additional incubated enablers. The visualization category comprises the WireCloud tool, providing an easy to use interface to create widgets, dashboards and cockpits to visualize data. Finally, the media streams category includes media servers and clients to analyze and enhance media streams, such as the Kurento generic enabler. The third group is the \"Interface with IoT, robots and third-party systems\" group, and includes categories of generic enablers related to the interface between a FIWARE platform and hardware devices, such as sensors and actuators. The group includes two categories of generic enablers: IoT agents and robotics. IoT-agents generic enablers provide bridges between the NGSI and the communication protocols used by IoT devices, such as MQTT, LightWeight M2M, SigFox, OPC-UA and LoRaWAN. Robotics generic enablers play a similar role with respect to robotic systems based on popular operative systems, such as the Robot Operating System 2 (ROS2). The fourth group, \"Context Data and API management, publication and monetization\", comprises generic enablers divided in the following categories: API Management, data publication, data monetization and security. Generic enablers in this group focus thus on providing secure access to data collected and generated in a FIWARE platform. Security in particular is guaranteed by OAuth2-based authentication schemas provided by the Keyrock Identity Management generic enabler and the Wilma proxy generic enabler, and by access control compliant to the extensible access control markup language (XACML) standard, supplied by the AuthZForce PDP/PAP generic enabler. The last group, \"Deployment tools\", includes a single category of generic enablers, also named deployment tools, providing tools to distribute and deploy FIWARE components, supporting, among others, Docker and Kubernetes. FIWARE can be installed in fact using Docker or Kubernetes images, as suggested in the documentation as a starting point to get a demo running in a short time. A full installation from source code can be performed by cloning the Github repository of the project, and compiling the generic enablers one by one. Supported host platforms vary from enabler to enabler, although they typically include popular Linux distributions. Depending on the specific generic enabler, the installation may require the download and manual installation of additional packages. FIWARE is characterized by a rich documentation, both in the Github code repository and on the project website. The website provides in particular a large set of tutorials to explore the different groups of generic enablers.