This is the first blog post in a series about developing a web application called PlugWeb. This first post is an introduction to the project. The goals and requirements for this project will be defined. The last part contains an overview of the application components.
About the project
PlugWeb is a web application for controlling and polling Plugwise devices. The web application provides easy access for controlling and monitoring the devices. Historic statistics can easily be requested and printed. Devices can be grouped into types and placed onto areas (images). There should be no dependencies with the official plugwise application (a custom driver needs to be build to communicate with the zigbee network using the plugwise USB stick). A background process should periodically collect historic information about the power consumption of every device. Also authorised users should be able to switch on/off devices immediately.
Each Plugwise system consists of Circle+, one or more Circles, the Plugwise Stick and the Source software. These components communicate with each other wireless, using the highly efficient and energy-saving ZigBee protocol. The Plugwise system has been designed to provide details of energy consumption per appliance and save energy by creating switching schemes. The plugwise software, called source, is a windows application.
Requirements & Goals
The official plugwise software only runs in a Windows environment. Personally I purely use linux based systems and therefor unable to run the official software.
- The first goal is to create an application to switch on/off Plugwise devices in a Linux (and possible Mac) environments. This will be realized by creating a web-based front-end and a back-end linux daemon.
- The website should be easy to use, but powerful enough to display all information gathered from the Plugwise devices. This goal will be realised by keeping the amount of pages to a minimum.
- Also switching devices on/off should be executed immediately. This action can be fired from the website and daemon. The website should not talk to the serial device directly. Otherwise concurrency problems could arise, when multiple users send commands to the serial device at the same time. The switching should be handled by the daemon only.
- In order to ensure the quality of the driver unit tests should be written.
Blog posts in this series
This blog post is an item in a series of blog posts about the development of the PlugWeb system. The following blog posts of this series have been published in the past:
* An introduction of the PlugWeb project (this post)
Next time I will blog about the following aspects of the PlugWeb system.
* Software architecture of PlugWeb system (updated: 15 jan 2011)
* Creating the driver
* Designing the sqlite database
* Implementing the daemon using PhpTaskDAemon
* Creating the service layer with zend framework
* Creating a PlugWeb Android application