Currently the majority of IoT solutions involve the communication of devices with some cloud service for data management and application execution. In many cases a gateway is involved for providing Internet connectivity to non-IP wireless or wired networks, but mainly it forwards data to the Internet.
The Eclipse Agail takes gateways one step further and brings Cloud functionality locally, enabling data storage, processing and visualization. Users can have better control of their devices and the data generated. Agail is language agnostic and through a modular support of various wireless and wired IoT protocols (BLE, ZWave, ZigBee, KNX, etc.) and standards (IoTiviy, Thread, etc.) it delivers support for many existing commercial devices.
The Eclipse Agail framework comes from the collective work of an existing community, in the context of a european H2020 funded IoT project (AGAIL). More than 16 entities (research, industrial, startups and nonprofits) in Europe have come together to build and deliver a fully open source modular gateway framework.
The goals of the Eclipse Agail project can be summarised as follows:
- Provide a modular architecture for implementing IoT Gateways through building blocks that feature communication with IoT devices, data collection, local storage and processing, with focus on data ownership and device interoperability;
- Provide IoT application developers with the Agail API, a generic API offering services for device discovery, communication, data management (local and cloud storage), data processing and remote gateway management, accessible as a RESTful interface;
- Provide a language-agnostic framework based on containers to implement IoT Gateway services around Agail API (based on DBus), allowing to reuse and integration of existing best-in-class IoT open source packages for device communication using standard IoT protocols (BLE, ZigBee, LoRa, TCP/IP, etc.), user interfaces for device and data management;
- Provide gateway management components (for managing connected IoT devices and enabled IoT/M2M protocols, installed applications and components, resource management, etc.);
- Deliver reference implementations of the building blocks in a containerized form to simplify deployment and delivery of services and applications on the gateway that implement the core features of the Agail : communication with commercial wireless and wired IoT devices, protocol support (Thread, IoTivity, etc.), local data management and visualization, local and remote gateway management, application workflow design and execution, data exchange and application deployment on external clouds.
The Eclipse Agail is a language-agnostic, modular software gateway framework for the Internet of Things with support for protocol interoperability, device and data management, IoT apps execution, and external Cloud communication.
A framework both for developers who wish to quickly prototype IoT solutions but also for end users who want to easily customise their gateway based on their context and have full control of their data and devices.
The following image visualises the AGAIL structure:
Modularity & Adaptability
At the software level, different components enable new features: data collection and management on the gateway, intuitive interface for device management, visual workflow editor for creating IoT apps with less coding, and an IoT marketplace for installing IoT apps locally.
At the deployment level, the software components packaging & delivery is performed through containerization. This choice gives the developers the flexibility to share and install components without worrying about dependencies and conflicts. The containers utilise the internal AGAIL Project API, so access to gateway resources can be monitored and fully controlled by the user.
The following Development view illustrates the concept of the containers and the language-agnostic Gateway API for inter-module communication:
The Agail software can auto-configure and adapt based on the hardware configuration so that driver installation and configuration is performed automatically. IoT apps and workflows can be recommended based on hardware setup, reducing the gateway setup and development time significantly.
We believe that the Eclipse Community will appreciate and embrace the modular concept of containers for building a full IoT gateway stack. We need the support of the Community for helping us test, extend and adopt the Agail framework. The purpose of the Agail project is to extend current Eclipse IoT projects and provide an integrated framework for IoT gateways that offers device management, data storage and handling and language-agnostic application development.
The Agail already has a strong relationship with other Eclipse projects:
- Eclipse Kura will be used as the default local gateway management interface, allowing users to monitor the gateway resources, manage the local inerfaces and deploy OSGI code remotely. Agail members are working together with the Kura contibutors from Eurotech (also member of AGAIL project) for integrating the upcoming Kura RESTful API into the Agail API that will expose Kura functionalities to developers in a language agnostic way.
- Eclipse Paho will be used as an internal broker for extending the Agail RESTful API and allowing developers to communicate with the Agail gateway components using the MQTT protocol for data interaction between applicatons and connected IoT devices and the internal data storage.
- Eclipse Vorto will be used as a standardised way for describing the available IoT devices and most importantly enable vendors and developers to easily integrate device support in the future.
- Eclipse Smart Home will be investigated for potentially integrating communication with the numerous existing IoT devices the framework already supports.
Agail originates from the H2020 funded AGAIL project.
The AGAIL project team will go through the Eclipse legal review process to make sure all Eclipse AGAIL dependencies are eligible for contribution. While AGAIL has selected open-source components with friendly licenses, a detailed review will be conducted with the Eclipse legal team.
Currently the code developed and used/integrated on project's GitHub is released under APv2. The software components that will be exclusively developed by the project will be contributed to the Eclipse AGAIL under the Eclipse Public Licence. Reference implementations that include third party open source software (e.g., Node-RED) will retain the original licence and will be published on the original GitHub account.
- Architecture definition
- Initial implementation of wireless protocols support
Status: BLE, ZigBee completed. Upcoming: ZWave, LoRa
- User Interfaces (Data management, Device & Protocol management, etc.)
- Developer graphical Interface
- Integration of Eclipse Kura for local gateway management. Usage of Kura UI and the upcoming API for performing gateway management functionality
- Integration of Eclipse Vort for the definition and creation of abstract IoT device bindings
- Integration of Eclipse Paho for the extention of the internal Agail RESTful API and support of MQTT as alternative messaging and data subscription mechanism
First build for testing: Expected in 1st quarter of 2017
First version delivered: Expected in 2nd quarter of 2017
Within the next year we plan to develope and deliver many reference implementations for the support of various IoT standards (e.g., Thread, IoTivity, etc.) and specific support for commercial IoT devices. In addition, the reference implementation of Agail will be used in the context of the AGAIL project for evaluation in real life use cases (e.g., in wearables and outdoor air quality monitoring scenarios and surveliance using drones) while European startups and SMEs will be invited to utilise and contribute to the Agail framework with reference implementations and extentions.