Tracker iRouter Project Wiki

What is the Tracker iRouter?

The Tracker iRouter is a service oriented orchestration for information transformation and exchange between network connected sensors and actuators.

The Tracker iRouter can run as a headless/keyboardless network appliance, as a feature in the Tracker BI Toolkit, or as a feature in a generic Eclipse desktop.

Acting as an user configurable, Information Router, the Tracker iRouter automates the arrangement, coordination, transformation, and management of information flows between information producers (example: physical sensors and user input devices) and information consumers (example: physical actuators, data loggers, user displays, and alarms).

Once configured for a specific use case, the iRouter becomes an information service provider to the end user - interacting with the third party network attached data acquisition devices, actuators, and sensors.

Need to interact with dozens of sensors and actuators? Consider the iRouter!

How does it work?

The iRouter is all about creating a network of services that move (and/or transform) information between external devices. External measurement sensors, user input devices, and actuators are treated as producer or consumer services. IRouter internal services provide the transformation and exchange functions.

Services are component (aka - plugin) based. External devices are adapted to the iRouter with proxy components, that connect to the devices via standard communication interfaces and protocols. Several off-the shelf components are offered for transformation and exchange services. Need to create custom proxy components for unique sensors or actuators? New components can be easily created and deployed to iRouter users via internetwork software repositories.

Adaptability is essential so each use case for the iRouter is configured in the field by specifying the appropriate type of service or services necessary and specifying component parameters to perform the required function. Multiple collaborating services are configured as intra-networked wire groups. When the configurations are saved all components are activated. Configurations are saved between reboots, so turning on the iRouter appliance or launching the Eclipse desktop will activate all configured collaborating wire group services.

Creating new components

iRouter components conform to the most widely recognized industry standard for services based components - "Open System Gateway Initiative - OSGi":http://en.wikipedia.org/wiki/OSGi_Specification_Implementations.

Each iRouter component implements and/or interacts with the several of the standard OSGi services:

  • Wire Administration
  • Configuration Administration Service
  • Metatype Service
  • Monitorable Service
  • Declarative Services

Any OSGi component offering the above standard services can be deployed to the iRouter and offer new functionality. See the following section on Standards for details.

iRouter is easy to administer

Besides standards the iRouter is all about presenting the user with a context for administering the components running in the iRouter.

Through the configuration tools and utilities provided users can :

  • create and configure iRouter proxy components to access network accessible data sources, sensors, and data acquisition devices,
  • create and configure components to perform specific functional tasks related to information acquisition and transformation,
  • configure wire groups to specify groups of collaborating services,
  • start or stop sevices,
  • import or export configuration data.

Hands off operation

But the best part is once the configuration is done the user can just ignore the above tasks - because the iRouter is already configured and running in the background as a service or as a network appliance.

Tracker iRouter Standards

General Introduction

Do you need a custom proxy to connect to a unique sensor or actuator? If your a programmer keep reading. If not contact Verticon professional services or point your favorite programmer to this website.


Okay your a programmer and you want to learn how to extend the iRouter. First let's start out with the working context.

Programming Context

The programing philosophy behind the Tracker products is simple:

  • Avoid lockins,
    • Language
    • Data
  • Stick to standards,
  • Open source the code,
  • Leverage industry best practices and tools.

Technical Context

Java as the language, OSGi the module system, and Eclipse as the tool chain and development community. Now the specifics.

iRouter is a suite of OSGi compatible service components operating in an OSGi runtime.

  • Wire Administration
    • Producer
    • Consumer Service
  • Configuration Administration Service
  • Metatype Service
    • Components offer a metatype document describing configuration
  • Monitorable Service
  • Declarative Services

Any OSGi component offering the following standard services can be deployed to the iRouter and offer new functionality.

OSGi

iRouter can run as a standalone Server appliance, within an Tracker Desktop or within a generic Eclipse Desktop. The Server and Desktops run different implementations of "OSGi Runtime":http://en.wikipedia.org/wiki/OSGi_Specification_Implementations :

Information Envelopes

iRouter component services interexchange compatible _envelopes_ of information. OSGi Envelope objects encapsulate a single immutable OSGi Measurement, Position or State. Each Envelope specifies the scope of information it encapsulates. Envelopes of information are compatible when the encapsulated content and scope names are the same.

Wire Admin Service

Conformance to the OSGi WireAdmin Service is what makes the Tracker iRouter an Information Router. Proxy and internal components must implement a Producer or a Consumer service or both to be an iRouter compatible component. Additionly all iRouter components must specify a wire group name property during service registration.

When a configuration is saved (activated) the iRouter infrastructure automatically creates the collaborative wire groups by wiring together all Producer and Consumer services offering compatible information envelopes and having the same wiregroup name.

Multiple independent Wire groups can be transforming and exchanging information at the same time.

Configuration Admin Service

iRouter components are configured with the OSGi *Configuration Admin Service*, which provides the component with it's configuration data. iRouter components must be:

  1. Configuration aware
  2. Declare the types of configuration data they will accept.

Declarative Services

The simplest and preferred approach to create an iRouter component that is configuration aware is to specify the component as an OSGi Declarative Services component that requires a configuration.

ManagedServiceFactory Components

Alternately for more complex composite (Producer and Consumer) components, Tracker iRouter components can be implemented as Configuration Admin ManagedServiceFactory components.

Metatype Service

iRouter components declare the types of configuration data they will accept as a metatype.xml resource that is bundled in the component. The presence of this resource is sufficient for the iRouter configuration editors to build a compatible form for configuring the component.

P2 Provisioning Service

Like the Tracker Desktop, Tracker iRouter components are deployed and updated through the "Equinox P2":http://wiki.eclipse.org/Equinox/p2 provisioning infrastructure.

Just in Time Functionality

By adhering to the above set of standards and services, the Tracker iRouter provides:

  • component developers a context for the rapid development and deployment of custom functionality to end users.
  • end users with an _Information Routing Platform_ that meet the widest variety of current and future network sensor and actuator use-case requirements.