HomeGuidesAPI ReferenceChangelog
Log In
Guides

Plug Intervals: Smart Meter Texas

Smart Meter Texas (SMT) is a platform managed by the 4 Texas utilities (Centerpoint, Oncor, AEP Central/North, and Texas New Mexico Power) that publishes interval data for meters installed in the Texas ERCOT region. Plug intervals now supports collection of interval data using SMT API for Texas ERCOT meters.

Smart Meter Texas Registration

In order to collect interval data from the Smart Meter Texas (SMT) APIs, you must first register as a third party company with SMT. Please reach out to your Account Manager for support if needed on this process.

Meter details submission

Once your SMT portal is setup, you can continue with meter submission to collect interval data. You can do this either through connect or using the API. Connect is our off-the-shelf user interface that end-users can use to select their utility provider and submit their credentials. If the selected provider is a Texas Retail Energy Provider (REP), Connect would allow the end-user to submit meter details instead of the regular username password we collect for web-based utility data access. End-user would have to submit the meter number, ESIID and their email address for this purpose.

Submitting meter details via API

An alternative to using Connect would be using the Plug APIs to submit meter details required for enrolling a meter with Smart Meter Texas. You would need to use the POST meters endpoint and submit the meter number, ESIID and end-user email address.

Post meters request

curl --request POST \
--url https://api.arcadia.com/plug/meters/ \
--header 'Arc-Version: 2024-02-21' \
--header 'accept: application/json' \
--header 'content-type: application/json'
--data '
{
  "providerId" : "prv_1243",
  "meterNumber": "123",
  "ESIID" : "33234666533223"
  "retailCustomerEmail": "[email protected]"
}

Post meters response

If the request was successful, you can expect a response similar to the following

{
  "accounts": [
    {
      "accountNumber": "string",
      "id": "string"
    }
  ],
  "bulbType": "string",
  "createdAt": "2024-02-29T19:54:03.357Z",
  "createdBy": "string",
  "currentTariff": {
    "provider": {
      "country": "string",
      "id": "prv_1243",
      "name": "string",
      "supportsCredentialValidation": true
    },
    "tariffName": "string"
  },
  "customData": {},
  "generalDescriptionAsPrinted": "string",
  "id": "mtr_1234",
  "intervalsLatestDateTime": "null",
  "isIntervalsProductActive" : "true",
  "isCustomerActionRequired": false,
  "lastModifiedAt": "2024-02-29T19:54:03.357Z",
  "lastModifiedBy": "string",
  "latestStatementDate": "2024-02-29",
  "meterConstantMultiplier": 0,
  "meterNumber": "123",
  "nextExpectedPostDate": "2024-02-29",
  "normalizedMeterNumber": "123",
  "normalizedPointOfDeliveryNumber": "string",
  "pipeType": "string",
  "pointOfDeliveryNumber": "string",
  "previousMeterConstantMultiplier": 0,
  "previousMeterNumber": "string",
  "provider": {
    "country": "string",
    "id": "string",
    "name": "string",
    "supportsCredentialValidation": true
  },
  "serviceAddress": {
    "addressType": "FULL",
    "city": "string",
    "country": "string",
    "fullAddress": "string",
    "postalCode": "string",
    "recipient": "string",
    "state": "string",
    "streetLine1": "string",
    "streetLine2": "string"
  },
  "serviceType": "string",
  "serviceTypeClassification": "CORE",
  "status": "INTERVALS_NOT_REQUESTED",
  "statusDetail": "INTERVAL_EXTRACTION_NOT_REQUESTED",
  "site": {
    "createdAt": "2024-02-29T19:54:03.357Z",
    "createdBy": "string",
    "facilityType": "string",
    "id": "string",
    "lastModifiedAt": "2024-02-29T19:54:03.357Z",
    "lastModifiedBy": "string",
    "meterIds": [
      "string"
    ],
    "region": "string",
    "serviceAddress": {
      "addressType": "FULL",
      "city": "string",
      "country": "string",
      "fullAddress": "string",
      "postalCode": "string",
      "recipient": "string",
      "state": "string",
      "streetLine1": "string",
      "streetLine2": "string"
    },
    "siteCode": "string",
    "siteName": "string",
    "siteNumber": "string",
    "subRegion": "string"
  }
}

Authorizing the request

Once the meter details are submitted, we make a API request to Smart Meter Texas in order to get access to the interval data of the meter. On receiving this request, Smart Meter Texas would send a email to the end-user asking them to authorize the request.

Once the request is authorized by the end-user, Arcadia will be able to use the SMT APIs to collect interval data for the meter. As standard, we will collect 1 year of historical data the first time meter is submitted and then collect daily interval data as published on the portal.

Activating intervals

For Smart Meter Texas specifically, meters are auto-activated. There would be no need to explicitly activate meters via API or dashboard as is required for other providers.

Accessing interval data

Interval data for SMT meter can be accessed in same way as any other meter using the GET/intervals/meters/{meterId} or the GET /normalizedIntervals/meters/meterId endpoints.

The intervals API endpoint returns the data as we collect it from the utility (raw utility published data). We do not make any transformations to the data.

Intervals data request

curl --request GET \
     --url 'https://api.arcadia.com/plug/intervals/meters/mtr_1234' \
     --header 'Arc-Version: 2024-02-21' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer foobar'

Intervals data success response

If the request was made correctly, you can expect to get a json response as below with the requested intervals data.

{
   "correlationIds": ["string"],
    "credentialIds": ["string"],
    "meterId": "mtr_1234",
    "meterNumber": 23220,
    "intervalsCreatedAt": "2024-08-28T09:56:12.000+00:00",
    "intervalsUpdatedAt": "2024-08-28T09:56:12.000+00:00",
    "earliestIntervalAt": "2023-08-29T07:00:00.000+00:00",
    "latestIntervalAt": "2024-08-23T06:45:00.000+00:00",
    "providerName": "string",
    "providerId": "string",
    "serviceType": "string",
    "electricMeterMultiplier": 0,
    "readType": "string",
    "localTimezone": "string",
    "readings": [
      {
        "startAt": "2023-08-29T07:00:00.000+00:00",
        "endAt": "2023-08-29T07:01:00.000+00:00",
        "direction": "import",
        "kwh": 0,
        "kw": 0
      }
               ]
}

The normalized version of the interval endpoint makes API integration simpler by consistently delivering interval data of 15 minute intervals irrespective of the length of timestamp in the source data collected from utility.

Normalized Intervals data request

curl --request GET \
     --url 'https://api.arcadia.com/plug/normalizedIntervals/meters/mtr_1234' \
     --header 'Arc-Version: 2024-02-21' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer foobar'

Normalized Intervals data success response

If the request was made correctly, you can expect to get a json response as below with the requested intervals data.

{
    "correlationIds": ["string"],
    "credentialIds": ["string"],
    "meterId": "mtr_1234",
    "meterNumber": 23220,
    "intervalsCreatedAt": "2024-08-28T09:56:12.000+00:00",
    "intervalsUpdatedAt": "2024-08-28T09:56:12.000+00:00",
    "earliestIntervalAt": "2023-08-29T07:00:00.000+00:00",
    "latestIntervalAt": "2024-08-23T06:45:00.000+00:00",
    "providerName": "string",
    "providerId": "string",
    "serviceType": "string",
    "electricMeterMultiplier": 0,
    "readType": "string",
    "localTimezone": "string",
    "intervalDurationMinutes" : 15,
  	"sourceIntervalDurationMinutes" : [ 60 ],
    "startAt" : "2023-08-29T07:00:00.000+00:00",
  	"endAt" : "2024-05-23T06:45:00.000+00:00",
    "readings": [
         {
          "electricMeterMultiplier" : [ 1,1],
          "importKwh" : [ 2,2 ],
          "exportKwh" : [ 1,1],
          "netKwh" : [ 1,1]
         }  
               ]
}

Revoking access

If you need to unenroll a meter, you can do this by deactivating the meter for interval data or disabling the credential. Doing this would result in Arcadia terminating the data sharing agreement for the meter with Smart Meter Texas and we would no longer be able to collect interval data for the meter.

Deactivating a meter

Use the POST meters endpoint to set isintervalproductActiveto false in order to deactivate the meter

Intervals data deactivation for a meter request

curl --request PATCH \
     --url https://api.arcadia.com/plug/meters/mtr_1234 \
     --header 'Arc-Version: 2024-02-01' \
     --header 'X-Sandbox-Mode: false' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "isIntervalsProductActive": false
}

Disabling credential

Use the PATCH credential/disableResources endpoint to disable the credential

Disable credential request

curl --request PATCH \
     --url https://api.arcadia.com/plug/credentials/credentialId/disableResources \
     --header 'Arc-Version: 2024-02-21' \
     --header 'accept: application/json'

status & statusDetail for Smart Meter Texas meters

Status and status details for the meter, account and credential setup for collecting interval data for a meter via the Smart Meter Texas portal have been detailed here.

Customizing Connect for Smart Meter Texas

For the Texas ERCOT region, interval data collection would be via the Smart Meter Texas portal while statement data collection would be through the utility website. Accessing interval data via the SMT portal for a Texas Retail Energy Provider(REP) meter would require the end-user to submit the ESI ID, meter number and email address while accessing statement data for the same meter would require the end-user to submit their utility credentials.

You can customize the connect flow to show the end-user the right input to be submitted by using the 'useCaseLimit' parameter. By setting this to "intervals", connect will show the end-user a screen to submit the ESI ID, meter number and email address required for collecting interval data from the Smart Meter Texas portal. Setting this field to "statements" would show the end-user a screen to submit their utility credentials. If you do not customize Connect with this field, the end-user would be asked whether they want to collect monthly bill data (statement) or granular meter readings (interval data).

More details on customizing connect can be found on this link.