The Octave Developer Hub

Welcome to the Octave developer hub. You'll find comprehensive guides and documentation to help you start working with Octave as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started

Report multiple Resources in a single Event and Stream

In the examples from the previous topics, data from each Resource was routed to a different cloud Stream.

Depending on how you plan to handle the data on the cloud side, it can be beneficial to send most of your data in a single Stream.

The following diagram depicts how to accomplish this. In this Octave implementation, which builds off of that in Report multiple Resources independently to the Cloud, a single Edge Action has been created.

Here, thermometer Events are routed to the Edge Action through the Edge Action's Observation, but humidity Events are read by the Edge Action' s logic, by invoking the Octave Edge Action Runner API Datahub.read(). Wind speed Events are now routed to a Stream Observation, and the Edge Action gets their events by Datahub.query().

The Edge Action then processes data from all three Resources and sends a single Event to the cloud.

📘

Key Takeways

  • In order to send Resource data in a single Event, you can use an Edge Action to collect the data and create the Event with the resource payload that you want
  • One resource and Edge Action Observation are used to trigger the Edge Action
  • Other Resources can be read from the Edge Action:
    • directly via a call to Datahub.Read('resource') to get the latest value of a Resource.
    • by calling an Observation via Datahub.query('observation'), thus benefiting from the Observation characteristics (filter, buffering, min/max/mean).
  • The Event sent from the Edge Action will be routed to the device/:default Stream.

The following is an example of an Edge Action to handle this implementation:

function(event) {

return {
  "cl://": [{                                                                                               
    "temperature":  event.value,                                                        
    "humidity":     Datahub.read('/humidity/value',0).value,
    "wind_speed":   Datahub.query('wind_speed','mean',10)
    }]
};

}

The following shows what the Event looks like in the device/:default Stream:

{
 "elems": {
    "humidity": 31.3,
    "temperature": 37.4,
    "wind_speed": 17.7
  }
}

👍

Learning more:

  • In order to report Events on a periodic basis rather than on an actual measurable Resource, a similar approach can be taken with 'util/counter/value' as the input Resource to trigger the Edge Action.
  • By directing the Edge Action output to sf:// instead of cl:// the Events will be handled by Store and Forward and sent according to its flushing rules.
  • if you want to use a similar approach but send the data to another a Stream other than device/:default, you can write out the Edge Action's output to a JSON Virtual Resource and set a Cloud Stream Observation on that Virtual Resource.

Updated 3 months ago

Report multiple Resources in a single Event and Stream


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.