Sensor Network Visualization

Technologies: Node.js, SocketIO, MongoDB, Processing.js, jQuery

Background

In the fall of 2011, I had the opportunity to work with several classmates on a sensor network project for the residential building 240 Central Park South. The building manager was interested in how sensor networks could be used to improve building efficiency, spot problem areas and lower utility costs.
To address this need, our team built a network of XBee radios, each of which was equipped with a temperature sensor and a humidity sensor. We placed these sensors throughout one floor of the building, and using the ConnectPort from Digi we were able to monitor the sensor data output.
For my part, I built a Node.js web application for managing the nodes in the sensor network and displaying a real-time visualization of the sensor data.

How It Works

The web application is hosted on Amazon Web Services' EC2, and it is written in Node.js. The admin panel of the application provides forms for adding new XBee and sensor data to the application, storing it in a MySQL database.
On the sensor data collection end, the Node application receives HTTP GET requests from the ConnectPort, logs the incoming request to an instance of MongoDB, and simultaneously emits the data from the request to a client web browser via SocketIO.
In the browser, meta-data about the sensor data (such as location of the sensor and sensor type) are retrieved from the MySQL database and used to populate real-time graphs. Incoming sensor data is stored in the HTML5 data element, and accessed by Processing.js, the tool used for the visualization.