Hello everyone!
This is a project that is finally starting to get to a stage where i have something to show I had gotten some very constructive feedback on the basics here a while back , so here goes:
Basically the Hydroduino is system for remote monitoring and control of environments (specifically hydroponics gardens, but it can be used for any other type of environment too) using the Arduino and a set of sensors:
It is divided into two main components :
- the web client( javascript , jquery, and ajax)
- the server (python, mysql database).
The server handles following elements:
- the scheduling system (turning the different client defined tasks into commands sent to the arduino)
- the arduino control system
- a simple wsgi web server (using Bottle)
There are a lot of elements in the Python code and in the arduino code that might be of interest to some of you : for example:
- a threaded "serial listener" class , which is somewhat like the serial in "Processing" : you can have events raised each time the arduino sends a message over serial, with the added possibility of buffering the data until a specific string is received etc
- for the automation part i have created a small arduino side library with witch you set the state of pins or retrieve data from specific pins via serial commands, and you can also set "triggers" : ie have specific threshold values that will turn "actors" (motors, pumps, you name it) on or off. The server side code sends the commands based on the (user defined) settings retrieved from the central mysql database
I have also started working on a "plugin" system for non essential elements: this includes a twitter module for critical messages sent by the system, a "time lapse" webcam photography module , and most likely a form of Pachube integration .
The aim of the project is:
- to have a lightweight remote monitoring and control system that you can easily install and setup on a home computer /Server (i will be using a SheevaPlug SheevaPlug - Wikipedia for this)
- web based so no heavy ui, and easily accessible
- everything should be settable, configurable, modifyable via the web client
- multi platform
- open source (i will release the code as soon as i have a cleaned up but working version)
there is still lots to do but its already running relatively smoothly, feedback is more than welcome, as its still very much a work in progress!
Cheers!
Last but not least here are two videos of the current state of the project: