Meter Data Validation

Bridge T-EACs Standard Template Validator

Validate your meter data file

Upload an XLSX file following the Bridge T-EACs standard template. We'll check it against all format and data quality requirements.

Drag & drop your XLSX file here

or click to browse

Choose file

or

Standard Template

Download the Bridge T-EACs file template or an example with sample data.

Required columns:

datetime_start_local, local_timezone, datetime_start_utc, value, unit_of_measurement, meter_id, eac_facility_id, eac_registry_id

Validation Requirements

File-Level

  • File must be .xlsx format
  • File must contain exactly one worksheet
  • File must contain exactly one eac_facility_id value across all rows

Required Headers

All 8 headers must be present in the first row:

datetime_start_local local_timezone datetime_start_utc value unit_of_measurement meter_id eac_facility_id eac_registry_id

Column Format Requirements

Column Format Example
datetime_start_local RFC 3339 with timezone offset 2025-01-01T01:00:00+01:00
local_timezone IANA Area/Location format America/Chicago
datetime_start_utc RFC 3339, must end with Z or +00:00 2025-01-01T00:00:00Z
value Numeric, . for decimals, no other characters 10321.887321
unit_of_measurement One of: GWh, MWh, kWh, Wh MWh
meter_id Meter identifier for the datapoint 19883332
eac_facility_id Production device ID as used in EAC Registry GEN2804
eac_registry_id Valid registry ID from the m-rets

API Integration

Validate files programmatically by sending a POST request with the XLSX file as multipart form data.

Endpoint
POST /api/validate
cURL example
curl -X POST /api/validate \
  -F "file=@your-meter-data.xlsx"
Python example
import requests

url = "/api/validate"
with open("your-meter-data.xlsx", "rb") as f:
    resp = requests.post(url, files={"file": f})
result = resp.json()

print("Status:", result["overallStatus"])
for check in result["checks"]:
    print(f"  {check['status']:8s} {check['name']}")

Response format (JSON):

  • overallStatus"pass" or "fail"
  • summary — File name, row count, facility/meter IDs, time range, interval
  • checks[] — Array of validation checks, each with id, status, message, and issues[]

Time-Series Requirements

  • No blank cells: All required columns must be populated in every data row — no empty cells allowed.
  • Time continuity: A value and timestamp must be provided for every interval, even if null, empty, or zero. No gaps are allowed.
  • Interval readings: Values must represent generation within the time interval, not accumulated meter totals.
  • Consistent intervals: All time intervals must be the same duration (hourly or sub-hourly).
  • UTC/local consistency: datetime_start_utc must match datetime_start_local adjusted by the timezone offset.
  • DST handling: If readings are in UTC, no gaps or duplicates during DST transitions. If in local time, DST changes must be correctly reflected (missing hour in spring, duplicate in fall).