My idea was that code written in Prolog would make a great central "brain" for a home automation system, and it has worked very well! My Smarthome system is a distributed system running on a combination of Windows and Linux machines, with all the components implemented as modules which are currently connected via CORBA. I can move modules from machine to machine while the whole system keeps running. The system isn't just designed to be a fancy remote control for devices (although it does do that), it's also designed to collect information and deliver it to me in useful ways. A secondary goal of the system is the educational spinoff - techiques I've learned and developed while working on Smarthome have often become useful at work.
This is the architecture of the system as it is working right now.
Click on a link below for a description of a component (more will appear as I document them).
SmarthomeServer, SmarthomeServerHistory, ChatServer, ChatServerInternals, ChatClient, TheBrain
original smarthome (circa 1995), first smarthome server (1998-2002)