FoundryNet / Fields / energy_delivered_kwh
Canonical field reference

energy_delivered_kwh

Cumulative energy delivered to load or grid. Cumulative, monotonic, and the field most often corrupted by unit handling: sources report Wh, kWh, MWh and raw joules, and a vendor that bakes the unit into the tag name will hand you a value that has already been converted once.

Cumulative energy delivered to load/grid.

9OEMs / profiles mapped
27distinct raw spellings
1.00match confidence
Get an API key All canonical fields

Vendor tag table

How 9 vendors spell energy_delivered_kwh

Each of these is a real tag as the device or controller emits it, taken from the Forge mapping corpus. This is the table that does not exist anywhere else — the reason cross-vendor telemetry is hard is visible in a single column.

OEM / profileRaw tag as the device emits itConfidence
FroniusWH
E_Total
TotalEnergy
AC_Energy_WH
LifetimeEnergy
1.00
SunSpec 101WH
E_Total
TotalEnergy
AC_Energy_WH
LifetimeEnergy
1.00
SunSpec 103WH
E_Total
TotalEnergy
AC_Energy_WH
LifetimeEnergy
1.00
SchneiderkWh_Del
kWh_Import
kWh_Delivered
Energy_Delivered
1.00
SungrowTotal PV generation
Total exported energy
1.00
SolarEdge (inverter)I_AC_Energy_WH1.00
SolarEdge (meter)M_Exported1.00
SunSpec 201/202TotWhExp1.00
SunSpec 203/204TotWhExp1.00

Every row above is an exact match — a deterministic pack entry or a confirmed corpus mapping — so all of them carry confidence 1.00. That is not a rounding: these are the two exact-match layers, and a tag that resolves here never reaches the embedding or LLM layers. Mappings resolved by the LLM layer do carry sub-1.0 confidence, but those are per-tenant and are not published here.


Unit contract

What Forge guarantees about the value

The canonical field is not just a name. It is a contract about units, sign convention and plausible range, enforced on the way in and re-checked at read time.

SI / canonical unitkWh
Accepted input unitsJ MWh Wh kJ kWh
Converted on ingestJ MWh Wh kJ → kWh
Physics bounds0.0 to 999999999.0 kWh
Measurement typecumulative — resets are expected; a decrease is a counter reset, not a negative reading

Normalization

Raw tag in, canonical field out

# Fronius emits its own spelling; Forge returns the canonical field
curl -s -X POST https://forge.foundrynet.io/v1/normalize \
-H "Authorization: Bearer $FORGE_KEY" \
-H "Content-Type: application/json" \
-d '{"data": {"WH": 0}, "oem": "auto"}'
{ "normalized": { "energy_delivered_kwh": 0 }, "match_type": "deterministic", "confidence": 1.0 }

No mapping table to maintain, and no per-vendor branch in your code. The same request shape works for every OEM in the table above.

# Same thing with no key and no account — the sandbox ships the packs
docker run -p 8000:8000 ghcr.io/foundrynet/forge-sandbox

Where this field appears

Protocols

Transports this field is carried on in the corpus.

SunSpec Modbus RTU Modbus TCP

Related fields

Read alongside this one.

energy_kwh spindle_speed_rpm spindle_load_pct program_name part_count
Every one of these tag names is someone’s integration project. The Machine Agent, weekly. Read it →
Get the thesis behind this infrastructure — The Machine Agent, weekly.