One feature of my home automation system is Google Calendar integration.
What this enables is two things: (i) the house can record what happened
on the calendar so I can see at a glance what's been going on back home
and (ii) the ability to put events on the calendar for the house to do
certain things.
For
example, we recently bought some new baby chicks and they need to be
kept warm at light. An infra-red lamp in the chicken house is connected
to an X-10 controlled outlet (behind a GFCI, of course since this is
outdoors). The device that controls that outlet is called "Chicken
lights" but also has several shorter aliases (e.g. "Chickens"). Using
the home's natural language engine that outlet can be controlled
remotely by the chat interface, by the email interface, by the voice
interface or by the calendar interface.
In this case, a simple recurring event on the calendar to turn the light
on every night for 9 hours is sufficient and I can set the recurring
event to stop after a few weeks because by then the chicks will no
longer need it.
This complete integration of Calendar and Natural Language Engine
functionality certainly makes for a very easy way to control and monitor
a smart home!
I've been working on home automation for over 15 years and I'm close to achieving my goal which is a house that understands where everyone is at all times, can predict where you are going next and can control lighting, heating and other systems without you having to do or say anything. That's a true "smart home".
An overview of the many sensors I've experimented with for home automation including my favorite under-floor strain gauge, through all the usual PIR, beam and contact sensors to some more esoteric devices like an 8x8 thermal camera.
One way to reduce the volume of sensor data is to remove redundant points. In a system with timestamped data recorded on an irregular interval we can achieve this by removing co-linear points.
Home automation systems need to respond to events in the real world. Sometimes it's an analog value, sometimes it's binary, rarely is it clean and not susceptible to problems. Let's discuss some of the ways to convert these inputs into actions.
Another super useful function for handling sensor data and converting to probabilities is the logistic function 1/(1+e^-x). Using this you can easily map values onto a 0.0-1.0 probability range.
In a home automation system we often want to convert a measurement into a probability. The ATAN curve is one of my favorite curves for this as it's easy to map overything onto a 0.0-1.0 range.
An if-this-then-that style rules machine is insufficient for lighting control. This state machine accomplishes 90% of the correct behavior for a light that is controlled automatically and manually in a home automation system.