What are Accessors?

Accessors are a technology for making the Internet of Things accessible to a broader community of citizens, inventors, and service providers through open interfaces, an open community of developers, and an open repository of technology. Developed by the TerraSwarm Research Center, accessors enable composing heterogeneous devices and services in the Internet of Things (IoT).

An actor is a software component that reacts to streaming input events and produces streaming output events. An accessor is an actor that wraps a (possibly remote) device or service in an actor interface.

An accessor host is a service running in the network or on a client platform that hosts applications built as a composition of accessors that stream data to each other. For a quick start using Node.js, see the Node host.

Accessors embrace concurrency, atomicity, and asynchrony. The actor model, which governs interaction between accessors, permits accessors to execute concurrently with segregated private data and a message-passing interface for interaction. Internally, many accessors use asynchronous atomic callbacks (AAC) to invoke remote services and handle responses asynchronously and atomically. See comparisons with related technologies for insight into how accessors work.

Accessors are defined in a JavaScript file that includes a specification of the interface (inputs, outputs, and parameters) and an implementation of the functionality (reactions to inputs and/or production of outputs). Any JavaScript file that conforms with the accessor specification defines an accessor class.

The TerraSwarm accessor library provides a collection of example accessors. This library is maintained via an SVN repository that permits many contributors to add accessors to the library.

An instance of an accessor is created by a swarmlet host that evaluates the JavaScript in the accessor definition. At this time, there are at least three accessor hosts compatible with accessor specification 1.0:

  • A browser host, which allows inspection of the accessor, and if the accessor is suitable for execution in a browser, interactive invocation of the accessor.
  • A Node.js host, an interactive program that runs in Node.js that allows instantiation and execution of accessors.
  • A Ptolemy II host, which supports composition of accessors with visual block diagrams and provides a large library of actors that the accessors can interact with.

To experiment with accessors now, see Getting Started with Accessors.

This work is supported in part by the TerraSwarm Research Center, one of six centers supported by the STARnet phase of the Focus Center Research Program (FCRP) a Semiconductor Research Corporation program sponsored by MARCO and DARPA.

This work is licensed with a BSD-style license.

This project is a work in progress. Please contribute. The wiki page for this workgroup is the place to go to participate in the design of the accessor mechanism. See publications and presentations for more information.