Octave achieves end-to-end, out-of-the-box IoT connectivity for edge devices, by providing the following architecture that abstracts away the physical connectivity, allowing you to focus on higher-level constructs to implement your IoT business logic:
Assets such as Sensors, Actuators, etc., are connected to an Octave edge device and are represented as Resources. The Octave edge device includes a tightly-coupled set of software components to provide out-of-the-box, high-level services for IoT Data Orchestration:
- Pre-configured modem firmware optimized for IoT applications
- Operating system1 built specifically for Octave.
- Edge Services:
- Data Hub: a component for data sharing between applications, sensors, and actuators (see Data Hub for more information)
- Cloud Interface: an application bridging the Data Hub and Octave in the cloud
- Action Runner: an application that consumes, processes, and intelligently acts upon Events in the Data Hub
All of the functionality is managed through Octave's fully-featured web user interface.
An Event is something that has occurred such as an input signal value that was received from an asset, a value that was configured on the device etc. Streams contain Events and are organized in a hierarchy like a file system. This hierarchy plays an important part in controlling access to the data contained in Events.
For more information see Events and Streams.
Cloud-level constructs are used to visualize and orchestrate streams of data flowing between your devices, the cloud platform, and external applications or cloud services. Octave developers will most commonly use Cloud Actions to send data to external services, or to applications via Webhooks.
Cloud Actions work similarly to Edge Actions, but are "triggered" by events received in a Stream, not created due to an Observation. Just as an Edge Action can read data from the resources in the edge context, Cloud Actions can read and write data in the cloud context (i.e., they can read and write data from other Streams, and use the REST API to publish or consume data from external services.
Developers can also create Tasks to periodically pull data from external systems and "inject" it into Octave as Events as well as to monitor devices (e.g., to check the last seen value) and schedule data extraction.
The following diagram depicts the high-level components and the flow of data between them in Octave's architecture:
An Octave edge device is connected to one or more physical assets (e.g., thermometer, LED, etc.) which are each represented as Resources in Octave. These Resources can communicate with the Octave edge device through a variety of IO interfaces supported in Octave (e.g., GPIO, Modbus, etc.).
A Observation is used to observe an Input or Sensor Resource at some frequency, and may be associated with an Edge Action to perform logic on the device. An Edge Action might then report the data events by streaming them to the cloud and/or send the events to another Resource such as a Virtual Resource.
For example, a thermometer reports values and an Observation ensures that at most, one data point is forwarded every 30 seconds to trigger an Edge Action. The Edge Action contains logic to turn on an LED (which is another Resource), and to send the value over a cellular connection to Octave Cloud.
On the cloud side of Octave, a Cloud Action could handle incoming data events on the Stream and perform cloud-side processing on that data. The code that executes in the Cloud Action could make use of Octave's Cloud API, a rich set of web APIs that expose Octave cloud through the Cloud Interface, on top of which, you can create web-enabled applications that read and write to the edge device via Octave.
Octave provides a number of security features including Zero-touch security provisioning, Secure boot and Secure firmware upgrade, and many others.
For more information see the Edge-to-Cloud Security topic.
Updated about 16 hours ago