SwissQM is a stack-based Virtual Machine for wireless sensor networks.
It was created at the Department of Computer Science at ETH Zurich.
SwissQM is an acronym for Scalable WirelessSensor Query Machine.
SwissQM defines a bytecode instruction set that is independent of
sensor platforms and application languages. Traditionally, sensor
networks are programmed using low-level languages such as
nesC on systems such
as TinyOS. This is, in general,
difficult because the programmer needs to take care of many
low-level details, that even vary between different platforms.
Creating bytecode rather than nesC code increases
the abstraction level of programming sensor networks. In combination with
a gateway system that accepts programs and queries written in a high-level
language and translates them into bytecode,
programming of sensor networks can further be simplified.
SwissQM is a flexible platform for programming sensor networks and
data acquisition tasks. SwissQM allows:
Event-processing at the sensors nodes
Implementation of data-cleaning pipelines
Finite state automata at the sensor nodes
Pushing down complex processing functionality
all the way to the sensor nodes
User-defined functions
Turing-complete programming model
Programming sensors networks using different
high-level language front-ends
Sensor Node Platforms
Xbow Mica2 (no longer actively maintained)
Moteiv tmote sky
SwissQM Version 2.0.0 Download (June 2nd 2008)
Changes
SwissQM Virtual Machine
Implementation on top of TinyOS 2.0.2
Tuple combining for non-aggregation queries
Lazy tuple forwarding using tuple deadlines
Result propagation through CTP Tree Collection Protocol
Optional: fixed Tree Implementation for testing
Based on a modular global time synchronization protocol,
decoupled from result messaging layer
SwissQM Gateway
Reimplementation into modular OSGi components and services.
This makes the system extensible and perfectly suitable
to be used as a research platform.
Query compiler for CSQL and XQuery
User-defined function (UDF) parser for C language subset
Different interface adapters to gateway: R-OSGi, Web services and Java API
Tuple Sink mechanism detaches tuple receivers from queries.
Multiple sinks can subscribe to a query result stream.
SwissQM control user interface as Eclipse plug-in allows submission
of Queries, UDFs and registration of tuple sinks
Download
Available for download are the SwissQM virtual machine running on the sensor nodes
and a gateway software for using SwissQM without having to program in
bytecode.
SwissQM OSGi Gateway
Version 2.0.0.
Consists of SwissQM core, CSQL and XQuery parser, UDF parser and
bytecode generator and Eclipse plug-in. Note: the installation
of the Gateway uses R-OSGi and Maven
as a build tool. Setting up the Eclipse plug-in with its dependencies
is a bit intricate. For detailed instructions see the
installation guide.
Ubuntu Linux VMware image with
fully installed SwissQM environment (big!, 1.2 GB compressed, 3.7 GB
uncompressed) Contains: TinyOS 2.0.2-2 with patched
msp430-gcc, SUN JDK 1.5,
Eclipse 3.3.2, Maven 2.0.9, and run configuration for SwissQM Eclipse plug-in.
This VMware image can be run by the free
VMware Player. The image is identical to the installation obtained
when following the installation guide.
The VMware image is despite its size most likely the easiest and fastest
way to get started with SwissQM. Note: the name of the user set up
is swissqm (Password:
swissqm).
SwissQM Gateway (Java)
Version 1.0rc1
The gateway application consists of two graphical tools:
(1) Query GUI that allows submitting
of queries (similar to TinyDB).
The submitted queries are compiled into QM bytecode programs that are then
sent into the sensor network where they are executed by the SwissQM Virtual Machine.
(2) Bytecode Assembly Interface allows sending
hand-crafted bytecode programs (written in SwissQM bytecode assembly) into the
sensor network, thus providing full access over SwissQM.
In both applications results generated in the network are sent back
to the gateway for visualisation and logging into a database through JDBC.
Queries can contain complex expressions as well as user-defined functions.
These function are can written in a C-like language and are compiled into
the bytecode programs that are generated from the queries.
René Müller, Gustavo Alonso, Donald Kossmann:
A Virtual Machine For Sensor Networks
In Proceedings of EuroSys 2007, Lisbon, Portugal, March 21-23th 2007.
René Müller, Gustavo Alonso:
Efficient
Sharing of Sensor Networks
In Proceedings of the 3rd IEEE International Conference on
Mobile Ad-hoc and Sensor Systems 2006, Vancouver, Canada, October 9-12th 2006.
René Müller, Jan S. Rellermeyer, Michael Duller, Gustavo Alonso:
Demo: A Generic Platform for Sensor Network Applications
In Proceedings of the 4th IEEE International Conference on
Mobile Ad-hoc and Sensor Systems 2007, Pisa, Italy, October 8-11th, 2007.
(Best-Demo Award)
René Müller, Michael Duller, Gustavo Alonso, Donald Kossmann:
Demo: Bytecode and Virtual Machine for Sensor Networks
In European conference on Wireless Sensor Networks (EWSN 2007),
Delft, Netherlands, January 29-31st 2007.
!!! Dieses Dokument stammt aus dem ETH Web-Archiv und wird nicht mehr gepflegt !!!
!!! This document is stored in the ETH Web archive and is no longer maintained !!!