The 52°North Sensor Platform Framework was developed as part of Matthes Rieke's Diploma Thesis 'Entwicklung eines Frameworks zur Anbindung von Multi-Sensor-Plattformen an das Sensor Web' in Geoinformation Science at the Institute for Geoinformatics of the University of Muenster (Germany). The intention of this work is to ease the integration of (mobile) sensor platforms into the Sensor Web. Thus the framework makes use of proofed concepts of the OGC community like SensorML, Observation&Measurements, GML or SWE Common.
For up-to-date information, releases and HowTos please visit the Sensor Platform Framework Twiki page.
The main goal of the framework is a high reusability factor. This is achieved by a plugin-based architecture (see figure 1). Sensor platforms as data sources can be integrated by realizing the Input-Plugin interface. Output-Plugins form an extension point for data processing and provision/supply. An additional interface for data processing components activates complex computation capabilities (e.g., SensorML processes).

A short overview of the built-in features of the framework:
Framework GUI:

The framework comes besides the textual part of the Diploma Thesis with a complete Javadoc-API-Documentation and a few examples.
Implementing an Input-Plugin is pretty straight-forward. Your Java class only needs to implement org.n52.swe.ifgicopter.spf.input.IInputPlugin (included in the SPF API release). In particular, the method getConfigFile() must provide an InputStream holding the xml-encoded description of the plugin.
Hence the two steps to implement your own Input-Plugin are
You only need to implement/extend the following classes:
In order to get the framework into using your newly created plugins you have to include the qualified names to the Frameworks configuration.
The configuration file is located at spf-directory/config/spf.properties and looks like the following listing.
### Semicolon seperated list of classes implementing org.n52.swe.ifgicopter.spf.input.IInputPlugin IOutputPlugins = org.n52.swe.ifgicopter.spf.output.FileWriterPlugin(| ) #IOutputPlugins = ### Semicolon seperated list of classes implementing org.n52.swe.ifgicopter.spf.output.IOutputPlugin IInputPlugins = org.n52.swe.ifgicopter.spf.xmlrpc.XMLRPCInputPlugin(config/spf/xml-rpc-sample.cfg) #IInputPlugins = ### Semicolon seperated list of classes extending org.n52.swe.ifgicopter.spf.data.AbstractDataProcessor AbstractDataProcessors = org.n52.swe.ifgicopter.spf.data.UnitConverter ### class extending org.n52.swe.ifgicopter.spf.data.AbstractInterpolator AbstractInterpolator = org.n52.swe.ifgicopter.spf.data.LinearInterpolator ValidateXML = true
If your Plugin has a different constructor than the default one (with no arguments) you can or have to define String values (in braces, see example of FileWriterPlugin above) which are then passed to the constructor. Hence only String arguments are allowed for your custom constructors.
For releases and HowTos please visit the Sensor Platform Framework Twiki page.
The sources of the Sensor Platform Framework are divided into several sub-projects. All sub-projects are managed using Apache Maven 2.2.1. Instructions on how to use Maven can be found here.
The API can be used to write Input-Plugin, Output-Plugins, Interpolator-Implementations and complex data processing units.
The Bindings provide access to the used XML schemata (all compiled using XMLBeans) and some other mandatory dependencies.
The Core is the heart of the Sensor Platform Framework. Here the business model, the controller and the GUI are implemented.
This project holds several built-in Output-Plugins (CSV file logging, Sensor-Bus-connection).
Matthes Rieke, author of this software: