Vehicles

Connected EVs with battery levels, range, and charging status

A vehicle on the Texture Platform is a car, truck, or other vehicle that is electric or plug-in hybrid. We support a variety of vehicle manufacturers and models, and are always adding more.

We do not support any ICE (internal combustion engine) aka gasoline-powered vehicles since we are an electric energy management platform.

Supported Vehicle Models#

For the list of vehicle models we currently support on the Texture Platform, see the Supported Devices page. We are always adding support for more so if you see a vehicle that you would like to see on platform, please contact us and let us know.

Vehicle Data Model#

Below is a sample payload from a vehicle on the Texture Platform. This happens to be a Tesla Model Y:

{
    "id": "cltqavafq02cb10ua7o4joo4q",
    "type": "vehicle",
    "manufacturerDeviceId": "1493084953679313",
    "serialNumber": "1493084953679313",
    "manufacturer": "tesla",
    "model": "tesla_model_y",
    "modelYear": null,
    "availableCommands": [{
          "slug": "vehicle:set-charge-limit",
          "description": "Sets the vehicle charge limit."
        }, {
          "slug": "vehicle:set-operating-mode",
          "description": "Sets the operating mode of the vehicle."
      }],
    "state": {
      "id": "clu19sheu024213yldjtpbtit",
      "charge": null,
      "chargingState": "discharging",
      "chargePercentage": 57,
      "chargeCompletionDate": null,
      "chargeCompletedAt": "2024-03-21T13:30:23.833Z",
      "chargeLimit": 80,
      "isPluggedIn": false,
      "chargerVoltage": 2,
      "chargerCurrent": 0,
      "chargerWattage": 0,
      "range": 169,
      "latitude": 39.988509,
      "longitude": -104.983243,
      "createdAt": "2024-03-21T13:30:27.750Z"
    },
    "staticState": {
      "capacity": 75000,
      "keyPaired": true
    },
    "name": "Gertie",
    "tags": [],
    "referenceId": "79f380ec-241c-5193-8473-faf40a29939b"
  }

First I'll break down all of the fields in the root of the vehicle object:

  • id - a unique identifier that Texture assigns to the vehicle
  • type - the type of device, in this case, a vehicle
  • manufacturerDeviceId - the unique identifier that the manufacturer assigns to the vehicle
  • serialNumber - the serial number of the vehicle (for a vehicle this is generally the VIN number)
  • manufacturer - the manufacturer of the vehicle
  • model - the model of the vehicle
  • modelYear - the year the vehicle was manufactured (note this may be null for some manufacturers that do not currently expose this information via API)
  • availableCommands - the commands that are available to send to the vehicle
  • state - the current state of the vehicle (see below for details)
  • staticState - fixed characteristics of the vehicle that change rarely or never (see below for details)
  • name - the name of the vehicle that the user has assigned with the manufacturer, if any (optional)
  • tags - the tags that are associated with the vehicle that you provided during the connection process to help group devices (optional)
  • referenceId - the reference ID of the vehicle, something you provide to identify this customer/device

Next, I'll break down each field in the state object in detail below:

  • id - a unique identifier that Texture assigns to the state update
  • charge - the current charge of the vehicle in watt-hours (Wh). This is the total amount of energy stored in the vehicle's battery.
  • chargingState - the current charging state of the vehicle. Possible values are charging, discharging, idle, unknown indicating whether the vehicle is charging, discharging, idle, or an unknown state respectively.
  • chargePercentage - the current charge of the vehicle as a percentage of the total battery capacity
  • chargeCompletionDate - the date and time that the vehicle is expected to be fully charged -- null if the vehicle is not currently charging
  • chargeCompletedAt - the date and time that the vehicle was last fully charged
  • chargeLimit - the maximum charge limit of the vehicle as a percentage of the total battery capacity that the vehicle will charge to, in the example above the vehicle will only charge to 80% of its total capacity but no higher
  • isPluggedIn - whether the vehicle is currently plugged in or not
  • chargerVoltage - the voltage of the charger in volts (V)
  • chargerCurrent - the current of the charger in amperes (A)
  • chargerWattage - the power of the charger in watts (W)
  • range - the estimated range of the vehicle in miles
  • latitude - the latitude of the vehicle's last known location
  • longitude - the longitude of the vehicle's last known location
  • createdAt - the date the state update was created in ISO 8601 format

Next, I'll break down each field in the staticState object in detail below:

  • capacity - the rated maximum capacity of the vehicle battery in watt-hours (Wh). This reflects the manufacturer-reported design capacity, not the current charge level. May be null for manufacturers that do not expose this value.
  • keyPaired - whether a manufacturer virtual key has been paired with this vehicle. This field is currently relevant for Tesla vehicles, which require a secondary pairing step after OAuth before commands can be issued. The user must visit https://www.tesla.com/_ak/<developer-domain> to pair the virtual key for your application. Other manufacturers may adopt a similar requirement in the future, in which case this field will reflect their pairing status as well.
    • true — the virtual key has been paired; vehicle commands will be accepted by the manufacturer
    • false — the virtual key has not been paired; vehicle commands will be rejected by the manufacturer. You should prompt the user to complete the pairing step before attempting to send commands.
    • null — virtual key pairing is not applicable for this manufacturer (for example, non-Tesla vehicles that use standard OAuth without a separate key-association step), or the pairing status is temporarily unavailable.