07/01/2009 Projects at University of Duisburg-Essen (Pervasive Computing) use the EIToolkit, e.g. for the CARS driving simulator CARS
01/19/2009 More information in the PhD thesis of Paul Holleis
03/01/2007 Updated to new Particle library version
01/03/2007 Started adding support for Keystroke-Level Models
12/03/2006 Added support for OSC
10/17/2006 Started adding an Eclipse Plugin using toolkit functionality
10/12/2006 2-way commuunication with Particles
09/21/2006 Fixed naming problems and tackled WinSock2 issues
07/26/2006 Added support for serial communication
05/03/2006 RTP support added
04/12/2006 Documentation page added (EIToolkitDocumentation)
02/03/2006 First version of TCP tunnel to break UDP subnet barriers
12/15/2005 The EIToolkitWorkshop has passed and brought with it interesting results
11/30/2005 Registrations processed and schedule of EIToolkitWorkshop on-line
09/28/2005 EIToolkitWorkshop in Munich announced
09/12/2005 Wiki goes online
09/07/2005 First specific ideas for architecture. Preliminary implementation of some stubs.


The EiToolkit is meant to be a generic platform combining devices and implementations with a variety of different underlying technologies.

We are trying to design a high level infrastructure and architecture to cope with the diversity of input and output methods as well as inference algorithms and rule based approaches.

This includes technology that was either developed by contributors to the toolkit or with which the developers have worked with over longer periods of time.

The general concept allows so-called stubs that are responsible for enabling a certain technology or method for the toolkit. Their role is close to that of a proxy or driver communicating with a specific device. Applications can then use the collected data or the interface provided by these stubs to implement the semantics that uses the input and output methods that have been made available.

For a more detailed discussion of how to use the EIToolkit, look at the EIToolkitDocumentation page. Also see toolkitclasses.doc for a quick overview on the involved interfaces and classes.


Main Developers

Paul Holleis, Matthias Kranz, Albrecht Schmidt from the Embedded Interaction Research Group as well as several researchers from different universities and research labs.


Currently, the basic idea is similar to that found in the IStuff Toolkit. Resources (internal or external) are represented by proxy components ("Stubs") in the system. These can pass and receive messages through defined paths. In the moment, we are using UDP broadcasts. This architecture ensures that components are separated from each other, thus easily exchangeable and applications are as much independent from the implementation of controlling components as possible.



NEW (April 12, 2006): RTP support is being added using a C++ implementation called JRTPLIB. More information on its use within the framework can be found on the EIToolkitDocumentation page.


The toolkit will consist of
  • Libraries simplifying the use of communication listeners and senders
  • A library containing protocols for the data that is sent and received
  • Templates for stubs in several programming languages
  • Libraries to communicate with specific technologies
  • A library of available stubs and applications
  • Stub managers or managers helping to pass information between different subnets etc.


The location of the SVN is

If you want access to the svn, write an email to PaulHolleis

General toolkit stuff
The place for all applications
Stuff needed to communicate with devices in general (like a Listener interface)
Communication code for specific technologies (like /comm/particles)
General stuff for stubs
Subdirectory for stubs for certain technology
Code for generating proxy classes from interface descriptions
Proxy classes for each technology. Mimics the structure of the stubs directory
Any helpers for the implementation
Any seperate documentation

Technology Specific


A Particle-Communication library featuring
  • a listener at which you can register to receive events sent from (specific) particles
  • a method for sending data to (specific) particles

Mobile Devices like Mobile Phones








Camera or Projector Based



DataVis Working A container for independent visualisation components that can be used to visualise data sent through the EIToolkit
Tangible Skype Working Using a tangible device, in this case one of the displays with accelerometers, the user can alter his or her status in the Skype application by manually modifying (turning) the device.
Graphical Application Writer In work Applications a mainly concerned with reacting to incoming packets (events) and calling operations (generate outgoing packets). The application writer should provide: A visual component showing available inputs (event generating stubs) and available outputs (stubs with an interface including operations), a simple way to easily connect inputs to outputs and a means to specify rules, a program, conversions, etc. to be applied between the source and the sink.
Google Earth Control In work Using the keystroke stub it is quite straightforward to control Google Earth with a technology like Pin'n'Play.
Powerpoint Presentations In work This application uses a tangible device (a particle using accelermoters) to browse through your Powerpoint slides - one per left/right, 5 per forward/backward movement.
TCP Tunnel Prototype This application enables data transmissions over the boundaries of local subnets to other interested researchers. Connects subnets.


Keystrokes Working Can interprete UDP messages and accordingly generate keystrokes on the host machine.
Particle Display Prototype Control a small display connected to a particle.
Skype Status Working Control the status in Skype.
Winamp Working Control the basic features of Winamp.
MIDI Input and Output Working Control a MIDI device.
Steerable Projector In Work Control a steerable projector.
Cube In Work Control arbitrary applications using cubes.

Some Open Issues

Format of Messages Passed

We should investigate the way messages are encoded. One promising suggestion is OSC (

Currently messages are passed in this format (colon (":") as separator):
The ID (currently just some name like "Particle_Display_0_0_1")
The type of the message. Control messages start with "CTRL_".
"*" or any data, currently it is best to send data as strings
"*" for broadcast or the ID of the receiver (see senderId).

For all fields: The underscore character ("_") is used as a separator inside each field (like in "particle_2.229:cube_accel_xy:123_432:*"). The slash might be a better option ...

Passing Packets Beyond Subnet

There must be a mechanism to enable UDP packets being sent to different subnets. This implies having a tunnel using, e.g., TCP. There probably must be a hierarchical approach of managers that know about local and remote clients and pass messages between them.

3D Description

We plan to integrate a more or less detailed description of the settings, shape, etc. of devices contained in the system. This helps developers to incorporate those into their applications, being able to use this information like, e.g., relative location of sensors contained in one package.

  • What properties should be described?
  • Where is this information located?
  • Which description language should be used, VRML, X3D, ...?
  • How can this information be visualized and used within applications / the toolkit?

-- PaulHolleis - 13 Aug 2005

Topic attachments
I Attachment Action Size Date Who Comment
toolkitclasses.docdoc toolkitclasses.doc manage 41.0 K 23 Jun 2008 - 09:21 PaulHolleis An overview of interfaces / classes of the EIToolkit
Topic revision: r25 - 11 Feb 2010, PaulHolleis
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Medieninformatik-Wiki? Send feedback