By Kaveri Govindan
Fall 2010, Mobile Computing
We envision a world where everyday smart devices and objects are connected by fully integrating them to the Web, forming a 'Web of things'. Examples include Wireless Sensor Networks, Ambient devices, household appliances, etc.
This project is about the design and development of a Temperature alert system. Though there are products in the market that alert when sensed temperature goes above/below threshold values, I wanted to have more control over how the temperature data is used. As a computer programmer, I aimed to develop a web service that monitors temperature and other readings from a sensor via HTTP, and actuate custom processes based on the data readings. Our web service is expected to monitor temperature readings in an environment where temperature has to be maintained between fixed lower and upper thresholds. The web service can be configured by users to send out alerts if the temperature values go above or below the threshold levels. SunSPOT devices have been chosen to serve as sensors. Developing a web service that talks to sensors would require me to have sensor device specific programming skills. To simplify this for me, the SEAP approach (Sensor enablement for the average programmer) was explored.
HTTP (Hyper text transfer protocol) is the foundation of data communication on the world wide web. HTTP works as a request response protocol. A server application will reside on a host computer and listen for incoming requests. A client, such as a web browser can make a request, that the server application will process and issue a response back to the client.
This architecture can be extended to form the 'web of things' by including devices as end points.
A device can post its data to the web application via HTTP. The application can process and store the data; and also actuate other devices or processes based on the data. However, programming a device to send/receive data via HTTP requires significant knowledge of the device specific APIs and protocols. This can be a challenge for the average programmer. SEAP approach (Sensor enablement for the average programmer) attempts to simplify this programming effort
SEAP is an approach to reduce the complexity of the device integration to the web. It advocates the use of middleware components that reside on the device and help to transmit sensor and actuation data using the standard HTTP protocol. For programmers and other users, this makes interaction with the sensor device easier as they can rely on known web programming patterns.
SEAP software components run on the remote device. When the sensor device has data to send, the SEAP component packages the data and opens an HTTP connection to a configured URI. The SEAP component also manages native function invocation on the device in response to HTTP requests. This reduces the programming effort to simply integrating web application components to the SEAP components. The programmer can remain agnostic of the sensor device's native APIs
Illustration 1: SEAP approach
SunSPOTs were chosen to serve as a temperature sensor and an actuator. They were chosen because they are designed from the ground up to make it easy for programmers to write applications. They have an embedded microprocessor that runs Java. A Java programmer can use standard Java development tools couple with their suite of technologies to enable the internet of things.
The basic unit includes accelerometer, temperature and light sensors, radio transmitter, eight multicolored LEDs, 2 push-button control switches, 5 digital I/O pins, 6 analog inputs, 4 digital outputs, and a rechargeable battery. We will use the temperature sensor for this project.
The system consists of three software components: 1) the Web Service, 2) ProjectSensor Midlet and the 3) ProjectActuator Midlet.
This is developed using Java Web Component technologies (Java Servlets and Java Server Pages) and is served by an Apache Tomcat container. MySQL database served as a data store.
The web service provides end-points for the sensors to post data and retrieve commands. For example: A sensor would talk to http://localhost:8080/post to post its data and an actutator would talk to http://localhost:8080/command to retrieve commands for itself.
A user can access the web application via a browser. The user interface displays the sensor data in a graphical form. It also allows the user to configure an email notification when the sensed temperature goes above or below user-defined threshold levels. The web service monitors the temperature data it receives and sends out email alerts if necessary.
The midlet was developed using the SunSPOT sdk and Java MicroEdition. It is deployed on the sensor SunSPOT. It periodically retrieves sensor data (currently set to every 30 seconds), opens a HTTP Connection to our web service end point and POSTs data.
The midlet was developed using the SunSPOT sdk and Java MicroEdition. It is deployed on the actuator SunSPOT. It periodically makes a request to our web service to retrieve commands for itself. The Midlet then proceeds to perform device specific function calls based on those commands.
Illustration 2: Design
1) Install the required software
· Apache Tomcat web server (http://tomcat.apache.org/)
· MySQL database (http://dev.mysql.com/downloads/)
· SunSPOT sdk (http://www.sunspotworld.com/SPOTManager/index.html)
2) Deploy and Run the Web application. This is distributed as a war file. This war file may be deployed directly into the Apache Tomcat container.
5) When the temperature at the sensor SunSPOT goes above/below the configured thresholds, the email notification will be sent out. Also, the actuator SPOT will blink its onboard LEDs.