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')