Go to Table of Contents

ACCORD Tangible Toolbox User Appendix

Introduction

This document is meant to provide a bit more information about the system as well as providing brief information on what supporting services (needed to run some of the transformers) are included and how to start them.

Overall System Structure

Our developed toolkit is based on a shared dataspace, a TupleSpace called Equip. It allows us to share components, their properties and links between these properties. A set of configuration facilities exists to modify the arrangement of components and the links between these - the editors.

Once properties associated with transformers have been placed in the shared dataspace they become available to users. Transformers are linked together by binding the various properties together. Essentially, two properties of the same class (e.g. text, id, URL) can be bound together and whenever a property value changes all of the properties bound to that property change. This allows the chaining together of transformers. In order to compose arrangements of transformers needed to link devices the toolkit currently provides a few different initial ways of binding properties together, one of which is the Jigsaw Editor. Read more about transformers in the Understanding and Using the Tangible Toolbox deliverable.

The jigsaw editor uses a screen based graphical display. On the upper part of the screen the editor shows the currently available transformers, each represented as a jigsaw piece. These are dynamically updated whenever a new component is shared within the data space. On the middle part of the screen is the workspace where different transformers are linked. By attaching the transformer representing the kitchen cupboard to the SMS sender transformer, an SMS is received each time a grocery is missing in the cupboard. The internal change of a property, is highlighted in the jigsaw piece thus the user gets a view of the activities within the home. Read more about this editor and three more in the Understanding and Using the Tangible Toolbox deliverable.

Also, some of the transformers require external services - for instance, our implemented SMS sending transformer requires a 3rd party mobile phone controller software running on a machine with a mobile phone connected through a serial port.

Equip

The core of the component transformer model is a shared data space platform that allows information to be shared across a range of different devices. The platform used to share this information is called Equip. The EQUIP platform provides an active distributed real-time data sharing platform that supports the sharing of arbitrary data among heterogeneous distributed applications. This embraces applications written in both C++ and Java and allows applications to make selected information available to other applications through a standard set of simple interfaces. Once internal application data has been made available to the platform updates and alterations to the shared state are propagated to all interested applications using EQUIP. The platform extends work on tuple spaces and shared virtual environments to provide an active shared state infrastructure that is equally accessible from large virtual environments and small handheld devices. Read more about Equip at Chris's Equator Pages.

For running the ACCORD system there are three main processes which are started by the equip_services.bat file (as explained in the Quick Start starting). These are the

Services

This chapter covers how to run the included support services implemented during the project. Most of them rely on external hardware/software/web services and are therefore supplied as is, hopefully easily modified for other hardware/software.

Blog Poster

This is an API client to post to Movable Type blogs.It includes methods for posting files locally to the blog. It uses MovableTypes MetaWeblog- and Blogger-supporting XMLRPC API. This is currently used by the BlogPublisher (javadoc) transformer. This is just a support class, nothing needed to be started.

Bubble Tower

The ACCORD project used a bubble tower (see picture in Understanding and Using the Tangible Toolbox deliverable) as an ambient display device. Included is java source for a TINI microcontroller receiving commands via a socket, which controls some digital output pins on the TINI. These have been connected to relays controlling the air pump and three (red, green, blue) light bulbs (electronics done by SICS, not available commercially as far as we know).This is currently used by the BubbleTower (javadoc) transformer. Included is a also a binary (.tini) file ready for download to a TINI. See TINI site on how to get it up and running.

GSM SMS deamon

To create an SMS bridge (used by the SMSSend and SMSReceive transformers), a server called gsmd.tcl was written (requires tcl). It uses the gnokii tools to control a mobile phone via serial cable. For additional gnokii requirements, see the gnokii documentation.

To start the server on the machine with phone/gnokii, type gsmd.tcl in the accord/apps/services/gsm/ directory (for optional parameters, such as specifying serial port, type gsmd.tcl --help).

MoreOver News

To browse categorized news articles from the web (used by the News transformer), there is a java application called MoreOverCache which retrieves the categorization data from MoreOver. This data, a cache, is then used by the News transformer.

To generate the cache on the machine which will run the News transformer, run cache.bat in the accord/apps/services/news/bin/ directory (this .bat file contains the path to where the news cache is generated).

Pocket Display Client

A minimal web browser for PDAs, capable of displaying text and images (used in conjunction with the PocketDisplay transformer) is available as java 1.1 application receiving URLs via a socket from PocketDisplay transformer.

How to run the PocketDisplayClient depends on platform and jre. Within ACCORD, PocketDisplayClient has been run on PocketPC2002 os on an ipaq 3650 with the Joede Java Runtime. This involves installing Joede, and then copying ipaq_app.jar file to the ipaq (in our case, the My Device/accord directory) and creating a start link simliar to the pdclient.exe.lnk (changing the ip address and port number arguments in this file to respond to that of the computer running the PocketDisplay transformer) which in our case was copied to the My Device/Windows/Start Menu ipaq directory.

Web server traffic watching server

A tcl server watching a web server traffic log file has been used in order for the SICSWebHits transformer to publish webserver hit data it retrieves via a socket from this server.

To run the server, run the log_watch.tcl in the accord/apps/services/webwatch/ directory (for additional arguments, such as log file path, run log_watch.tcl --help).

Transformers

For completeness, here follows a list of all implemented transformers with a brief explanation. These have been coded during different stages of the project and have not necessarily used the same conventions, even though this has been our intention.

no icon

AddToList
AddToList takes an element string and adds it to the list it publishes into the data space. For further detail, see the AddToList javadoc and all help classes javadoc.

no icon

BlogPublisher
BlogPublisher takes a text string and publishes the referred content to a given webblog. Text can take the format of urls, in which case the url content is fetched and delivered as a media posting to the blog. For further detail, see the BlogPublisher javadoc and all help classes javadoc

no icon

BubbleTower
BubbleTower takes bubble command strings and sends them to a micro controller controlling bubble tower. For further detail, see the BubbleTower javadoc and all help classes javadoc

no icon

Camera
Camera controls a webcam which takes snapshots. When triggered, it publishes a URL to the photo. For further detail, see the Camera javadoc and all help classes javadoc. Requires Java Media Framework.

no icon

GroceryAlarm
GroceryAlarm generates names of missing groceries in the cupboard. It detects groceries moving in and out and if one is away more than 30 seconds it is said to be out. For further detail, see the GroceryAlarm javadoc and all help classes javadoc

no icon

HallwayTable
Keeps track of rfid-tagged items. Publishes a readable string and an id number of the current item. For further detail, see the HallwayTable javadoc and all help classes javadoc

no icon

KitchenTableDisplay
KitchenTableDisplay controls a web browser via a set of commands and can also display web pages by giving the URL to it. For further detail, see the KitchenTableDisplay javadoc and all help classes javadoc

no icon

MailReceive
MailReceive takes a mail preference string as input and outputs "To", "From", "Subject", and "Body" strings of new incoming emails. For further detail, see the MailReceive javadoc and all help classes javadoc

no icon

MailToBubbles
MailToBubbles listens to email "To" and "Subject" string properties and for each change the new values are converted to a BubbleTower command string. For further detail, see the MailToBubbles javadoc and all help classes javadoc

no icon

Motion
KitchenTableDisplay controls a web browser via a set of commands and can also display web pages by giving the URL to it. For further detail, see the Motion javadoc and all help classes javadoc

no icon

News
News takes a news command string and a profile string, and outputs a new URL to a new news web page. For further detail, see the News javadoc and all help classes javadoc

no icon

PocketDisplay
PocketDisplay works as a proxy, forwarding URLs via a socket connection to smaller Java1.1-capable devices running the Pocket Display Client. For further detail, see the PocketDisplay javadoc and all help classes javadoc

no icon

Reminder
Reminder presents a reminder input GUI, manages the reminder alarms, and publishes reminders as URLs when reminder is due. For further detail, see the Reminder javadoc and all help classes javadoc

no icon

SICSWebHits
SICSWebHits connects to a server checking the web log running on the web server, which sends configurable strings for every web access. For further detail, see the SICSWebHits javadoc and all help classes javadoc

no icon

SmartItsDefault
Transformer for outputting all values from sensors on the default smartits implementation. For further detail, see the SmartItsDefault javadoc and all help classes javadoc

no icon

SMSReceive
SMSReceive publishes phone number and message of last received SMS. For further detail, see the SMSReceive javadoc and all help classes javadoc

no icon

SMSSend
SMSSend takes a message string and sends this as SMS to the phone number supplied as an input string. For further detail, see the SMSSend javadoc and all help classes javadoc

no icon

Speech
Speech converts a text string into speech. For further detail, see the Speech javadoc and all help classes javadoc

no icon

TableCommands
Reads physical "shaker" objects and generates corresponding commands, such as NEXT, PREVIOUS etc. For further detail, see the TableCommands javadoc and all help classes javadoc

no icon

TextToWeb
TextToWeb converts a text string into an HTML file and outputs the URL to it. For further detail, see the TextToWeb javadoc and all help classes javadoc

no icon

TimerGate
TimerGate copies input values to output on specified occasions. For further detail, see the TimerGate javadoc and all help classes javadoc

no icon

WebHitsToBubbles
WebHitsToBubbles listens to a web log string property and each time it is changed the new value is converted to a BubbleTower command string. For further detail, see the WebHitsToBubbles javadoc and all help classes javadoc

no icon

WebToText
WebToText converts the content of a URL into raw text. For further detail, see the WebToText javadoc and all help classes javadoc