Carbon Commute

From C-Aware Project Wiki
Revision as of 15:49, 30 January 2013 by cce25 (talk | contribs)
Jump to navigationJump to search

< Main Page


Carbon Commute is a system to record and estimate a user’s carbon footprint during their travel to work, whilst respecting their privacy and giving them increased control over the data recording from this activity. It involves an mobile phone application that records a users’ location data and uploads it to a server application. Each user is assigned their own Personal Container, isolated and controlled by themselves, which runs applications within itself and allows user control of the access to their data.

The Carbon Commute system has 3 main parts; a mobile phone application, one or more installs of the “locker” personal container software, and applications that run within locker. In our implementation we used an iPhone for the mobile platform, and ran lockers on servers hosted by the university computer service.


Using Carbon Commute

The mobile application is responsible for collecting location data when the user is commuting to or from their workplace. It allows the user to set their work and home locations' and then monitors and records the users location when travelling between these points. Once a GPS path has been recorded, it is uploaded to a remote server, running the users locker, where it is used to calculate the carbon footprint of the user.

The application records the most accurate GPS updates it can during the commute, and calculates speed and headings at the same time. The timestamp of the start and end of the commute is also recorded. This is then packaged into a JSON object and uploaded to the users locker.

To produce accurate reports on personal energy use, it is necessary to track a users location, for example to calculate their energy use whilst commuting, at work, as well as at home. This requires personal data, and it is important:

To allow only reputable parties to use this information, and only for the applications the user allows. To provide an environment in which third party applications can run but only provide output back to the user. In this case, we want to allow (e.g.)the university to calculate the carbon footprint of our commute as accurately as possible, yet deny data that the university does not require, and ensure the university is only using this data for this application.

Our solution is to use a 'personal container' architecture where personal data is stored in user-specific containers, through which the university requests access to a subset of that data which users can accept or deny, and identify exactly what is being accessed.

These containers protect user data from unauthorised access- the goal is not necessarily to share less data with 3rd parties, but to make sure the user is aware of all data accesses that occur, and that they are happy to authorise them.

We have used an implementation of a Personal Container called Locker and use this to store information gathered from the Carbon Commute app, include information from many other sources, and run apps within itself to process the data and output results. Thus the University can know the travel to work carbon footprint of an individual without knowing where the individual has been.

For more information on personal containers see the C-Aware Architecture page.

Using the iPhone App

Viewing Commutes in your Locker

Carbon Commute Setup and Development

iPhone App

Downloading and running the iPhone Application

The iPhone application source code can be found on Github, and compiled and run using the Xcode IDE. You can also use a application distribution service such as Test Flight to run the application on users' phones. More Info...

iPhone App Internals

The iPhone application was written in Objective C and created using standard APIs included in iOS and the Cocoa framework. More Info...


Locker

Locker Internals

Locker is a personal container implementation coded in Node.JS and using a MongoDB backend. More Info...

Locker Setup

The lockers were setup on the university computing service's cloud service, hosted within a VM and inside individual containers. More Info...

Accessing and Using Locker Apps

Once you have set up a locker, username.locker.cam.ac.uk should point to the correct 'username' locker, and allow you access after entering your authentication credentials you setup in the htaccess file.

Locker Commute App

To view your commutes that have be pushed into the locker so far, a basic webapp has been created that displays basic information, a histogram of the speed throughout the journey, and will plot the commute on a map. The app can be found at username.locker.cam.ac.uk/Me/mytravels/.


Building Locker App

Apps are stored in their own directories in the Apps directory of the locker root, within each container. (E.g. from the 'DB1' root: /lockers/containers/cce25/USERNAME/locker/Apps).

A good way to start another app is to copy the 'HelloPhotos' app directory, and edit the files to reflect your new app, as it contains a basic setup taht is fairly easy to understand by looking through the existing files. Both the package.json and hello photos.app files within each apps root directory contain information that tell locker what to call the app internally and how to start it up when it is requested over the web interface.

The files in the static directory include the app pages served up to the user and javascript and CSS files, which all behave as normal static site pages served from a web server.

You will need to inform the locker code the presence of the new app by adding the new app path relative to the locker root in Config/config.json in the "Apps" array.

Locker Push API

Within each locker, there are 'Connectors', which fetch or accept data from various sources. This includes presenting the push endpoint that the mobile app uses to upload the commutes it records. Each locker includes information and documentation on using these endpoints, specificly the API explorer can be used to trial requests of data from the locker, and can be found at username.locker.cam.ac.uk/dashboard/develop#Develop-ApiExplorer. The /push/getCurrent endpoint is used to request data from the push service within the locker, currently the collection used is "test5".