OCPP-сервер и CSMS для сети зарядных станций
CSMS EV Armenia - это OCPP-сервер, к которому станции подключаются по WebSocket. Он принимает OCPP 1.6J, 2.0.1 и 2.1, проверяет пароль каждой станции, записывает каждое входящее сообщение в надёжную очередь до подтверждения и позволяет управлять станциями из админ-панели. Биллинг, приложения для водителей и армянские платежи входят в ту же платформу.
Что делает OCPP-сервер
Система управления зарядными станциями (CSMS) - это бэкенд, с которым общаются станции. Наш сервер слушает один WebSocket-адрес, определяет версию протокола, которую запросила станция, и передаёт соединение подходящему обработчику. Станции нужны только адрес сервера, идентификатор и пароль.
| Версия | Статус в платформе |
|---|---|
| OCPP 1.6J (JSON) | Основной поток: загрузка, heartbeat, статус, авторизация, начало и окончание транзакции, показания счётчика, статусы прошивки и диагностики, DataTransfer. |
| OCPP 2.0.1 | Основной поток через события транзакций, статусы и показания, а также события безопасности, отчёты об устройстве и журналы - принимаются и сохраняются. |
| OCPP 2.1 | Соединение согласуется как 2.1, основной поток транзакций использует обработчики 2.0.1. Сообщения только из 2.1 (V2X, управление DER, обмен батарей) подтверждаются, но не обрабатываются. |
OCPP 1.6 и 2.x несовместимы между собой, поэтому сервер обрабатывает каждую версию отдельно. Подробнее: OCPP простыми словами.
Прокрутите таблицу в сторону, чтобы увидеть её целиком
Удалённое управление из админ-панели
- Старт и стоп сессии на коннекторе, живая сессия: энергия, мощность и стоимость по мере набора.
- Перезагрузка станции (мягкая или жёсткая) и разблокировка коннектора с застрявшим кабелем.
- Доступность: вывод коннектора из работы и возврат.
- Запрос сообщения от станции, например статуса или показаний.
- Очистка кэша, чтение и изменение ключей конфигурации.
- Произвольные команды: любой вызов OCPP, который поддерживает станция, например профиль зарядки, с показом ответа. Произвольные команды не ограничены фиксированным списком, поэтому пользуйтесь ими осторожно.
Надёжность: показания счётчика не теряются
Биллинг зависит от показаний счётчика, поэтому входящие сообщения записываются в надёжную очередь до ответа станции и применяются по порядку после него. После перезапуска сервера сообщения из очереди остаются. Станции, потерявшие связь, переподключаются и досылают накопленное.
В имитационном тесте 200 виртуальных станций OCPP 1.6 слали по 150 сообщений в секунду на общей машине с 2 vCPU: медианное время подтверждения MeterValues было около 2 мс с очередью против 5-6 мс при синхронной обработке; 95-й процентиль - 4-6 мс против 11-23 мс. Это синтетический замер на общем оборудовании с имитированными станциями, а не обещание для вашей площадки. На пилоте мы повторим тест с вашими цифрами.
Безопасность
- Каждая станция проходит проверку по HTTP Basic (подход профилей безопасности OCPP 1 и 2). Чтобы получить профиль 2, запускайте сервер за TLS на вашем обратном прокси. Аутентификация клиентскими сертификатами (профиль 3) не реализована.
- Конечную точку защищают ограничения размера сообщений, частоты подключений и keep-alive-пинги.
- Аккаунты команды в админ-панели используют роли, двухфакторный вход и журнал аудита - кто что изменил.
- Журнал сообщений OCPP хранит трафик по станциям для поддержки и споров, срок хранения настраивается.
Масштабирование и эксплуатация
Сервер - процесс Node.js с PostgreSQL 16 и Redis 7. Можно запустить несколько экземпляров за балансировщиком: Redis хранит присутствие станций и передаёт команды экземпляру, который держит соединение станции. Метрики Prometheus и проверки состояния встроены, весь стек запускается через Docker Compose. Цифр мощности кроме приведённой симуляции мы не публикуем.
Чего пока нет
- Автоматического управления нагрузкой. Профили умной зарядки можно отправлять вручную; платформа сама не распределяет мощность площадки между коннекторами.
- Возможностей OCPP 2.1 сверх базы 2.0.1.
- Аутентификации станций по сертификатам и ISO 15118 Plug and Charge.
- Роуминга OCPI. Модуль 2.2.1 существует, но выключен по умолчанию и пока не проверен на чужих сетях.
CSMS - одна часть платформы. Водители пользуются приложением, платят через местные платёжные сервисы, а вы управляете всем из одной панели. Смотрите обзор платформы или закажите демо ниже.
Вопросы и ответы
Чем OCPP 1.6J отличается от 2.0.1?
Это разные протоколы, они несовместимы. В 2.0.1 есть управление устройством, улучшенные транзакции и безопасность, поддержка ISO 15118. Многие станции в эксплуатации ещё на 1.6J, поэтому CSMS должна говорить на обоих.
Нужно ли менять мои станции?
Нет, если они поддерживают OCPP 1.6J, 2.0.1 или 2.1. В настройках станции указываются адрес сервера, идентификатор и пароль.
Можно ли отправлять профили умной зарядки?
Да, через произвольные команды в админ-панели. Автоматического балансирования нагрузки пока нет.
Хранится ли история сообщений OCPP?
Да. Журнал сообщений хранит трафик по станциям настраиваемый срок, это помогает в поддержке и спорах по биллингу.
Где это работает?
На нашем хостинге или на вашем сервере через Docker Compose с PostgreSQL 16 и Redis 7.
Источники
- Open Charge Alliance: Open Charge Point Protocol
- Open Charge Alliance: OCPP 2.1 is now available (проверено 23 января 2025 г.)
Расскажите о вашей зарядной сети
Опишите станции и способы оплаты. Ответим в течение одного рабочего дня.