Короткий ответ: OCPP 1.6 — протокол про то, чтобы станция работала. OCPP 2.0.1 — протокол про то, чтобы сетью из тысячи станций можно было управлять. Если у вас десять станций одного производителя и задача — снимать транзакции и перезагружать зависшую точку, 1.6J закрывает её полностью. Если станций сотни, они разнородны, а от платформы требуются умное распределение мощности, подписанные показания и внятная диагностика — 1.6 начинает мешать.
OCPP разрабатывает Open Charge Alliance. В обиходе живут 1.5, 1.6, 2.0, 2.0.1 и 2.1; фактическим отраслевым стандартом остаётся 1.6J — вариант с транспортом JSON поверх WebSocket. Вариант 1.6S на SOAP считается устаревшим.
Пять различий, которые ощущаются на практике
1. Модель устройства
В 1.6 станция — это набор коннекторов с номерами. Всё, что не коннектор, протоколу не видно: вентилятор, силовой модуль, счётчик, шкаф существуют только в прошивке.
В 2.0.1 введена иерархия ChargingStation → EVSE → Connector и типизированные компоненты с переменными. Каждый узел адресуем: у него можно прочитать состояние и задать параметр стандартным сообщением.
Практическое следствие: в 1.6 сообщение «станция неисправна» приходится расшифровывать по вендорскому коду ошибки, у каждого производителя своему. В 2.0.1 отказ привязан к компоненту, и разнородный парк перестаёт быть зоопарком с переводчиком на каждую марку.
2. Транзакции
В 1.6 транзакция описывается парой StartTransaction / StopTransaction, а связь событий с сессией держится на transactionId, который выдаёт сервер. При обрыве связи в неудачный момент восстановить целостность тяжело — отсюда классическая беда 1.6: потерянные и задвоенные сессии, которые потом руками сводит биллинг.
В 2.0.1 всё сведено к одному сообщению TransactionEvent с типами Started / Updated / Ended и явным transactionId со стороны станции. Событийная модель переживает разрывы связи заметно лучше.
3. Безопасность
В 1.6 базовая спецификация не описывает ни аутентификацию, ни шифрование — на практике используют HTTP Basic поверх WSS. Профиль безопасности появился позже отдельным документом.
В 2.0.1 профили безопасности встроены: от базовой аутентификации до клиентских сертификатов с TLS, плюс управление сертификатами и подписанные показания счётчика. Для коммерческого учёта и для сетей, попадающих под требования регуляторов, это перестаёт быть опцией.
4. Smart Charging
В 1.6 профили зарядки существуют, но их выразительность ограничена. Управлять группой станций за одним вводом, не превышая выделенную мощность, приходится логикой на стороне платформы.
В 2.0.1 Smart Charging проработан существенно глубже, а в связке с ISO 15118 появляется двусторонний обмен с автомобилем. Для паркинга, где мощность ввода меньше суммы номиналов станций, разница принципиальная — подробнее в статье о балансировке мощности.
5. Диагностика
В 1.6 набор статусов невелик, а детали отказа уезжают в вендорские поля. Мониторинг разнородного парка превращается в набор частных интеграций.
В 2.0.1 есть подписка на переменные, пороги и уведомления. Платформа узнаёт о деградации до того, как водитель упрётся в неработающую станцию.