It has been a little quiet in my blog lately. But it’s not because I was lazy (well, maybe just a little).
I’ve been busy celebrating many many birthdays in July (including my own) and also I spent a lot of my time learning new technologies (namely HTML5, CSS3 and C# languages) and coding my own home automation project called KitchenTouch.
That last thing is what I want to tell you about.
Here’s a bit of a history for this project.
KitchenTouch originally started as part of an anniversary gift for my wife, when I decided to install a tiny Win7 Home Premium HTPC for her entertainment in the kitchen. For the curious ones the HTPC is the Acer AspireRevo 3610 with dual-core Intel Atom, Nvidia ION graphics and 2Gb of RAM. If you want more details on the Revo system check this very good site called RevoHTPC by James “Motz” Montemagno.
I started thinking of how to customize that system and make it easier for my wife to use. Taking into account the kitchen environment and possible usage patterns, I realized that keyboard and mouse were impractical controls while cooking. Therefore I decided to look into touch options. I acquired a touch-screen monitor for that system and started looking into available user interfaces. Alas, all products I could find were either too sophisticated (complex and difficult to use) or didn’t provide the features I was looking for. So, naturally I decided to write my own. :)
I had limited time on my hands (around 2 weeks before the event), but I really wanted to learn a new programming language – C#. I set off to quickly learn C# while doing something useful. Thus, KitchenTouch was born! I really didn’t have the time to plan the project through properly, but I had a general idea of what I want to achieve. Some features were written and re-written several times, layout was constantly changing as I was testing the program’s usability. And I expect it to change in the future as I go ahead with new features.
- Create a simple, touch-friendly user interface where most of the tasks could be completed in 2-3 clicks/touches.
- Primary input should come from the touch, so an easy-to-use software keyboard should be implemented.
- Allow the GUI to be skinned.
- Provide customization of features (modules) and options within these features (avoid hard-coded links, etc.).
Modules supported / planned
- Easy to see and always available time/date display;
- Picture frame (slideshow);
- Cameras pane for CCTV and remote Webcams (convenient to keep an eye on the kids and check traffic in the morning);
- Internet browser for quick searches (Google) and up-to-date news (Facebook, Twitter, CNN, etc);
- Music player for local and streaming sources;
- Cookbook for quick recipes lookup (possibly with a timer and pictures);
- Lighting status and control (I primarily target X10 and INSTEON systems);
- Security system status and control;
The screenshots are available in Picasa.
- Windows XP SP2+, Vista, Win7
- .Net 3.5 runtime
- Display with 800×600 or higher resolution (1024×768 recommended)
- same as above, plus
- MS VisualStudio 2008 with C# language support
This project is a free software developed under GNU Lesser General Public License (aka GNU LGPL).
Please see http://www.gnu.org/licenses/lgpl.html for details.
Icons by Axialis Team (http://axialis.com)
For now there are no binaries (aka Setup/Installer) to download, but the full C# source code is available for anyone interested from http://kitchentouch.codeplex.com.
Let me know if you want to see photos of my kitchen HTPC set-up and I’ll post them here. Stay tuned for updates to this project — follow me on Twitter (@rusgrafx).
I’d also like to get feedback from C# developers, as this is my first project in this language and I’m sure there is a lot of code that could be improved.