Guides / Connect a plant via edge gateway
Copy page as MarkdownJoin the sandbox waitlist
GuideEARLY ACCESS

Connect a plant via edge gateway

The path to L2 and, eventually, L3. A gateway sits between your existing meters and the network, signs every reading with a key that never leaves its secure element, and pushes directly. This is what cash-flow assets require.

Prerequisites

· A T2 · Certified Partner account

· An Arkreen edge gateway, or third-party hardware with a supported secure element

· Modbus RTU/TCP, SunSpec, or a pulse output on the revenue meter

· Site connectivity — cellular is fine; the gateway buffers through outages

01Register the device before it ships

curl -X POST https://sandbox.api.arkreen.com/v1/devices \
  -H "Authorization: Bearer $TOKEN" -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "project_id": "prj_8fK2mQ",
    "type": "gateway",
    "manufacturer": "arkreen",
    "model": "AGW-2",
    "serial_number": "AGW2-2026-00814",
    "public_key": "ed25519:9f3a…c21e",
    "ingest_mode": "edge_gateway"
  }'

Register first, install second. A gateway that appears on the network before it is registered is rejected, which is the correct behavior and a confusing first hour if you do it in the wrong order.

02Bind the gateway to the meter on site

The installer scans the gateway QR code in the console, selects the meter register map, and enters the meter's current cumulative reading. That last step matters: it is the offset that lets us reconcile the gateway's counter with the meter's own lifetime total, which is what an auditor will look at.

03Verify signatures are landing

curl "https://sandbox.api.arkreen.com/v1/devices/dev_7qL5" -H "Authorization: Bearer $TOKEN"

{ "status": "pending_baseline", "data_assurance": "L2",
  "meter_epoch": 1,
  "last_reading_at": "2026-08-22T09:05:00Z",
  "signature_health_24h": { "valid": 288, "invalid": 0, "absent": 0 } }

Any non-zero invalid means the registered public key does not match the key the device is signing with — almost always a provisioning mismatch, not a security incident. Re-provision before continuing; readings signed with an unregistered key are stored but never counted.

04Baseline, then request review

curl -X POST https://sandbox.api.arkreen.com/v1/projects/prj_8fK2mQ:submit \
  -H "Authorization: Bearer $TOKEN" \
  -d '{ "documents": ["doc_5nT2", "doc_8vJ4"] }'

This is the first human step on the ingest path, and not the last one in the flow. Review covers asset ownership, the offtake contract, and operator identity. Median turnaround is three business days. Every other point where a person is involved is listed on Resources / Where humans are involved.

05Optional: connect a settlement source for L3

L3 requires a second, independent view of the money. Connect an offtaker invoice or receipt feed, bank settlement confirmations, or on-chain stablecoin receipts if the offtaker pays in stablecoin. Then request an audit sample.

POST /v1/projects/{id}/assurance:request-upgrade

Done when

data_assurance is L2 and project.status is operating.

That is the data half. You cannot open a PowerYield offering until asset_readiness also reaches investment_ready, which is a legal and settlement question and does not move because your signatures got better.

Common problems

counter_regression after a power cut

The gateway lost its counter and resumed from the meter's value. Submit the correction through POST /v1/telemetry:correct with supersedes_reading_id, or — if the meter itself was changed — register it with POST /v1/devices/{id}:meter-swap first, which opens a new meter_epoch and stops the regression from being read as tampering.

Gateway offline but meter fine

Buffered readings flush on reconnect with their original device_ts. A gap under the project's tolerance resolves itself. Over tolerance the level drops to provisional_downgrade and restores once continuity is re-established.

You need the curve back, not just the total

Cumulative counters make total energy self-correcting after an outage. They do not recover the shape of the curve — which is what performance ratio, curtailment analysis, and month-boundary attribution all depend on. Backfill exists, and you should implement it.