How many times have you been riding the bus and have been curious what temperature your computer growbox was running and if the plants needed to be watered? Ok maybe never, but I decided to solve this problem anyway. There is also no point in identifying that you may have a problem without having a way to do something about so I also implemented the ability to override the controls on the growbox by using a Windows Phone 7 application on your new T-Mobile cell phone or any other cool Windows phone.
I made the design for this pretty simple, unfortunately I could not connect with my growbox directly using a mobile device because the computer is behind a firewall (which is a good thing) so I used machine that both the mobile phone and growbox can contact cheapvegetablegardener.com. After creating a quick web service with the following methods the growbox and mobile device could now talk to each other:
- SetStatus(StatusInfo) – GrowBox sets this status every minute
- SetOverride(OverrideInfo) – Mobile sets override to default functionality
- GetStatus() – Mobile Phone gets status
- GetOverride() – GrowBox checks for potential overrides requested by Mobile device
Now I have the two devices talking here is the basic UI. The top half of the screen shows the growbox temperature, cpu temperature, and the moisture content. All of these statues change color (to yellow and red) as their values get to critical levels (too hot, too cold, too dry)
The middle section shows the current state of the growbox letting me know if the lights, heater, exhaust fan, and/or water pump are on or off. If a situation occurs where you want to override this state you can do this by simply clicking the status indicator.
The bottom part of the screen shows temperature and moisture levels over the past 24 hours. The graphs are rendered using Google Charts for simplicity though am thinking about creating my own custom solution to get the graphs just right. It also displays a current screenshot inside the grow box and you can transition between views with a finger swipe.
|Temperature history graph||Moisture saturation history graph|
Overriding the heater setting
Status screen following heater override
Though this covers most of my required functionality, I still need to add some cool transition animations and some additional analytics, but thought I would share my current version.