Carbon Commute: Difference between revisions

From C-Aware Project Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 31: Line 31:


The iPhone app is made up of 3 main sections or panes, the main screen which appears whenever you open the app allows you to access these, and also features a master control for location recording that can easily be used to turn off tracking.
The iPhone app is made up of 3 main sections or panes, the main screen which appears whenever you open the app allows you to access these, and also features a master control for location recording that can easily be used to turn off tracking.
* My Commutes
A list of  commutes that have been recorded to the phone or are on-going. Tapping any entries in the list will show a map with the commute plotted.
* Settings
Used to enter the authentication details of your locker, and set your home and work locations. Also displays statistics regarding captured information.
* About
Displays text describing the Carbon Commute application.


===Viewing Commutes in your Locker===
===Viewing Commutes in your Locker===

Revision as of 14:19, 18 February 2013

< 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 the iPhone App

The iPhone app is made up of 3 main sections or panes, the main screen which appears whenever you open the app allows you to access these, and also features a master control for location recording that can easily be used to turn off tracking.

  • My Commutes

A list of commutes that have been recorded to the phone or are on-going. Tapping any entries in the list will show a map with the commute plotted.

  • Settings

Used to enter the authentication details of your locker, and set your home and work locations. Also displays statistics regarding captured information.

  • About

Displays text describing the Carbon Commute application.

Viewing Commutes in your Locker

Once you have setup a locker or had one setup for you, username.locker.cam.ac.uk should point to the correct locker where 'username' is your username, and allow you access after entering your authentication credentials you setup in the htaccess file. NB The steps involved in creating a locker can be found in Locker setup.

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


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

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