Meters

Lists asset meters and meter readings for the current tenant; create, update, record readings, delete meters. Set tenant context before calling these methods.

List meters

List all asset meters for the current tenant (from v_asset_meters).

client.meters.list()

const meters = await client.meters.list()
// Returns AssetMeterRow[]

Get readings

List meter readings (from v_meter_readings).

client.meters.getReadings()

const readings = await client.meters.getReadings()
// Returns MeterReadingRow[]

Create meter

Create a new meter for an asset. Returns the new meter UUID.

client.meters.create(params)

const meterId = await client.meters.create({
  tenantId: 'uuid-of-tenant',
  assetId: 'uuid-of-asset',
  meterType: 'usage',
  name: 'Runtime hours',
  unit: 'hours',
  currentReading: 0,
  readingDirection: 'increasing',
  decimalPlaces: 0,
  description: 'Equipment runtime',
})
// Returns string (UUID)
  • Name
    tenantId
    Description

    Required. Tenant UUID.

  • Name
    assetId
    Description

    Required. Asset UUID.

  • Name
    meterType
    Description

    Required. Meter type key (e.g. usage, counter).

  • Name
    name
    Description

    Required. Meter name.

  • Name
    unit
    Description

    Required. Unit (e.g. hours, miles, kWh).

  • Name
    currentReading
    Description

    Optional. Default 0. Initial reading value.

  • Name
    readingDirection
    Description

    Optional. Default increasing. Direction for rollover.

  • Name
    decimalPlaces
    Description

    Optional. Default 0. Decimal places for display.

  • Name
    description
    Description

    Optional. Description.

Update meter

Update an existing meter. All fields except tenantId and meterId are optional.

client.meters.update(params)

await client.meters.update({
  tenantId: 'uuid-of-tenant',
  meterId: 'uuid-of-meter',
  name: 'Runtime hours (total)',
  unit: null,
  readingDirection: null,
  decimalPlaces: null,
  description: null,
  isActive: true,
})

Record reading

Record a meter reading. Returns the reading record UUID.

client.meters.recordReading(params)

const readingId = await client.meters.recordReading({
  tenantId: 'uuid-of-tenant',
  meterId: 'uuid-of-meter',
  readingValue: 125.5,
  readingDate: '2025-02-03',
  readingType: 'manual',
  notes: 'Monthly reading',
})
// Returns string (UUID)
  • Name
    tenantId
    Description

    Required. Tenant UUID.

  • Name
    meterId
    Description

    Required. Meter UUID.

  • Name
    readingValue
    Description

    Required. Reading value.

  • Name
    readingDate
    Description

    Optional. ISO date string.

  • Name
    readingType
    Description

    Optional. Default manual. Reading type key.

  • Name
    notes
    Description

    Optional. Notes.

Automated readings (API keys)

For unauthenticated devices or jobs, use a tenant API key and the ingest-meter-reading Edge Function. That path records readings as automated (not the interactive client.meters.recordReading flow). See Tenant API keys.

Delete meter

Delete a meter by tenant and meter ID.

client.meters.delete(tenantId, meterId)

await client.meters.delete('uuid-of-tenant', 'uuid-of-meter')

Was this page helpful?