Добавление EV-маршрутизации на веб-карту: понимание API

В этой статье, первой части серии, мы рассмотрим, как разработчики могут использовать службу маршрутизации электромобилей, чтобы легко создавать привлекательные и полезные приложения, помогающие владельцам электромобилей планировать маршруты поездок с остановками для подзарядки.

Согласно недавнему отчету BloombergNEF (источник: BloombergNEF), к 2040 году 57% продаваемых легковых автомобилей будут электрическими. Сегодня потребители по-прежнему изо всех сил пытаются спланировать поездки, чтобы обеспечить своевременный и удобный доступ к зарядным устройствам — в значительной степени из-за навигационного программного обеспечения, в котором отсутствуют услуги маршрутизации, необходимые водителям электромобилей (EV).

К счастью, TomTom помогает владельцам электромобилей избежать «беспокойства по поводу дальности» с помощью отмеченной наградами службы маршрутизации электромобилей на большие расстояния. В этой статье, состоящей из двух частей, мы рассмотрим, как разработчики могут использовать сервис EV Routing, чтобы легко создавать привлекательные и полезные приложения для потребителей. Мы начнем в части 1 с рассмотрения соответствующих API и изучения информации, относящейся к электромобилям. Во второй части мы создадим приложение, которое позволит пользователю указать начальное и конечное местоположение, рассчитать маршрут между этими конечными точками и отображать как маршрут, так и остановки для зарядки по пути.

Чтобы использовать службы TomTom, вам необходимо получить ключ API, который разрешает их использование. В приведенном ниже коде и URL-адресах обязательно замените «YOUR_API_KEY» полученным ключом API TomTom.

Вы также должны войти в панель инструментов разработчика TomTom, отредактировать свое приложение и убедиться, что все необходимые продукты TomTom (такие как API поиска и API расширенного поиска) отмечены галочками.

Теперь давайте рассмотрим различные API, которые мы будем использовать для создания приложения.

API поиска

Чтобы использовать TomTom Routing API или услугу Long Distance EV Routing, необходимы уникальные начальное и конечное местоположения, которые соединяет маршрут. API поиска предоставляет мощный механизм для преобразования разговорного ввода пользователя (например, Лос-Анджелес) в уникальное местоположение (например, широта 34,05224 и долгота -118,24334).

Этот механизм — служба TomTom Fuzzy Search. Чтобы найти «Лос-Анджелес», вы можете сделать простой веб-запрос по следующему URL-адресу:

https://api.tomtom.com/search/2/search/los%20angeles.json?key=YOUR_API_KEY

Ответ будет выглядеть следующим образом, а свойство position первого результата будет указывать широту и долготу города.

{
  "summary": {
    "query": "los angeles",
    "queryType": "NON_NEAR",
    "queryTime": 47,
    "numResults": 10,
    "offset": 0,
    "totalResults": 28490,
    "fuzzyLevel": 1
  },
  "results": [
    {
      "type": "Geography",
      "id": "US/GEO/p0/355711",
      "score": 5.90292,
      "entityType": "Municipality",
      "address": {
        "municipality": "Los Angeles",
        "countrySecondarySubdivision": "Los Angeles",
        "countryTertiarySubdivision": "Los Angeles",
        "countrySubdivision": "CA",
        "countryCode": "US",
        "country": "United States",
        "countryCodeISO3": "USA",
        "freeformAddress": "Los Angeles, CA",
        "countrySubdivisionName": "California"
      },
      "position": {
        "lat": 34.05224,
        "lon": -118.24334
      },
      "viewport": {
        "topLeftPoint": {
          "lat": 34.33673,
          "lon": -118.6684
        },
        "btmRightPoint": {
          "lat": 33.70366,
          "lon": -118.15541
        }
      },
      "boundingBox": {
        "topLeftPoint": {
          "lat": 34.33673,
          "lon": -118.6684
        },
        "btmRightPoint": {
          "lat": 33.70366,
          "lon": -118.15541
        }
      },
      "dataSources": {
        "geometry": {
          "id": "00005543-3600-3c00-0000-00005a3f4260"
        }
      }
    },
    .
    .
    .
  ]
}

Для веб-разработчиков TomTom также предлагает веб-SDK для упрощения взаимодействия со своими API. Этот API предоставляет простую функцию вызова для большинства служб. Эти функции обычно форматируют URL-адрес, выдают веб-запрос, извлекают и анализируют ответ и возвращают обещание JavaScript, с которым вы можете взаимодействовать.

Например, следующий вызов функции эквивалентен предыдущему примеру нечеткого поиска. Если веб-запрос выполнен успешно, вызывается функция «тогда» обещания JavaScript с простым объектом, содержащим ответ; в противном случае вызывается его функция «поймать» с информацией, описывающей ошибку.

tt.services.fuzzySearch({ key: 'YOUR_API_KEY', query:  'Los Angeles' })
  .go()
  .then(function(response) {
    console.log('Success!');
    console.log(response);
  })
  .catch(function(error) {
    console.log('Error!');
    console.log(error);
  });

API маршрутизации

TomTom предлагает API маршрутизации, который рассчитывает маршрут между двумя конечными точками. API маршрутизации учитывает информацию о дорожном движении в режиме реального времени и погодные явления, чтобы помочь потребителям избежать задержек. Этот мощный API теперь включает в себя услугу Long-Distance EV Routing, которая позволяет потребителям предоставлять подробную информацию о своих электромобилях и получать маршрут, специально рассчитанный для обеспечения доступности зарядных станций по пути.

Чтобы пользоваться сервисом, вам необходимо понимать основную информацию, которая может понадобиться при создании приложений для электромобилей. К сожалению, информация, предоставляемая производителями автомобилей и рецензентами, часто включает сокращения, которые используются практически без пояснений. В таблице ниже вы найдете глоссарий некоторых распространенных сокращений, используемых в описании электромобилей.

Ампер (A) – Ампер является мерой электрического тока – количества электрического заряда, перемещающегося по цепи за определенный период времени. Используя водопровод в качестве аналогии, это похоже на скорость потока.

Вольты (В) — напряжение является мерой электродвижущей силы. Он измеряет силу, движущую электрический заряд по цепи. Опять же, используя водопровод в качестве аналогии, это похоже на давление воды.

Переменный ток (AC) — при переменном токе электрический ток меняет направление через равные промежутки времени. Когда вы что-то подключаете дома или на работе, питание подается через переменный ток.

Постоянный ток (DC) — при постоянном токе электрический ток течет в одном направлении. Устройства на батарейках работают от постоянного тока. По правде говоря, большинство устройств работают на постоянном токе. Подключаемые устройства просто делают дополнительный шаг, сначала преобразуя переменный ток от сетевой розетки в требуемый постоянный ток.

Ватт (Вт) — мощность — это показатель общей мощности. Его довольно легко вычислить, умножив напряжение на силу тока (Вт = В x А). кВтКиловатт Один киловатт равен тысяче ватт (кВт = Вт / 1000). Например, 1 киловатт-час может дать один киловатт мощности в течение всего часа, 500 ватт в течение двух часов или 1 ватт в течение 1000 часов.

Статус заряда (SoC) — состояние заряда (SoC) — это процент заряда аккумулятора, который может варьироваться от 0 (пустой) до 1 (полный заряд). ). Например, SoC, равный 0,5, будет означать, что батарея заряжена на 50%.

Электромобиль с подключаемым модулем (PEV) — электромобиль с подключением к сети — это любое транспортное средство, которое можно подключить к сети для зарядки аккумулятора. Он включает в себя как аккумуляторные электромобили (BEV), так и гибридные электромобили с подключаемым модулем (PHEV).

Электромобиль с аккумулятором (BEV) — электромобиль с аккумулятором полностью работает от аккумулятора. Он не использует бензин.

Подключаемый гибридный электромобиль (PHEV) — подключаемый гибридный электромобиль работает либо от аккумулятора, либо от бензина. Его можно заправить либо путем добавления бензина, либо путем подключения к сети для подзарядки аккумулятора.

Существует также ряд параметров, используемых в качестве входных данных для службы. Первая — это модель потребления, которая описывает емкость аккумулятора автомобиля, скорость его разрядки и поведение в различных условиях вождения (например, при ускорении).

Другой набор входных данных для этой службы описывает модель зарядки — различные режимы зарядки, поддерживаемые электромобилем. Это включает в себя тип вилки (или разъема), тип электрического устройства и скорость, с которой автомобиль будет заряжаться при использовании определенной комбинации вилки и устройства. К счастью, TomTom предоставил очень гибкую модель для указания этой информации, которая подходит практически для любого автомобиля. Вот немного подробнее:

  • Тип разъема описывает физическое соединение между автомобилем и зарядной станцией. Хотя появляются некоторые распространенные типы вилок (например, SAE J1772), остается множество различных разъемов, которые часто зависят от производителя автомобиля или географического положения.
  • Тип объекта описывает электрические характеристики порта на зарядной станции. Одна вилка может обеспечивать подключение к разным портам, каждый из которых имеет разные электрические характеристики, включая тип тока (переменный или постоянный), напряжение (120 В или 240 В), силу тока (12 А или 20 А) и (для подключения переменного тока) количество фаз (1 или 3).
  • Кривая зарядки описывает, как конкретное транспортное средство будет заряжаться на объекте с учетом его конкретных характеристик. Скорость, с которой заряжаются аккумуляторы, в основном зависит от типа объекта и уникальной схемы зарядки транспортного средства. Однако аккумуляторы не обязательно заряжаются линейно. Как правило, они заряжаются быстрее, когда они пусты, и медленнее, когда они приближаются к полной зарядке.

Чтобы обеспечить точную оценку времени зарядки, TomTom API позволяет использовать уникальную кривую зарядки автомобиля при подключении к определенной паре типа штепсельной вилки и типа объекта.

Использование службы междугородной маршрутизации электромобилей

Служба Long Distance EV Routing рассчитывает маршрут между пунктом отправления и пунктом назначения, включая остановки для подзарядки. Модель потребления и многие другие параметры передаются в виде простых параметров строки запроса в URL-адресе веб-запроса.

Например, при сопровождении тела POST, в котором указаны режимы зарядки, приведенный ниже URL-адрес рассчитывает маршрут между Бостоном (широта 42,35899, долгота -71,05863) и Вашингтоном, округ Колумбия (широта 38,89206, долгота -77,01991), убедившись, что маршрут включает остановки для зарядки. чтобы оставшийся заряд батареи никогда не опускался ниже 20 кВтч. Модель потребления определяет электромобиль, полностью заряженный до максимальной мощности 100 кВтч. Далее указывается, что при движении с постоянной скоростью 100 км/ч автомобиль будет потреблять 20 кВтч заряда аккумулятора на каждые 100 км пути.

https://api.tomtom.com/routing/1/calculateLongDistanceEVRoute/42.35899,-71.05863:38.89206,-77.01991/json?vehicleEngineType=electbric&maxChargeInkWh=100&currentChargeInkWh=100&constantSpeedConsumptionInkWhPerHundredkm=100,20&minChargeAtDestinationInkWh=20&minChargeAtChargingStopsInkWh=20&key=YOUR_API_KEY

Режимы тарификации передаются в теле веб-запроса POST. В приведенном ниже примере используется вилка SAE J1772, которую можно подключить к однофазной сети переменного тока напряжением 200–240 вольт, силой тока 32 ампера или выше. При подключении автомобиль будет заряжаться до 80 кВтч за 25 000 секунд, а до полной зарядки 100 кВтч — за 50 000 секунд.

{
  "chargingModes": [
    {
      "chargingConnections": [
        {
          "facilityType": "Charge_200_to_240V_1_Phase_at_32A",
          "plugType": "SAE_J1772"
        },
        {
          "facilityType": "Charge_200_to_240V_1_Phase_above_32A",
          "plugType": "SAE_J1772"
        }
      ],
      "chargingCurve": [
        {
          "chargeInkWh": 80,
          "timeToChargeInSeconds": 25000
        },
        {
          "chargeInkWh": 100,
          "timeToChargeInSeconds": 50000
        }
      ]
    }
  ]
}

Успешный ответ включает сводку маршрута, участки маршрута, сводку каждого участка и точки (широту и долготу), составляющие этот участок. Маршрут разбит на этапы, чтобы можно было представить каждую остановку для зарядки. Остановка для подзарядки (или пункт назначения) отображается в качестве конечной точки на каждом участке маршрута. Вот выдержка из примера ответа:

{
  "formatVersion": "0.0.12",
  "routes": [
    {
      "summary": {
        "lengthInMeters": 713569,
        "travelTimeInSeconds": 64578,
        "trafficDelayInSeconds": 0,
        "departureTime": "2019-10-14T09:16:54-04:00",
        "arrivalTime": "2019-10-15T03:13:12-04:00",
        "batteryConsumptionInkWh": 142.71380000000002,
        "remainingChargeAtArrivalInkWh": 21.01679999999999,
        "totalChargingTimeInSeconds": 39266
      },
      "legs": [
        {
          "summary": {
            "lengthInMeters": 318653,
            "travelTimeInSeconds": 11640,
            "trafficDelayInSeconds": 0,
            "departureTime": "2019-10-14T09:16:54-04:00",
            "arrivalTime": "2019-10-14T12:30:54-04:00",
            "batteryConsumptionInkWh": 63.7306,
            "remainingChargeAtArrivalInkWh": 36.2694,
            "chargingInformationAtEndOfLeg": {
              "targetChargeInkWh": 100,
              "chargingTimeInSeconds": 39266,
              "chargingConnections": [
                {
                  "facilityType": "Charge_200_to_240V_1_Phase_at_32A",
                  "plugType": "SAE_J1772"
                }
              ],
              "chargingParkUuid": "2cfb40b9-66ed-3afd-4a01-b5ba00153b86"
            }
          },
          "points": [
            {
              "latitude": 42.35899,
              "longitude": -71.05864
            },
            ...

В этой статье мы рассмотрели сервис TomTom Long Distance EV Routing и обсудили, что вам нужно знать, чтобы создать приложение, которое использует этот сервис для предоставления информации о маршрутизации и зарядке пользователям электромобилей.

Во второй части этой статьи мы создадим приложение, которое позволит пользователям указать начальную и конечную точки, рассчитает маршрут между ними и покажет остановки зарядки по маршруту.

Чтобы начать работу с тем, что описано в этой статье, и узнать больше о некоторых продуктах TomTom, перейдите по ссылкам ниже:

Посетите наш портал для разработчиков для получения дополнительных руководств, документации, примеров использования, демонстраций продуктов и многого другого, а также свяжитесь с нами на нашем форуме, Dev.to и Twitch!

Удачи и счастливого картографирования!

Эта статья изначально была опубликована на https://developer.tomtom.com/blog. Первоначальный автор — Эрик Линч.