Asoba Ona Documentation

Ona Intelligence Layer

Backend infrastructure that absorbs unreliable energy data and exposes stable intelligence your systems can depend on.

Ona Intelligence Layer


Overview

Ona is an intelligence layer for energy systems. It connects to your inverters and energy assets via standard APIs, serving as complete middleware for the data pipelines necessary to run ML/AI models. These models can be called via API or SDK, embedded directly within your existing business logic.

This is a platform that supports your technical roadmap, rather than forcing you to adjust your business logic to fit the platform’s idiosyncrasies. Integrate once, consume intelligence through the interfaces you already use.


What It Does

Absorbs Unreliable Data

Energy data is messy. Different OEMs, inconsistent formats, gaps, outliers. Ona normalizes all of it into a consistent, analysis-ready format.

Exposes Stable Intelligence

Your systems integrate once and consume intelligence, not models. The API contract remains stable even as underlying models improve.

Manages Models Over Time

Models degrade. Data distributions shift. Ona handles the MLOps so you don’t have to.


Integration

Install the SDK from GitHub and set your API key (contact support@asoba.co to get one).

# JavaScript
git clone https://github.com/AsobaCloud/sdk.git && cd sdk/javascript && npm install

# Python
git clone https://github.com/AsobaCloud/sdk.git && cd sdk/python && pip3 install -e .

Inverter Telemetry API

Query and stream live power output, energy, and state data from solar inverters.

Python:

from ona_platform import OnaClient
from ona_platform.models.telemetry import TimeRange
import os

client = OnaClient(
    inverter_telemetry_endpoint=os.environ["INVERTER_TELEMETRY_ENDPOINT"],
    inverter_telemetry_api_key=os.environ["INVERTER_TELEMETRY_API_KEY"],
)

# Query historical data
records = client.inverter_telemetry.get_inverter_telemetry(
    asset_id="INV-1000000054495190",
    site_id="Sibaya",
    time_range=TimeRange(start="2025-11-01T00:00:00", end="2025-11-01T12:00:00"),
    resolution="5min",
    limit=100,
)

# Stream live data
for record in client.inverter_telemetry.stream_inverter(
    asset_id="INV-1000000054495190",
    site_id="Sibaya",
    polling_interval=30,
):
    print(f"{record.timestamp}: {record.power} kW")

JavaScript:

const { OnaSDK } = require('./src/index');

const sdk = new OnaSDK({
  endpoints: { inverterTelemetry: process.env.INVERTER_TELEMETRY_ENDPOINT },
  inverterTelemetryApiKey: process.env.INVERTER_TELEMETRY_API_KEY,
});

// Query historical data
const records = await sdk.inverterTelemetry.getInverterTelemetry({
  asset_id: "INV-1000000054495190",
  site_id: "Sibaya",
  time_range: { start: "2025-11-01T00:00:00", end: "2025-11-01T12:00:00" },
  limit: 100,
});

// Stream live data
for await (const record of sdk.inverterTelemetry.streamInverter({
  asset_id: "INV-1000000054495190",
  site_id: "Sibaya",
  polling_interval: 30,
})) {
  console.log(`${record.timestamp}: ${record.power} kW`);
}

OODA Terminal Alerts API

Query and stream fault detection and diagnostic alerts from terminal devices.

Python:

from ona_platform.models.ooda import TimeRange

client = OnaClient(
    ooda_terminal_endpoint=os.environ["OODA_TERMINAL_ENDPOINT"],
    ooda_terminal_api_key=os.environ["OODA_TERMINAL_API_KEY"],
)

# Query historical alerts
alerts = client.ooda_terminal.get_terminal_alerts(
    terminal_device_id="TERM-1000000054495190",
    site_id="Sibaya",
    time_range=TimeRange(start="2025-11-01T00:00:00", end="2025-11-01T12:00:00"),
)

# Stream live alerts
for alert in client.ooda_terminal.stream_terminal(
    terminal_device_id="TERM-1000000054495190",
    site_id="Sibaya",
    polling_interval=30,
):
    print(f"{alert.timestamp}: [{alert.alert_severity}] {alert.message}")

JavaScript:

const sdk = new OnaSDK({
  endpoints: { oodaTerminal: process.env.OODA_TERMINAL_ENDPOINT },
  oodaTerminalApiKey: process.env.OODA_TERMINAL_API_KEY,
});

// Stream live alerts
for await (const alert of sdk.oodaTerminal.streamTerminal({
  terminal_device_id: "TERM-1000000054495190",
  site_id: "Sibaya",
  polling_interval: 30,
})) {
  console.log(`${alert.timestamp}: [${alert.alert_severity}] ${alert.message}`);
}

Live Endpoints

API Endpoint
Inverter Telemetry https://af5jy5ob3e.execute-api.af-south-1.amazonaws.com/prod
OODA Terminal Alerts https://3lpq00xevg.execute-api.af-south-1.amazonaws.com/prod

What It Guarantees


What It Replaces

Without an intelligence layer, teams build:

Ona centralizes all of this behind a single integration boundary.


What It Is Not


Deployment Options

SaaS (Managed Infrastructure)

Cloud-hosted with managed infrastructure.

On-Premises (Self-Hosted)

Local installation for data sovereignty requirements.


Getting Started

Week 1-2: Integration

Connect SCADA/inverters, ingest historical data, establish performance baselines.

Week 3-12: Optimization

Real-time monitoring goes live. Weekly performance reports as models continuously improve.

Week 13: Decision

Executive ROI analysis. Automatic conversion upon meeting metrics, followed by scale-up.


Support & Resources

Documentation

Support


Get Help & Stay Updated

Contact Support

For technical assistance, feature requests, or any other questions, please reach out to our dedicated support team.

Email Support Join Discord

Subscribe to Updates

* indicates required