IoT Toolkit is an open source reference implementation of an Internet of Things core platform for horizontal interoperability based on the Smart Object API.
The IoT Toolkit implements an event-driven architecture, consisting of self-describing distributed Smart Objects. These Smart Objects are virtual representations of physical objects and the people who own and control said objects along with other data resources, that collectively make up the Internet of Things.
The Smart Object abstraction enables composite IoT applications to be constructed from data and resources of various origins, linked to software agents, which in turn control physical processes, produce outputs, or link to other software agents.
Figure 1 shows how the event-driven web object encapsulation provides distributed graph-structured applications connecting to physical things.
Figure 1 - IoT Toolkit High Level Architecture
The event-driven programming model allows applications to be distributed to run anywhere in the system, including gateways, local servers, cloud services, and on the devices themselves.
FIgure 2 shows applications running in IoT gateways and in cloud services using the same REST API and programming model, regardless of the platform or location in the network.
Figure 2 - IoT Toolkit in Gateways and Cloud Services
IoT Toolkit provides consistent abstractions for different Machine to Machine communication (M2M) systems and presents an API based on high level Resource Models of connected things. The resource models use common concepts and relationships across different types of things, providing interoperability at the data model level.
The result is write once, run anywhere software that can be used to connect any application to any thing using any M2M. Figure 3 shows how Resource Models are generated from Thing Models and used in the Smart Object API to provide high level data model abstractions across diverse M2M, SOA, and sensor net systems.
FIgure 3 - Any Application to Any Thing using Any M2M
IoT Toolkit uses best practices and web standards, such as REST API architecture and JSON + Linked Data to implement the data models. This enables web standard infrastructure to be used to quickly reach web scale in applications. Our goal is to create the next set of Web Standards to drive Internet of Things Interoperability at scale.