If the whole point of Smart Homes is to make lives easier, then what is the right approach? This problem is more philosophical than technical, so a philosophy must be established and a set of rules erected and strictly followed.
1. Never take away what's already convenient for a gimmick. Case in point: Phillips Hue. In order to use the "smart" features on the bulb, the physical light switch must be on all the time. Users are forced to buy a other switch (unnecessary and expensive), or use the Hue app (very slow). Phillips took away the speed and convenience of flipping a light switch for some gimmicks, and it is very frustrating.
2. Never make users plan what they will or should do at some point in the future, because nothing will go according to plan. This is why schedule and simple rule based systems cannot handle complex scenarios, and will often get things wrong, even if the intention is right.
3. Remote control is not smart. I can't stress this enough. Shipping a product that let's you do things on the phone and calling it smart doesn't solve any problems. It just add more things for the user to do.
The most important thing is to delegate as much scheduling, planning, rule making, etc. to a computer as possible, with very little human intervention, which means an A.I. of some sort is needed.
If we think of the A.I. as a young child trying to learn new things, then some methods of teaching can be adapted, namely:
- Show through action
- Learn from mistakes
Show through action is, simply put, pattern recognition. Humans like to form routines because it's an efficient way of remembering. However, we are going to add some complexity here: when we recognize a pattern, for example, the sequence of lights that are switched on and off, there are other factors that can have an effect as well: time of day, location before/after, number of people in the house, climate indoor/outdoor, etc. Hopefully, with the extra data, the A.I. will be able to read your intentions better, and therefore produce better effects.
Learning from mistakes is perhaps the fastest way to learn the right way to do things. If we give the A.I. some room for experimentation and make little mistakes that can be easily fixed, (for example, the A.I. can play with the room temperature around the temperature you set it to, to find the upper and lower limit of your comfort zone), then the A.I. can learn faster, be more adaptable, and produce better results.
In summary, keep things simple, and let a computer do all the work. After all, nothing is impossible in software.