SC6 코드 읽기 2 — sc6-meter, EvseManager 상태 머신, OCPP까지
코드 읽기 1편에서 BSP(sc6-bsp.c)를 봤다. 2편에서는 전력량계 프로그램 sc6-meter, EVerest 안쪽의 충전 상태 머신 EvseManager, 그리고 사건이 OCPP 메시지가 되어 서버로 가는 길을 따라갔다.
코드 읽기 1편에서 BSP(sc6-bsp.c)를 봤다. 2편에서는 전력량계 프로그램 sc6-meter, EVerest 안쪽의 충전 상태 머신 EvseManager, 그리고 사건이 OCPP 메시지가 되어 서버로 가는 길을 따라갔다.
기능을 더 붙이기 전에 지금 돌아가는 코드를 이해하는 날로 정했다. 프로그램이 뜨는 순서, EVerest 구성 YAML, EVerest와 우리 프로그램이 MQTT로 주고받는 것, 그리고 BSP(sc6-bsp.c)의 구조·CP 판정·명령 처리를 정리했다.
OCPP 거래의 meterStop이 늘 0이었다. 보드의 전력량계 JSY-MK-163T를 EVerest에 연결하려 했는데, EVerest의 범용 전력량계 모듈은 레지스터 값을 무조건 실수(float)로 해석했다. 정수로 값을 주는 JSY는 읽을 수 없었다. sc6-bsp와 같은 방...
지금까지 충전기는 평문 WebSocket으로 서버에 붙어 있었다. 시험용 인증서를 만들고 SteVe를 HTTPS로 바꾼 뒤, 보드를 OCPP 보안 프로파일 2(TLS + Basic 인증)로 접속시켰다. 틀린 비밀번호와 평문 접속이 거절되는 것까지 확인했다.
충전기와 서버 사이의 네트워크가 끊기면 어떻게 되는지 보려 했다. 그런데 시험을 시작하기도 전에, 서버에 접속은 했지만 등록되지 않는 문제가 나타났다. 원인은 EVerest OCPP 라이브러리의 경쟁 조건이었다. 4줄 패치로 고친 뒤 끊김 시험 네 가지를 모두 통과했다.