OCPP 한눈에 보기 — 1.6J, 2.0.1, 2.1은 무엇이 다른가
전기차 충전기와 관제 서버(CSMS)가 대화하는 규격 OCPP를 실무 관점에서 정리한다. 1.6J에서 2.0.1, 2.1로 넘어가며 바뀐 메시지 구조, 트랜잭션 모델, Device Model, 보안과 ISO 15118을 비교한다.
CSMS 아키텍처 — 버전별 OCPP 서버, API 허브, 레거시 공존
OCPP 1.6과 2.0.1 서버를 따로 두고, 관리 화면·충전기 HMI·PKI·배치를 API 허브 하나로 묶은 구조를 정리한다. 레거시 시스템을 한 번에 바꾸지 않고 옆에 세워 옮기면서 생긴 경합과 교훈도 함께 남긴다.
OCPP-J 메시지 파이프라인 구현 — 핸드셰이크부터 응답 매칭까지
Spring WebSocket으로 OCPP-J 서버를 직접 구현하며 정한 설계를 정리한다. 서브프로토콜 거부, 충전기 식별, 프레임 파싱, 스키마 대신 디코더를 쓴 이유, null 제거, 서버발 요청의 상관관계와 타임아웃까지 다룬다.
충전기 수천 대의 WebSocket 세션 운영기 — 중복 접속, 배포 끊김, NAT, 좀비 세션
OCPP 서버를 운영하며 실제로 겪은 연결 문제와 해결책을 정리한다. 같은 ID의 중복 접속, 배포 때 close frame 없이 끊긴 소켓이 부른 재전송 폭주, 통신사 NAT 유휴 타임아웃, 좀비 세션 정리, 로그 소음 줄이기까지.
트랜잭션과 계량값의 함정 — 멱등 처리, 늦게 온 Stop, 충전기 편차 정규화
충전 이력과 요금에 직결되는 트랜잭션·계량값 처리에서 겪은 문제를 정리한다. 1.6의 transactionId 발급, 중복·지연 StopTransaction, meterStop=0, 2.0.1 TransactionEvent의 seqNo와 경합, 계량값 해석 검증, 충전기별 입력 편차를 정규화 계층으로 흡수하는 방법까지.
OCTT 인증 통과기 — OCPP 1.6과 2.0.1 CSMS 적합성 시험에서 배운 것
OCA의 적합성 시험 도구 OCTT로 OCPP 1.6과 2.0.1 CSMS 인증을 받으며 정리한 준비 과정과 반복되는 실패 유형을 공유한다. 수동 액션 자동화, 프롬프트 값 그대로 쓰기, 보안 프로파일 맞추기, 인증서·ISO 15118 시험 설정까지.
OCPP 보안 프로파일과 인증서 운영 — Basic 인증부터 mTLS, SignCertificate까지
OCPP 보안 프로파일 0~3의 의미와 실제 설정, 충전기·서버·CA 키스토어 세트를 한 번에 만드는 방법, SignCertificate로 충전기 인증서를 발급하는 흐름, 현장 IP 서버에서 루트 인증서를 자동 설치하게 만든 방법, 자주 하는 실수를 정리한다.
Plug & Charge 1차 필드 테스트 — ISO 15118 인증서 체계와 CSMS가 해야 할 일
국내에서 막 시작된 PnC 1차 테스트를 진행하며 터득한 것을 정리한다. V2G 루트·CPO 서브 CA·계약 인증서로 이어지는 PKI 구조, OCPP 1.6 DataTransfer와 2.0.1 네이티브 메시지, OCSP 검증을 fail-closed로 설계한 이유, 목 PKI를 만들며 배운 것, 현장에서 발견한 버그들.
OCPP 버전별 세션 관리 화면이 필요한 이유 — 관제·원격 명령·시험을 한 콘솔에
1.6과 2.0.1 서버를 동시에 운영하며 만든 세션 관리 콘솔의 설계를 정리한다. 왜 버전별 화면이 필요한지, 페이지는 공유하고 설정만 바꾸는 구조, 응답 정규화, 액션 카탈로그를 세 층으로 나눈 방법, 브라우저를 가상 충전기로 쓰는 시험 도구까지.
충전기 HMI를 WPF로 만들기 — 계층화, 정규화, 키오스크 UI, 무중단 업데이트
충전기 안에서 도는 Windows HMI를 WPF(.NET 8)로 만들며 쌓은 노하우를 정리한다. 커넥터별 독립 화면, 충전기 쪽 OCPP 클라이언트와 오프라인 저장 후 전송, 벤더·하드웨어 편차를 계층과 정규화로 흡수한 방법, 터치·키오스크 UI 팁, 워치독과 무중단 업데이트까지.