Edge Services Architecture
The following sections describe the key components and services that enable Octave to capture, manage, and communicate data.
Data Hub
Octave's Data Hub is the hub of the control system for data flow on an Octave edge devices:
Sensor data samples flow into it, while actuator control setpoints flow out of it, and processing apps such as the Action Runner, receive data samples from the Data Hub and push results back into the Data Hub.
More generally it is designed to enumerate available data sources (inputs/sensors) and sinks (actuators/outputs), provide filtering and buffering of input data, direct the flow of data between apps connected into the Data Hub, and provide administrative interfaces for dynamic discovery of I/O points, setting and clearing overrides, and configuration of the Hub itself.
For more information about the Data Hub, see this GitHub page.
High-Level Goals
The high-level goals of the Data Hub are:
- Take input of time-stamped data (pulled or pushed) from producer/source apps (such as sensor drivers and data processing apps like the Action Runner.
- Filter input data to optimize the data traffic.
- Push output of data to consumer/sink apps (such as actuator drivers and data processing apps like the Action Runner).
- Push configuration settings to producer/source and consumer/sink apps.
- Buffer time-stamped data and provide access to those buffers to data consumer/sink apps (such as the Cloud Interface and data processing apps like the Action Runner).
- Enumerate I/O resources and allow administrative apps (such as the Cloud Interface) to walk the list to discover I/O points.
- Allow administrative apps (like the Cloud Interface) to configure the buffering, filtering, and routing of data between inputs and outputs within the Data Hub.
- Allow consumers to perform queries on input data buffers and iterate over those buffers.
- Allow administrative apps to set overrides on I/O points, clear overrides, and discover what overrides exist.
Access and Usage
The Data Hub is involved any time you use the Cloud Interface or Octave API to interact with an Octave edge device.
The Octave API provides the Datahub.read()
and Datahub.query()
functions for programmatically interacting with the Data Hub in Acton Runner. For more information see: Action Runner Octave Functions.
Data Hub Implementation
The Data Hub is implemented as a Legato application, meaning it is an open-source application, contributed to the Legato project itself, and is a core component of Octave's Edge architecture.
Action Runner
The Action Runner provides a JavaScript execution environment for the Actions (which are JavaScript functions) and runs the appropriate Actions when their configured triggers are received from the Data Hub:
The Cloud Interface provides CoAP resources allowing the Cloud to discover and modify Actions. This CoAP interface is intended for use during "Responsive Mode", which is used during development or in-the-field debugging, but it doesn't scale to fleet-scale deployments. To push out to a fleet, the Actions are built into the Cloud Interface itself as JavaScript files, and the Cloud Interface app is deployed to the fleet.
The Action Runner is implemented as a Legato service / application capable of executing JavaScript functions (ECMAScript 5.1 or above). The Action Runner can perform the following functions:
- Load Actions into memory, update Actions already loaded, and delete Actions from memory; and
- Execute Actions with a provided payload as the input parameter
The return value of an Action includes both the outbound payload(s) and where the payload(s) must be sent.
Writing Actions
Actions can be written directly in the Octave Dashboard when creating/editing Cloud and Edge Actions, or by using the Cloud and Edge Actions APIs.
Information on how Actions are written and handled by the Action Runner is available in the Action Runner Reference.
Cloud and Edge Action APIs
Edge Actions and Cloud Actions, when executed, make use respectively of the Edge Action Runner (local API on the Octave Edge) and Cloud Action Runner (API within the Octave cloud). In addition, Edge Actions and Cloud Actions can both be defined programmatically through the Octave API:
- The Cloud Action object in the Octave API can be used to programmatically create, manage, and simulate cloud actions that are executed by the Cloud Action Runner (API within the Octave cloud).
- The Edge Action object in the Octave API can be used to programmatically create, manage, and simulate Edge Actions that are executed by the Edge Action Runner (local API on the Octave Edge).
Cloud Interface
The Cloud Interface service bridges the Data Hub and Octave in the cloud:
The Cloud Interface has two main responsibilities:
- receive configuration settings and real-time commands from the Cloud (i.e. the Octave dashboard) and relay them to the Data Hub and the Action Runner. For example, when setting the value of the
/lcd/txt1
resource, the change will be propagated to the device over the cellular network. The Cloud Interface then takes this change, sends it to the Data Hub, where the LCD driver will read the update and display the new value on the screen. - receive data samples from the Data Hub and relay them up to the Cloud. As part of this functionality, the Cloud Interface provides a buffer for events to store, and allows you to dynamically configure how often that buffer is sent to the cloud (i.e. Store and Forward). It also allows the Cloud to discover the I/O resources available on an edge device.
Access and Usage
The Data Hub is involved any time you use the Cloud Interface to interact with an Octave edge device.
Data Hub Implementation
The Cloud Interface is implemented as a Legato application, meaning it is an open-source application, contributed to the Legato project itself, and is a core component of Octave's Edge architecture.
Octave Resource Protocol
Octave Resource Protocol (ORP), is the protocol that facilitates communications between your assets, Octave edge device, and the cloud. ORP provides access to the Data Hub from an external (customer) host processor, over a serial interface.
Information about ORP can be found in the following topics:
Updated over 2 years ago