Software Architecture

Domotic Abstraction Layer (DAL)


Unit Types


Location Architecture




More Details

Software Components

GUI Overview

Core Framework


Build Status Build Status

Maven Artifact



BCO Registry

Build Status Build Status

Maven Artifact



BCO Manager

Build Status Build Status

Maven Artifact



Developer Tools


Simulation Mode

You can test and prove new components in a simulated environment.

bco --simulate

Benchmark Mode

You can test new components via the benchmark mode to prove how your components act during massive bco system load. During the benchmark, bco will start in simulation mode and high frequenly unit state changes are generated.

Note: Please never start the benchmark mode if you are connected to any physical devices to avoid hardware damage.

bco --benchmark

User Interfaces

Desktop (JavaFX)




Used Libaries

Libraries from openBase

Libraries from Citec (University of Bielefeld)

Development Installation Guide - Ubuntu / Debian


Environment Setup

Define where to install the bco distribution via the prefix variable.

echo 'export prefix="/usr/local/bco"' >> ~/.bashrc

Add the bin folder to your global $PATH variable to support direct binary execution.

echo 'export PATH="$PATH:$prefix/bin"' >> ~/.bashrc

Reload your bash configuration

. ~/.bashrc

Make sure the $prefix folder exists.

mkdir -p $prefix

Make sure you have right permissions to $prefix

sudo chown -R $USER $prefix
chmod -R 750 $prefix

Create your working directory if it not already exists and change into these directory.

mkdir -p ~/workspace/openbase/bco

Repository Download

Download the core repositories into your development workspace:

cd ~/workspace/openbase/bco
git clone registry
git clone dal
git clone manager

If needed you can download the following bco repos as well:

cd ~/workspace/openbase/bco
git clone registry-editor
git clone bcozy
git clone bcomfy
git clone ontology
git clone ontology-lib
git clone openhab-binding-rsb

Further openbase projects bco directly depends on (only needed if you plan to extend those libs):

cd ~/workspace/openbase
git clone jul
git clone jul

Setup Cor-Lab Debian Repository

This repository provides a collection of precompiled libs and tools for rsb. This includes transport layers like spread as well as dev-libs for using rsb in python or c++. To register the repository to your local debian package manager follow the instructions on

Spread Installation

Spread is the recommended and most stable transport protocol for bco.

RSB Libs and Tools (Optional)

The rsb python and c++ libs can be installed via the cor-lab debian repository as well as the rsb developer tools:

sudo apt-get install librsc0.16 librsb0.16 rsb0.16 rst0.16 librsc0.17 librsb0.17 rsb0.17 rst0.17 cl-rsb rsb-tools-cpp0.18 rsb-tools-cl0.18

RSB Configuration

Create the configuration file touch ~/.config/rsb.conf and add the following lines to deactivate the socket and enable the spread transport protocol.

enabled = 0
enabled = 1
host    = localhost

If your bco runtime is hosted on another maschine than your local one and there is already a spread daemon running, just refere to this host instead linking to your local host.

#host    = localhost
host    = 192.168.x.x

BCO Installation

Before the installation you should checkout the latest-stable branch for the core components. Else you install a snapshot version and you need to configure your maven settings:

Now, you should be able to start the installation. During this, all bco core components are installed to the previously defined $prefix. To perform the installation (or update the components later on) execute the installation script in each downloaded repository.


Setup Registry DB

Download the example db into you development workspace

git clone

and install the db into your local bco distribution by executing:

cd bco.registry.csra-db

This installs the database in a read only directory. If you want to make changes you have to copy it to the var directory:

cp -R $prefix/share/bco $prefix/var/

How to start BCO

Provide a Spread Daemon

First of all we need at least one running spread daemon in your network to provide the communication between all distributed bco components. You can choose to start your own spread daemon or to connect to an already running instance.

Start BCO

You can start the bco runtime with the following command:


IDE Setup



Code Examples

This examples can be used as kick-off before jumping into the bco development. They pick up the basic functions like how to query, control and access any units.

Note: Please make sure spread and bco are started within your network before executing the howtos.

Java DAL Remote

For running any java examples you only need to include the dal remote dependency in your maven or gradle project description:


How to activate a scene

Request the unit"request the scene with the label \"WatchingTV\"");
    testScene = Units.getUnitByLabel("WatchingTV", true, Units.SCENE);

Control the unit"activate the scene");

How to control a colorable light

Request the unit"request the light unit with the label \"TestUnit_0\"");
    testLight = Units.getUnitByLabel("TestUnit_0", true, Units.LIGHT_COLORABLE);

Control the unit"switch the light on");
    testLight.setPowerState(PowerState.State.ON);"switch light color to blue");

How to observe a location specific reed contact

How to observe service state changes

Java RSB

How to observe service state changes

Python RSB

How to request, control and observe units