Key Concepts

The Octave architecture abstracts away the physical connectivity allowing you to focus on higher-level constructs to implement your IoT business logic.

There are two general categories or "contexts" of high-level constructs in Octave: device level, and cloud level:

Device-Level Constructs:

Device-level constructs include the Resources available on the device, Observations to monitor them, and Edge Actions to handle their events:

Device, or edge-level constructs, include: the Resources available on the device, Observations to monitor those Resources, Events generated by Observations, and Edge Actions to process Events.

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.

  • Resources: the resources of a device define the services, sensors, and actuators that make up a solution. Resources are defined on a device like a file system on your computer. For example, a sensor defined as a resource by the redSensor application might be shown as /redSensor/light, an actuator defined by the LCD driver might be called /lcd/txt, and the configuration for the GPIO service might be defined in /io/config.
  • Observations are the rules that we define to specify aspects such as how often to check a resource. Once the rules defined in an Observation are met, a new Event is generated.
  • Edge Actions are JavaScript functions which are defined in the cloud and then deployed to the edge. These functions handle events generated by an Observation, and can output new events to be sent to the cloud and set the value for resources. They can also directly act on local resources without going through the cloud. While an Edge action is executing, it has full access to read and write data from resources. Edge actions are most commonly used to route and/or process data on the edge using locally-available sensor and configuration data.
  • Cloud-side data streams are streams of data originating from the device. Each device has it's own space in the cloud to write data.

For more information about Events and Streams see Cloud Action Overview.

Cloud-Level Constructs

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. The most common use for Octave developers will be to use Cloud Actions to send data to external services or applications via WebHooks.

  • Cloud Actions: Cloud Actions work similarly to the Edge Actions introduced above in that they are represented by JavaScript functions, but the "trigger" is an event being created 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. In the cloud they have access to read and write data from other streams as well as the ability to reach out via the REST API to publish or consume data from external services.
  • Streams: Streams contain Events and are organized in a hierarchy like a file system. Not only do devices have their own space, but users and companies do as well. This hierarchy plays an important part in controlling access to the data contained in Events.