BodyCloud is an open platform for the integration of BSNs with a Cloud Platform-as-a-Service (PaaS) infrastructure and it’s currently based on Google App Engine. It has been developed to make the middleware layer fully distributed; it specifically supports remote sensory data storage, offline signal processing and custom-defined algorithms via a plug-in mechanism. Its design and implementation choices allow BodyCloud to flexibly be tailored, in a very effective manner, for supporting a broad range of application domains, including m-Health, Building automation, and environmental monitoring.
The architecture consists of four main subsystems (or sides):
Body, which is the system side that monitors the target environment, phenomenon, or assisted living by means of wireless networked sensors, and sends the collected data to the Cloud through a mobile coordinator device. In particular, BSN data acquisition is currently based on SPINE, and on the BMF for Building sensor networks. Data collected are then streamed up to the Cloud-side. In Android-SPINE communication of wearable sensors with the BAN coordinator is based on Bluetooth, while for the BMF the communication is based essentially on IEEE 802.15.4/Zigbee.
Cloud, which is the system side providing full support for specific applications through data collection, processing/analysis and visualization. In particular, each specific application can be defined through the following programming abstractions: Group, Modality, Workflow/Node, and View. Such abstractions are supported by a RESTful web service (Server Servlet), implemented using the Restlet Framework, making the interaction with the Cloud-side fully based on HTTP methods (get, put, post, delete). The interactions are authenticated by the OAuth Verifier component based on OAuth 2.0. The Cloud-side is supported by the Google App Engine PaaS that provides the Datastore API, atop which the Persistence Layer managing the collected sensory data is built, and the Task Queue API, which enables asynchronous execution of tasks triggered by requests.
Analyst, which is the side of the system that supports the development of new BodyCloud application services. In particular, users can create new BodyCloud services by defining the aforementioned entities: groups, modalities, workflows, and views. Each entity can be created with an HTTP PUT request to the corresponding Cloud-side resource, thus requiring only a simple HTTP client as Analyst-side supporting application. As the workflow requires new nodes to be developed, the Analyst-side also requires an appropriate development environment. Once developed, new nodes are also uploaded with a HTTP PUT request to the corresponding Cloud-side resource. A predefined set of nodes is typically available, depending on the adopted implementation of the Workflow Engine.
Viewer, which is the system side able to visualize the output produced by the data analysis through advanced graphical reporting facilities. The graphical view is automatically generated by applying the View specification to the data.
- Main paper:
- Giancarlo Fortino, Daniele Parisi, Vincenzo Pirrone, Giuseppe Di Fatta, “BodyCloud: A SaaS approach for community Body Sensor Networks,” Future Generation Computer Systems, Volume 35, 2014, Pages 62-79, ISSN 0167-739X, https://doi.org/10.1016/j.future.2013.12.015.
- Link to the code repository
- List of application/systems as a service: ECG-AAS, ACTIVITY-AAS, REHAB-AAS