- Posted by sondreb on October 9, 2006
-
One of the things that intrigues me with robotics and home automation in regards to software development, is the way things are more clearly defined and boundaries are very clear, compared to business or consumer software.
Doing business software often involves a lot of unknown factors which often are not clear until far into the development cycle. Requirements and functionality are often non-logical to a software programmer, and software are to often tweaked toward existing business models and processes.
While many (companies) strives toward a better future with service orientation in their business software, this is a process that takes time and is very exposed to some of the non-logical requirements from physical business processes that have been implemented in the organizations.
Service orientation in the field of home automaton and robotics is not as exposed to these problems. It is a lot easier to clearly define and build services that wraps easily understood physical concepts and products.
Take for example a lamp that is connected to an X10 switch. If it supports dimming you might have a integer value from 0 (off) to 100 (full) that controls how much light it should produce. You can easily write a HTTP based service for this, either using REST or SOAP protocol. When you have done so, you can forget about that service. The requirements doesn't change, the business processes does change and inflict change in the service. The service implementation will be very stale, which is exactly what we want in a service oriented architecture.
When you have implemented service interfaces for some of your home appliances, you can begin the orchestration of your home to make it intelligent. If a person wakes up at 3 am the light should only be turned on with a value of 10%. You've obviously woken up in the middle of the night, perhaps by a nightmare :-)
As the same person wakes up at 8 am, the light should maybe turn on to 80% as it's time to wake up and get ready for work.
I'm currently implementing a Web Service that allows me to remote control my Windows Media library from my mobile phone or my laptops. The service allows me the list my music albums with album arts and everything, and I can either playback the media on my local device, or tell it to play it directly on my Media Center PC which is hooked up to the stereo system.