Locally Made Pebbles

The Pebbles project is about control of the device-rich architecture of the future. However, right now, there are not many suitable devices one can purchase in the store. Therefore we needed to construct a variety of examples of the sort of devices we expect to see.

This web page contains pointers to each of the locally made `Pebbles'. These are part of our experimental infrastructure. Our main research is into generating scripts to control these example devices.

These Pebbles are controlled either with UPnP or simple XML RPC and they describe themselves using WSDL.

Warning - these links are all under construction at the moment.

Software Pebbles

  • Piggy Bank

  • Radio Data System

  • Speech Synthesiser

  • RSS Feeder (Robinson)

  • WSDL to Pebble Compiler (Robinson)

    Hardware Pebbles

  • Pebbles Heating Controller.

  • Alarm Clock

  • CD/DVD Player

  • Tuner

  • Media Server

    Remote Control Application

    The following tiny Pushlogic bundle is sufficient to control the CD/DVD player from a workstation. To use this bundle, you must currently know and hard-code the IP address of the remote player and then load the bundle into the GTK/GUI version of a Pushlogic interpter running on the workstation. This bundle mirrors the transport controls and the display.

    def bundle cd_remote_control()
    {
        pebble remoteplayer = "tup://169.254.224.76/parts";
        sort sort cdkey_t = {stop : ffwd play pause rwnd}; 
    
        // Local GUI widgets
        input panel#cmd : cdkey_t;
        output panel#display#track : {0..99};
        output panel#display#sec : {0..59};
        output panel#display#min : {0..99};
    
    
        // Remote tuples in the player
        output remoteplayer#cmd : cdkey_t;
        input remoteplayer#mech#stat#track : {0..99};
        input remoteplayer#mech#stat#sec : {0..59};
        input remoteplayer#mech#stat#min : {0..99};
    
        // Executable code - simply copies values in the appropriate directions
        if (^panel#cmd) remoteplayer#cmd := panel#cmd;
        panel#display := remoteplayer#display;
    }
    
    The if
     (^panel#cmd) 
    guard is required to make this bundle consistent with the internal app in the player that is also controlling the cmd field.
  • Up.