The uberbus is a home automation project of the muccc. It is based on IPv6 to provide a future prove interface to the system.
The bus is based on nodes of which every one has a unique IPv6 address in the local network. A node can provide multiple services. For example some switches which provide inputs to the system can be coupled with a display which provides feedback to the user.
These services reside on a port determined by the class they are part of. All services are available via UDP and TCP sockets. This with UDP having less overhead and TCP being more reliable. Yet the service may choose to restrict certain actions to a protocol.
The nodes them self do not act on other nodes in the network. They only gather information or execute commands. The logic defining the systems behaviour resides on other computers in the network. They can choose to listen to one or more nodes, process their data and send commands to these or other nodes in the network. This logic does not have to reside on a single program or computer in the network.
The system can also be connected to the Internet via firewall protecting the nodes from malicious commands. If the local network can also not be trusted a firewall has to be set up between a protected home automation network and the local network.
The following diagram gives a short overview over the system:
Making It Cheap
A full blown IPv6 stack with Ethernet or WiFi connection needs a lot of hardware. The uberbus is designed to be easily run on small 8bit micro controllers which connect to a single device which provides the Ethernet or WiFi connectivity.
This device can be a small WiFi router running OpenWRT available for 30 to 50 Euros.
The actual nodes connect to this bridge using RS485 or cheap 433MHz wireless modules. Such a node can be built for about 10 Euros.
The following diagram shows this setup:
Making It Dynamic
To help the users access the bus every uberbus node publishes its name, address and services via Avahi/MDNS. This makes it possible to search the network for uberbus nodes and give the user a overview of the network.
To do this every node has an ID which is composed of a name and and a domain making the ID unique. The name is the used to announce this node in the network.
For example an application could search the network for lights and present the user with a list. This needs no further configuration of the network and allows to add new nodes without changing any configuration.