Carbon Commute

From C-Aware Project Wiki
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.


Carbon Commute Overview

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 Carbon Commute

Instructions for using the iPhone app and web applications of Carbon Commute can be found here..


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 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...


Building Locker Apps

Lockers can host applications written in Javascript, that interact with the information stored within the locker through the API. More Info...