The idea is to run several small and cheap wired or wireless networks connected to a small, embedded and IPv6 capable computer like a Fonera running OpenWRT or a Dockstar running Debian. These computers then provide an IPv6 capable interface to the nodes attached to them. Every node gets at least one unique address in the sub net associated with this master computer.

The wired network is based on a RS485 bus. It is a single master bus. The node at the master acts as the bus master which periodically polls other nodes for new messages. Nodes can set a preferred polling interval which is submitted when they send their discovery packet. The bus master then tries to poll the node at the given interval. This is useful to lower the load on the bus which is used to poll the nodes for new messages. A node which handles user input like a light switch should request a lower polling interval than nodes which just gather sensor data like temperature sensors or actuators like lamps or power outlets.

The current implementation reserves 10% of the time for polling other nodes. The nodes can request a polling interval in multiples of 30ms which is the minimum polling interval supported.

Idea: Compare with implementation by jolly: http://home.eversberg.eu/simp.txt Jolly does not have source dest mac, as he thinks of a single master, which sets a master-flag so the slave knows if he has to listen (master flag set) Maybe, we can combine the ideas. (luja)

The wireless part is done using cheap RFM12 modules operating at 433MHz. The system uses a CSMA/CD approach using random back offs when the medium is busy. In general the wireless network is less reliable than the wired network.

The current implementation can be found in the svn repository in the uberbus project.

svn co https://brezn.muc.ccc.de/svn/uberbus

Firmware

trunk/firmware/lib contains the current implementation if the uberbus library for avr devices. It supports a single master RS485 bus and a CSMA/CD wireless network. The firmware is capable of switching from a slave mode to a master mode to pose as the bus master. The code can be compiled to include either one or both of these modes.

trunk/firmware/moodlamp-rf contains a sample application which can run as a slave on the wireless or wired bus and can switch to the master role to control the bus when attached to a host computer.

  • uberbus/node_development.txt
  • Last modified: 2021/04/18 12:35
  • (external edit)