The openHAB (open Home Automation Bus) has now reached version 1.0 after two and a half years in development. The 1.0 release takes a very different approach to the commercial home automation offerings, and not just by being GPLv3 licensed open source. Being open source though does allow it to be easily extended beyond the mainstream automation tasks of switching lights, activating plug sockets or moving blinds. Of course users will need to purchase and install the light switches, smart sockets and automated blinds themselves.

OpenHAB is hardware and protocol agnostic allowing different bus systems, hardware and interfaces to work together through bindings which allow commands and status to be passed over openHAB's event bus. This abstraction means that a much wider array of devices and software can interact. For example, among the available optional bindings is support for the home control standard KNX.



openHAB helping out monitoring power generation and consumption

Source: Kai Kreuzer OpenHAB itself is developed in Java and built as a modular system based on OSGi, specifically using Eclipse Equinox, with a Jetty web server. The web server provides a selection of web interfaces for interacting with the system as well as a rest API. Users can also use a native Android client (4.x and later) or iOS client (iPhone, Touch or iPad) to communicate with the server. OpenHAB can also use iOS push notifications with the iOS client to alert the user to specific events.

The server can be communicated with through the XMPP protocol allowing users to "chat" with their home over Jabber or Google Talk. Using Google Calendar, users can set events for their home automation system which are picked up by the server and acted upon. OpenHAB also supports having its configuration, control and log files stored in Dropbox, the file synchronisation service, allowing settings to be changed remotely and logs to be viewed from anywhere.

Time controls and more complex scripts are written using a domain specific language created using Eclipse Xtext. The developers have found graphical tools and drag and drop systems inherently limiting, so by using a compact text-based language, they can express more complex logic in a more coherent way. Using Xtext to develop that language allows users access to a syntax highlighting, content assisting IDE for the language. This functionality may not be of immediate use to the average home automation user, but professionals configuring a system will find it immensely empowering.

(djwm)