This is the first screen you see.  The username and password are customizable.

After you login, you see the ‘overview’ page. This page displays all the sensors value in near-realtime. You can also control your relays on this page and change thier mode:

Manual – to ignore setpoints and timers and control relays manually

Auto – Follow the rules based on timers and setpoints

All the data is being requested from the SQL database and shown on this page every second.  The charts however, are updated once per refresh of the page (to allow for large amounts of datapoints). This HighChart allows you to zoom into the data points by clicking and dragging the mouse to select a time range.

At the bottom of this page, lies the Cambozola java applet. This connects back to your ‘motion’ webcam server that’s running on the Pi.  You can click ‘Restart Cam’ to restart motion or ‘Stop Cam’ to stop motion (both buttons are just off the bottom edge of this screenshot).

Next is the ‘Timers’ page. Here resides a simple on/off setting for your light(s)/ballast(s) and watering schedules. The Watering Schedule is designed to evenly distribute the on/off times evenly throughout the day.

Second screenshot (extended):

The ‘Graphs’ page contains all the highcharts for your different sensors. This page loads all the datapoints as logged in the SQL database, and visually represents the data. The graphs are ‘zoomable’, ‘printable’, and show the values as you hover overtop of the graphs.

Note, the pH sensors, TDS sensors and CO2 sensors were not plugged in during this screenshot; hence the strange values.

This is where you change your Low and High values for each sensor so that you will be alerted via email when the values go out of an acceptable range.

You can also set the on/off variables for your equipment to start-up (ie. When the temperature goes above 29 degrees, start the air conditioner)

This is where you change your automatic processes on and off, such as auto mixing nutrients (on/off) or CO2 Enabled (on/off).  Although these features aren’t programmed in yet, the values are all updated to the SQL database and can be easily programmed-in based on your specific setup on the Arduino.

Right now, all other programming has been completed to control these devices via the web interface, but no ‘rules’ or ‘function’ to actually control these devices have been programmed on the Arduino, yet. The Arduino sketch, however, is split-up into easy to understand sections, allowing you to program in these functions with relative ease.


The Alarms Page. When there is a new alarm, it appears here.

If the alarm is ‘Unacknowledged’, the program will keep trying to email you until the email is sent.

Once an email is sent, or you’ve acknowledged the alarm, the program will stop sending emails regarding that specific alarm. If you have a sensor that you know might be acting up, or you simply do not want to recieve emails about the alarm, you can leave the alarm ‘Acknowledged’ without deleting it.

Once you’ve deleted the alarm, if the sensor goes out of range again, the alarm will be treated like a new alarm; that is, the program will try and email you about the alarm until the email is sent or the alarm gets acknowledge (whichever happens first, although emails happen very quickly after an alarm is raised).

Second screenshot (extended):

The ‘System’ page.

Send Command:  Anything you type and send will be directly sent, through serial, to the arduino. Good for hidden commands, debugging, or ‘manual-entry’ commands as a failsafe.

Update Firmware:  Here, you can upload and program your Arduino, using AVRdude, remotely from this web interface. Just upload the hex file as ‘firmware.cpp.hex’ (this gets saved to your tmp folder after you click ‘verify’ in the Arduino IDE, just find the appropriate hex file and rename as per above)

Restore Defaults:  After uploading the firmware for the first time, remember to restore the defaults!  This resets/writes the correct values to the EEPROM so that the Arduino sketch won’t get confused.  This will also set you up with some ‘sane’ variables to begin with.

Email Alerts: This is where you setup your email server settings to configure the system to send you email alerts as per the Low/High values as set on the Set Points page.

Camera Settings: Change the address in which Cambozola will attempt to connect to your ‘motion webcam server’ through. Use a domain name service such as dyndns to be able to connect to your system even if your ip address is dynamic (changes).

The python script!

This is the bridge between Arduino serial communications and the SQL database.  Also, any commands sent from the web interface get read by this script, and then sent to the arduino as the appropriately formatted serial string.  The Arduino then receives this string and does what ever the command says.

This script runs in the background and you never actually see the output as shown in the screenshot, but is more or less used for debugging.

This screenshot was taken in an ssh session. It is for v1.15, but v1.16’s output is very similar.