├── Development └── README.md ├── Logical ├── AGILE_Data_Mgmt_UI_Spec.docx ├── AGILE_UI_Deck.pptx └── README.md └── README.md /Development/README.md: -------------------------------------------------------------------------------- 1 | 2 | ![alt tag](http://www.agile-project-iot.eu/wp-content/uploads/2016/03/logo-png-transparent-02_small.png) 3 | 4 | # AGILE Architecture: The Development View 5 | 6 | This view of the AGILE architecture aims at describing how the software of AGILE is decomposed from a development perspective into software components that will be developed and/or integrated into the AGILE software solution. 7 | The following picture offers a representation of main software components that will be delivered by AGILE project. 8 | 9 | 10 | ![alt tag](http://agile-iot.eu/wp-content/uploads/2016/06/AGILE_arch_DevView.jpg) 11 | 12 | 13 | AGILE components will run partly in the cloud and partly on the IoT Gateway. 14 | 15 | ## AGILE Gateway Components: 16 | 17 | At the gateway level, we can distinguish, from a software components point of view, the following types of software bundles: 18 | * Gateway OS: At the lower level, the operating system hosting the whole AGILE services and applications. As already described, the AGILE OS will be based on linux distributions with reference target distributions being Ubuntu Core, Raspbian and distributions created with [Yocto]. In terms of microprocessor architectures, AGILE targets multiple architectures with specific focus on ARM, x86/x86 64  architectures.  19 | * Containerization infrastructure: on top of the operating system a layer offering containerization functionalities allowing to encapsulate AGILE services and AGILE applications into isolated micro-services hosted the operating system (Ubuntu Snappy and Docker as potential containerization technologies to be adopted); 20 | * AGILE Framework: a set of components aggregating a set of “DevOps” services to be exposed to AGILE developers to support development of AGILE IoT applications and to manage AGILE infrastructure (gateway and related cloud services). In particular, development services are exposed to developers through the AGILE API and related development libraries (AGILE SDKs); 21 | * AGILE Apps: the infrastructure and components used to host and manage IoT AGILE applications deployed and running into AGILE Gateway; 22 | * Remote Gateway and Fleet management: components used to remotely manage Gateway resources (on the AGILE Framework side) and hosted IoT applications (on the AGILE app side). 23 | 24 | 25 | 26 | Learn more @ http://agile-iot.eu/ 27 | 28 | Follow us on Twitter: [@agile_iot] 29 | 30 | [@agile_iot]: 31 | [AGILE API]: 32 | [Yocto]: -------------------------------------------------------------------------------- /Logical/AGILE_Data_Mgmt_UI_Spec.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Agile-IoT/Architecture/fa711eddd036d63fe66aea79c9ca5265922a1ac5/Logical/AGILE_Data_Mgmt_UI_Spec.docx -------------------------------------------------------------------------------- /Logical/AGILE_UI_Deck.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Agile-IoT/Architecture/fa711eddd036d63fe66aea79c9ca5265922a1ac5/Logical/AGILE_UI_Deck.pptx -------------------------------------------------------------------------------- /Logical/README.md: -------------------------------------------------------------------------------- 1 | 2 | ![alt tag](http://www.agile-project-iot.eu/wp-content/uploads/2016/03/logo-png-transparent-02_small.png) 3 | 4 | # AGILE Architecture: The Logical View 5 | 6 | The following picture gives a representation of functional components of AGILE Software Architecture. 7 | 8 | ![alt tag](https://camo.githubusercontent.com/0e9d051567a2c0a683241bcf3338e1f28191168e/687474703a2f2f6167696c652d696f742e65752f77702d636f6e74656e742f75706c6f6164732f323031362f30362f4147494c455f6c6f676963616c5f6172636869746563747572652e706e67) 9 | 10 | AGILE Software stack is divided into two main bundles: 11 | 12 | -> The full software stack that will run on the AGILE Gateway, i.e. on edge devices that will interface IoT Devices and that will host local IoT applications on the gateway itself; 13 | 14 | -> The set of components that will run into the cloud offering capabilities for communicating and managing AGILE Gateways from remote and offering integrations with external cloud services for data management. 15 | Focusing on the AGILE Gateway, we can identify different logical layers composing the full software stack of AGILE: 16 | * At the lower level, the operating system running on the gateway itself. The reference OS for AGILE is a Debian–based linux for embedded devices. Reference distributions for AGILE development are: Ubuntu Core, Raspbian and distributions created with [Yocto]. In terms of microprocessor architectures, AGILE targets multiple architectures with specific focus on ARM, x86/x86 64  architectures.  17 | * Remote Gateway and Fleet Management System: this layer deals with all the capabilities needed to allow a remote access to the gateway for management and for managing a fleet of remote gateways in an efficient and simple way. 18 | * Device Discovery, Communication and Data Storage: this layer is composed by three main components: 19 | * IoT Device & Hw module Discovery: module for device and HW module discovery (could be also separate components): Responsible for detecting the wireless modules (LoRA, ZigBee, BLE, etc.) user plugs on the gateway and enabling the proper drivers. Scans the network (WiFi, Ehernet, wireless) for connected IoT devices using appropriate standards (KNX, uPNP, Zwave, Thread, etc.) or family of standards (AllJoyn, oneM2M, etc.). Should be a microservice exposing functionality over an API to other components. 20 | * IoT Device Communication: A micro-service responsible for implementing the communication with connected IoT Devices. Once a device is detected, it exposes the features of the device and allows data polling or sending actuations to the device by supporting a number of various IoT device protocols (KNX, Zwave, ZigBee, Thread, etc.). It should provide an API for other components to use this service. In addition, it will feature an easy way of integrating future protocols. 21 | * Data Storage: a local NoSQL database for managing IoT device data. Should be lightweight and expose an API (used as micro-service) at the same time for data management. 22 | * Gateway and Device Management layer: this layer is composed by components dedicated to the management of the gateway itself and to all managed connected devices: 23 | * Gateway Management UI: The UI for managing the Gateway as a device: see resource status, perform reboots, updates of OS and various components, control also the I/O of the board, manage devices directly connected to the gateway; 24 | * Device Management UI: User Interface for managing the IoT devices connected (wirelessly or wired) to the gateway. Should use the device discovery and communication modules to list automatically found devices and provide real-time data readings or actuations. 25 | * Application-level Support Services this layer is composed by services needed to support the creation and deployment of applications running on the AGILE Gateway. It is composed by the following three main components: 26 | * IoT Data management Interface: Interface for managing IoT data from connected devices. Managing refers to retrieval from the local storage, realtime view, data visualization, etc. The component will have a graphical UI and potentially an API/SDK to provide services (e.g., visualization of data queries) to other components (e.g. the App Developer UI. 27 | * IoT App Developers UI: The visual interface (Node-RED like) for creating application logic and running it on the gateway. It will be web-based UI, which would use the recommender for proposing nodes (functional modules) and workflow examples based on the configuration (hw) of the gateway. The collaboration tool shall enable the easy share of data or workflow editing between users. It should also support popular IoT protocols like MQTT, WebSockets, CoAP, etc. 28 | * IoT Apps: this component is in charge of supporting the execution of IoT applications using services offered by various components via AGILE APIs, offering services to install, upgrade and uninstall applications inside AGILE Gateway. IoT Apps will be bundled as “bundles” and can be mapped onto “Ubuntu Snaps” or “docker containers”. 29 | 30 | * Additional AGILE Gateway services: 31 | * IoT App Recommendation: this is a component at the service of IoT developers and AGILE end users, offering recommendations based on AGILE Gateway configuration, that will suggest type of devices that can be integrated in the current gateway configuration, recommendations on which network modules to be used based on gateway usage scenarios, and what IoT applications available in the AGILE repository can be installed and supported by current gateway configuration. 32 | * AGILE APIs: AGILE capabilities and services are offered to developers through a set of predefined APIs. Two different logical types of APIs can be identified in AGILE and exactly: 33 | * AGILE integration APIs: these APIs are intended to allow AGILE developers to extend and integrate additional services and capabilities into the AGILE Gateway (e.g. support for a new IoT protocol implementation); 34 | * AGILE APIs for IoT Apps Development: these APIs will be used by third party developers in order to develop IoT Apps using AGILE Gateway services that will be delivered and axecuted on the AGILE Gateway itself. These APIs are practically a subset of APIs described above. 35 | 36 | 37 | Focusing on the AGILE Cloud side, we can identify different services that complement and complete capabilities offered by AGILE at the gateway level: 38 | Data Cloud services: 39 | 40 | * AGILE Data Cloud Integration: AGILE will offer components to support connectors (libraries and APIs support) allowing AGILE users to extend the capabilities of the gateway by managing data and deploying apps in existing public and private cloud infrastructures; 41 | * Remote Gw Management: backend services and user interfaces used to remotely manage the/a fleet of Gateways. These services are the cloud-counterpart and integrate with Gateway Management features available on each AGILE Gateway; 42 | * IoT Apps Repository: the cloud repository where AGILE IoT apps will be described stored; 43 | o IoT Apps Recommender: cloud services to perform recommendations to end users about available IoT Apps in the repository. 44 | 45 | 46 | 47 | 48 | Learn more @ http://agile-iot.eu/ 49 | 50 | Follow us on Twitter: [@agile_iot] 51 | 52 | [@agile_iot]: 53 | [AGILE API]: 54 | [Yocto]: -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ![alt tag](http://www.agile-project-iot.eu/wp-content/uploads/2016/03/logo-png-transparent-02_small.png) 3 | 4 | # AGILE: The Software Architecture 5 | 6 | The purpose of this repository is to present the software architecture for the AGILE gateway components. 7 | 8 | ![alt tag](http://agile-iot.eu/wp-content/uploads/2016/06/AGILE_logical_architecture.png) 9 | 10 | 11 | The different Architectural views represented and described are the following: 12 | * [Logical] View: a representation of logical components aggregating the different functionalities that the AGILE gateway will offer; 13 | * [Development] View: shows how the software is decomposed for development into software components that are implemented by the development team or an existing external component that is integrated into the whole system. It also includes the mechanisms that AGILE will use to package and deliver software components. 14 | * Microservices View: AGILE is developed according to a microservice architecture where are small set of independent processes communicate with each other and offer offer external applications services via well defined APIs. This view is important to clarify the different mechanisms that AGILE will adopt in order to deploy and execute components at runtime. 15 | * [AGILE API] Definition: this view describse the specific APIs that AGILE will deliver to developers in order to build IoT Applications on top of AGILE framework, or to extend AGILE framework with additional features/API implementations (e.g. a specific device protocol integration). 16 | * Dynamic View: this view complements the previous views in order to describe dynamic scenarios of interaction among external actors and the different software components in the design of specific logical flows supported by AGILE. 17 | 18 | 19 | Learn more @ http://agile-iot.eu/ 20 | 21 | Follow us on Twitter: [@agile_iot] 22 | 23 | [@agile_iot]: 24 | [AGILE API]: 25 | [Development]: 26 | [Logical]: --------------------------------------------------------------------------------