So far my project has three main components:
Sensor Network <-> Base Station <-> Web Interface
They are interconnected and pass data between each other.
The sensor network is gathering the sensor data is currently based on Jeenodes which are Arduino based nodes.
Status: Hardware has been solder together, sensors have been purchased and the code for the protocol has been written.
- Create robust adaptable nodes that can easily be reconfigured
- Create Wired and Wireless Links
- Create a Mesh Network
- How to design so an average user can configure a node? Pre programed ROM? Dip switches? Web interface?
- Solution: Processing sketch that directly communicates with node to set address and sensor configuration to the Arduino ROM
- Current Wireless Chip doesn't do mesh networking: cost prohibitive
A Server program running on a PC reads packets of data from the sensor network and passes them on to a web interface. Currently using a Processing.org Java Program
Status: Protocol code has been ported to java. Actual interface still needs to be built.
- Be user configurable
- Easy to deploy/setup
- How to Connect to Web server?
- XML-RPC seems like the simplest solution right now and offers a lot of flexibility.
- Using EEML like pachube might work too but would require a lot more code.
- How to save settings? flat file, SQL database, remotel?
- I haven't decided how to solve this yet. Some settings must be saved locally, ie web server address, Pachube api key. Using an XML file is the best soultion for this.
- Other settings like node and sensors names would be better stored in a better database if it is to scale to thousands of sensors. Can it call a remote server to get this info or should it be local?
- How to store data if Internet Connection goes down?
- Store it memory is the easiest, SQL would be better
Status: In planning.
The web interface right now is going to be using LAMP Linux, Apache, mySQL and PHP. The code is going to based on the Zend Framework and a UI library I started writng a while back. The front end is going to use jQuery and jQueryUI. Graphs will use the Google Graph API.
- Work on a varety of platforms and screen sizes
- Use Web 2.0 Ajax etc. Jquery
- Create an interactive Remote for the network
- Server local or remote?
- A good webserver is hard for an average user to setup. A remote server can also handle more users. User can also access the remote to get info about power/data outages