JeeBus is a distributed software switchboard for environmental monitoring and home automation.
Status, Apr 2011: pilot version done, next version not started yet.
JeeBus lets you collect and view information about your home to keep track of events and sensor readings. Data can be collected in a database and their trends can be viewed as graphs. JeeBus lets you control lights and appliances through remote switches, and use sensor events to trigger actions, for example to automatically close the curtains whenever darkness sets in.
Everything is based on a simple model: a set of "states" represents the current knowledge about the home, with devices for sensing and control defined (by the administrator) to connect to the outside world, and rules added (also by the administrator) to automatically take action, triggered by changes in these states.
JeeBus operates as a collection of subsystems, including a web-based Control Center, a Rule Engine, and a Database Server. Each subsystem is self-contained and can be added or removed without taking the rest of the system down. The different subsystems communicate over a networked shared "bus", and can run on different computers if needed. The only required subsystem is the Bar Master, which coordinates bus activity and keeps a persistent copy of the state.
There is a plugin mechanism to access various hardware interfaces, for picking up data from sensors and to control external devices. These plugins can be added and replaced on-the-fly to let JeeBus recognize new types of devices. A few simple plugins have been created, including one to connect to a JeeLink with wireless sensor nodes.
The JeeBus software combines three different programming contexts:
- The ubiquitous mix of HTML, CSS, and JavaScript is used in the web browser. Ajax and long-polling are used for real-time responsiveness, with jQuery and jQuery-UI as core JavaScript libraries, and Flot as browser-side graphing package.
- Tcl is used for the web server (based on Wibble) and the other main subsystems in the core (the IPC is based on Tequila). The Tcl runtime uses JeeMon (which in turn is based on Tclkit) and provides platform-independence across Windows, Mac OS X, and various Linux'es.
- C/C++ is used on the embedded hardware and physical computing side of things. The C/C++ embedded hardware uses JeeNodes (based on ATmega micro-controllers and compatible with Arduino's) and the Arduino IDE to compile and upload their firmware.
Current status - Feb 2011
The JeeBus project was defined as research project in the summer of 2010, and has been used as starting point for a student project team from the Department of Information and Computing Sciences at the Utrecht University in the Netherlands (a quick bike ride from JeeLabs, very convenient). This project ran from Sept 2010 to Jan 2011 and has now been concluded - the result is a pilot implementation of JeeBus called JeeBus 2010.
As agreed at the start of the project, JeeBus 2010 is being released as open source software (using the MIT license). JeeBus 2010 implements most of the features described above, with emphasis on core functionality, i.e. early but working implementations of the Control Center, the Rule Engine, and the Database Server.
A second area of interest in JeeBus 2010, was to explore some actual interfaces to different devices. An interface to an electricity meter was designed and built (for Ferraris "wheel" meters and blinking-LED readouts), as well as a "Front Door Device", consisting of an interface to a doorbell, mailbox, outside door light, and RFID tag reader, plus a wirelessly controlled small graphics display unit, controlled and read out via plugins in the JeeBus software.
See the JeeBus 2010 project area for details.