Платформа, на которой работает ChargeMeCar

Apostol CSMS — двигатель, на котором работает ChargeMeCar

ChargeMeCar - розничный сервис на Apostol CSMS: платформе управления зарядными станциями с тремя версиями OCPP, OCPI-роумингом, платежами через Stripe Connect и несколькими независимыми операторами на одном экземпляре. Эта страница прямо говорит, что в продуктиве, что готово и что пока в планах.

OCPP 1.5 / 1.6 / 2.0.1OCPI 2.2.1 + 2.3.0Stripe ConnectРазовая оплата по AFIRНесколько операторов, один экземплярОткрытое ядро
Как связаны

Как ChargeMeCar соотносится с платформой

Три вещи, которые стоит знать - ради прозрачности, а не для буклета.

1

Тот же двигатель, без форка

ChargeMeCar работает на той же сборке ПО, что и любой другой бренд на платформе, под криптографически подписанной лицензией бренда. Релизы платформы доходят до него так же, как до всех: одна команда обновления, проверки состояния, откат той же формы.

2

Операционно независим

Наш аккаунт Stripe, наша инфраструктура, наше юридическое лицо - FROG IT SARL, Ницца. Владелец платформы не управляет ChargeMeCar и не может касаться его денег: платежи списываются в аккаунтах Stripe владельцев станций, а данные бренда зашифрованы ключом самого бренда.

3

Открытый фундамент, документированное ядро

Платформа стоит на открытом фундаменте, опубликованном под свободной лицензией на GitHub: транспортном фреймворке и платформенном слое на PostgreSQL. Бренд покупает или лицензирует прикладной слой зарядки поверх него - а ядро, от которого он зависит, может прочитать любой.

Возможности

Что умеет платформа - с честным статусом каждой строки

Три уровня, намеренно не смешанные: в продуктиве - работает на живых станциях с реальными деньгами; готово - реализовано, покрыто тестами и эмулятором станций, но промышленного объёма ещё не видело; в планах - в дорожной карте, не поставляется.

В продуктивеГотовоЧастичноВ планах

Станции

  • OCPP 1.6 - основной протокол платформы; любая станция, говорящая на нём, подключается без доработокВ продуктиве
  • OCPP 2.0.1 - 12 из 16 функциональных блоков полностью, 4 частичноГотово
  • OCPP 1.5 - старые паркиГотово
  • Смешанный парк: версия определяется автоматически, команды переводятся между форматамиГотово
  • Самостоятельное подключение владельцем - около 15 минут; станция регистрируется при первом выходе на связьВ продуктиве
  • Удалённый старт, стоп, разблокировка кабеля, перезагрузка, включение и вывод из работы - из портала, приложения водителя или по QRВ продуктиве
  • Обновление прошивки по ссылке или из библиотеки файлов платформы; журнал событий безопасности станцииГотово
  • Массовые операции над парком, иерархия площадок (регион → город → объект → зона)В планах

Тарифы и деньги

  • Пять тарифицируемых услуг: за кВт·ч, за минуту зарядки, простой после окончания, бронирование, паузаВ продуктиве
  • Тарифы по расписанию: день недели, час, день/ночьГотово
  • Stripe и Stripe Connect: прямое списание в аккаунте владельца станции, квитанции от имени владельца, возвратыГотово
  • Разовая оплата по QR без регистрации - требование AFIR в ЕС; сквозной тест против настоящего StripeГотово
  • Комиссия платформы удерживается с каждого платежа; ежемесячная выписка с расшифровкой владельцуВ продуктиве
  • Предоплатный баланс организации, списание за каждую сессию по кВт·ч для своих парковВ продуктиве
  • Двойная запись по внутренним счетам - суммы сходятся по построениюВ продуктиве
  • Динамическое ценообразование (от спроса, от цены электроэнергии)В планах

Операторы и водители

  • Несколько независимых операторов на одном экземпляре, каждый видит только своёВ продуктиве
  • Роли: владелец, администратор, оператор, инженер, поддержка, водитель, партнёрВ продуктиве
  • Партнёры - дочерняя сеть внутри оператора, с учётом выручкиГотово
  • Веб-приложение водителя: карта с фильтрами, старт и стоп, ход сессии, история, сохранённые карты, RFID, бронирование - восемь языковВ продуктиве
  • Уведомления: push, e-mail, в интерфейсе; массовые рассылкиГотово
  • ИИ-помощник поддержки в приложении водителя, действующий строго в правах водителяГотово
  • Нативные приложения в App Store и Google PlayВ планах

Роуминг и интеграции

  • OCPI 2.2.1 и 2.3.0 одновременно, в обеих ролях: оператор зарядных точек и провайдер услуг мобильностиГотово
  • Публикация станций, тарифов, сессий и расчётных записей партнёрской сети через хаб - прошла живой обменВ продуктиве
  • Приём токенов и команд партнёра в живом обменеЧастично
  • Договоры с Hubject и Gireve - коммерческий шаг оператора; техническая предпосылка естьВ планах
  • Открытый REST API - сотни методов со спецификацией OpenAPI, события в реальном времени, вебхукиВ продуктиве
  • Коннекторы к бухгалтерии и ERPВ планах

Эксплуатация и безопасность

  • Панель оператора: станции по состояниям, энергия, выручка, загрузка, тревоги; консоль инцидентов с живой лентой событийВ продуктиве
  • Поставка контейнерами; установка, обновление без остановки и откат - четыре площадки на одном конвейереВ продуктиве
  • Вход по OAuth 2.0, включая Google; защита сессии браузера; три независимых уровня контроля доступа; журналы аудитаВ продуктиве
  • Выгрузка отчётов в Excel/CSV, конструктор отчётов, показатели загрузки и доступностиВ планах
  • Внешний мониторинг и оповещения, резервное копирование на момент времениВ планах
  • ISO 15118 Plug & Charge, взаимные сертификатыВ планах
Протоколы

Открытые стандарты, без привязки к поставщику

Платформа говорит на протоколах, которыми пользуется любая современная зарядная сеть, - OCPP в сторону оборудования, OCPI в сторону других сетей. Работает любая станция, совместимая с OCPP, кто бы её ни сделал.

OCPP - три версии, одна среда исполнения

  • OCPP 1.5 (SOAP)

    Совместимость со старым оборудованием, которое ещё в строю.

  • OCPP 1.6 (JSON / WebSocket)

    Основной протокол платформы: станция, говорящая на нём, подключается без доработок.

  • OCPP 2.0.1

    Трёхуровневая модель Станция → EVSE → Коннектор, постоянная модель устройства, события безопасности, управление прошивкой. 12 из 16 функциональных блоков полностью.

Версия определяется при подключении. Команды из портала переводятся 1.6 ↔ 2.0.1, так что смешанный парк управляется в одном интерфейсе.

OCPI - роуминг с обеими действующими версиями

  • Роль CPO

    Открывает станции, тарифы и сессии бренда партнёрским сетям - публикация через хаб прошла живой обмен.

  • Роль eMSP

    Принимает токены водителей партнёров и команды удалённого старта по тому же каналу - реализовано и протестировано, в живом обмене ещё не доказано.

Нейтральна к оборудованию по замыслу

Любая станция OCPP 1.5 / 1.6 / 2.0.1 - в том числе конкурента. Смешанный парк сводится в один портал без перепрошивки: адрес OCPP-сервера меняется в собственном веб-интерфейсе станции.

Платежи и соответствие

Построена вокруг регуляторного контура ЕС

Прямое списание через Stripe Connect в аккаунт владельца станции, разовая оплата по QR для AFIR, строгая аутентификация клиента по PSD2, GDPR в слое данных.

Stripe Connect

«Подключить через Stripe» из портала - ваш собственный аккаунт Stripe, из любой страны; прямое списание в аккаунте владельца; квитанция выпускается с аккаунта владельца от его имени; комиссия платформы удерживается с каждого платежа, ежемесячная выписка - для бухгалтерии; возвраты по тому же каналу.

AFIR - разовая оплата

Общедоступные точки обязаны принимать оплату от любого водителя без договора и приложения: водитель сканирует QR-код на станции, видит тариф, платит картой и заряжается. Реализовано и протестировано сквозным тестом против настоящего Stripe.

PSD2 / 3-D Secure

Строгую аутентификацию клиента для европейских карт обеспечивает Stripe; ни один платёжный путь её не обходит.

GDPR

Данные остаются в ЕС, водитель может удалить аккаунт из приложения, согласия фиксируются, каждое действие оставляет след в аудите.

Архитектура

Тонкий транспорт, логика в базе данных

Два слоя в ядре: однопоточный транспорт на современном C++ - HTTP, WebSocket, TLS, OCPP - и бизнес-логика, написанная в самой PostgreSQL. Осознанное инженерное решение, с изложенными доводами.

Один цикл событий для HTTP и PostgreSQL

Соединения с базой живут в том же цикле событий, что HTTP- и WebSocket-соединения: запрос - один поход в базу, одна транзакция. Десятки тысяч станций держат постоянные соединения с одним узлом при стабильной задержке.

Целостность денег по построению

Расчёт стоимости, проверка баланса, защита от двойного списания и выставление счёта выполняются в одной транзакции базы - атомарность гарантирует PostgreSQL, а не код приложения. Завершённая сессия с потерянным счётом или двойное списание при параллельных запросах исключены по построению.

Лицензия и манифест бренда

Бренд работает под криптографически подписанной лицензией - название, юридическое лицо, рынок, домен, налоговые реквизиты, - которую нельзя перевыпустить без владельца платформы. Оформление, платёжный провайдер, язык, валюта и карты живут в манифесте бренда, который правится в портале и применяется без пересборки.

Открытый фундамент

Транспортный фреймворк и платформенный слой на PostgreSQL опубликованы под свободной лицензией на GitHub; прикладной слой зарядки поверх них - продукт. Поставка - Docker Compose на собственном сервере бренда, база данных недоступна из внешнего сегмента сети.

Дорожная карта

Где платформа отстаёт от лидеров enterprise - и говорит об этом

Ничто из этого не мешает работать и зарабатывать уже сегодня; всё это - запланированная работа.

В планах

ISO 15118 Plug & Charge

Автомобиль авторизуется сам, без карты и приложения. Важно для премиальных DC-парков и входит в некоторые национальные программы субсидий.

В планах

Нативные мобильные приложения

Водители пользуются веб-приложением, которое ставится на телефон в одно касание; присутствие в App Store и Google Play - следующий шаг.

В планах

Балансировка мощности площадки

Профили мощности передаются станции и хранятся; распределение мощности между станциями одной площадки и реакция на пики сети - в планах.

В планах

Эксплуатация парка в масштабе

Массовые операции с прошивкой и настройками, иерархия площадок, выгрузка отчётов и конструктор отчётов - то, о чём просит оператор от пятидесяти станций.

В планах

Роуминговые хабы

Половина eMSP в OCPI в живом обмене и договоры с Hubject и Gireve.

Хотите платформу под своим брендом?

Новый бренд разворачивается на подготовленном сервере за минуты - со своим доменом, юридическим лицом, платёжным провайдером и оформлением. Производителям и операторам: white-label-программа на следующей странице.