The SenseNet is a system for collaboration among interactive artworks. The system is based upon the core idea expressed by the three words: sense / transform / express. The SenseNet is based upon UDP and ethernet networking and requires modest resources. The net allows the sharing of sense experience amoung a group of interconnected peers.
Sense / Transform / Express
SenseNet: Implementation
Using SenseNet
SenseNet: Requirements
SenseNet Internet Bridge
The flow of information in an interactive artwork can be modeled by the phrase sense / transform / express. The artwork gathers information from the outside world using various types of sensors (like video cameras, motion detectors, thermometers, etc) and transforms this raw information (with a computer perhaps) so that in turn it can, in some way, be expressed (the turning on/off of video monitors, the playing of music, etc). By defining boundaries between these stages it becomes possible for one artwork to share the sense information it gathers with other artworks. The Sense Net allows the sharing of information at the sense/transform and transform/express boundaries.
The SenseNet protocol requires that all sense types be assigned an ID (there are 65000 possible IDs) and that the values for those senses be expressable by a 32 bit number.
ID # | Description | Value Meaning |
01 | temperature | 32 bit value interpreted as signed fixed point with 3 decimals, value in degrees celcius |
02 | sound volume | 32 bit value interpreted as signed fixed point with 3 decimals, value in decibles |
03 | sound direction | 32 bit value interpreted as unsigned fixed point with 3 decimals, value in degrees, 0 = north |
... | ... | ... |
1025 | people in room | 32 bit value interpreted as unsigned integer |
etc |
Each packet of sense information consists of a two byte ID and a four byte value. A large number of sense types can be defined and made a standard. The first 1024 IDs could be reserved as standard IDs leaving the remainder as event specific IDs.
The SenseNet protocol consists of a few simple functions. The primary two functions are GetNextMessage() and SendMessage(). The SenseNet software takes care of buffering incoming messages, allowing the controller software to perform other tasks. The use of UDP alleviates the need for a joining or leaving mechanism; the use of ethernet handles packet collision and machine addressing. The standard use of SenseNet would consist of the following program flow:
//initize the net SnInit(); //local variable SnPacket aPacket; //loop forever while( TRUE ) { //do some stuff ... //look for sense net messages while( SnMessageWaiting() ) { aPacket = SnGetNextMessage(); if(aPacket.senseID == ID_I_LIKE) { //do something ... } } //do stuff ... //send some packets aPacket.senseID = ID_I_SEND; aPacket.senseValue = VALUE_FROM_SENSORS(); SnSendMessage(aPacket); }
The SenseNet requies a modest operating system that is capable of processes or threads. For embedded systems there are a number of small operating systems that can provide this. A number of PC/104 systems use a realtime extension to DOS which is simple. The Katix operating system might be useful. There are numerious other (non-free) examples. For PC class computers, it will be simple to port the SenseNet software to WindowsNT/Windows95, Linux and other unixes, BE OS, OS/2 and Rhapsody. Porting to Windows3.1 and Mac OS will be more work (because they do not provide pre-emtive multitasking).
The SenseNet Internet Bridge is a program that allows two SenseNet networks
to be connected across the Internet, sharing sense information.