The newest part of the system is the conversational interface. What can it do? Client access to this interface is provided by a new chat dialog included in the smarthome server and is modeled to look like a typical instant messaging system, but instead of chatting with another user, you chat with smarthome. I also have a web based chat interface for access from the Internet. I can also send email to the system which upon authentication is passed to the conversational interface, processed and a return email sent with the responses. The big limit there is that each sentence currently has to be on its own line. I could remove this restriction but it's not a high priority - as long as I can send an email "Please turn on the outside lights." and have it work I'm happy for now even if it has to be on one line. To find out more about how the Chat Server function is implemented, go to ChatServerInternals.
If you ask smarthome "Is it raining?" it is the Brain which handles this question, checks the conditions at the weather station on the roof and gives you the correct answer. Likewise for commands like "Please turn off the garage light." The Brain performs the requested action and then responds accordingly. The really nice thing is that the system knows which chat interface a request was made from, so the Brain can use this information to determine the correct action. If you ask "Please turn on the light." the Brain can determine which room you make the request from. It then checks its database to determine which are the preferred lights in that room and turns them on. If you command "Please turn on the lights." then it turns on all of the lights in your room. You can always specify which location you want to act on if it is not the room you are in, for example "Please turn off the outside lights." I have also provided queries for the weather forecast so you can ask smarthome "What's the forecast for tomorrow night?"