VDV 261 communication sequences¶
Baseline
These flows reflect BetterFleet's interpretation of VDV 261 Edition 2, issue 05/2023. Verification against the current 07/2024 issue is pending.
V2ICP request and response bodies are flat JSON objects. The examples do not use
a parameters wrapper.
1. Establish VAS 3 InternetAccess¶
sequenceDiagram
participant EV as EVCC
participant SECC as SECC
participant BE as Backend
EV->>SECC: ServiceDiscoveryReq
SECC-->>EV: ServiceDiscoveryRes (ServiceID 3)
EV->>SECC: ServiceDetailReq (ServiceID 3)
SECC-->>EV: ServiceDetailRes (ParameterSetID 4)
EV->>BE: Establish HTTPS through SECC gateway
Note over EV,BE: IPv6, port 443 and TLS; BetterFleet requires VIN Basic Authentication
The EVCC initiates the connection. The SECC forwards traffic and does not inspect the V2ICP payload. Although the 05/2023 profile permits an empty password, BetterFleet's facade requires a configured credential bound to the request VIN and EVCC ID.
2. Initial synchronisation¶
At seq = 0, the vehicle sends all available fields and always includes
h2_stat and bat_stat.
{
"seq": 0,
"vin": "WVWZZZ1JZXW000001",
"evccid": "001122334455",
"odo": 12345,
"bat_reqtime": 75,
"bat_eamount": 42,
"prec_reqtime": 25,
"prec_eamount": 8,
"chrg_stat": 1,
"h2_stat": 0,
"bat_stat": 0
}
The backend returns every backend field. It uses the field's SNA value when a business value is unavailable.
{
"seq": 0,
"vin": "WVWZZZ1JZXW000001",
"driveoff": 12,
"prec_dsrd": 1,
"prec_hvac": 1,
"ambienttemp": 18,
"target_dist": 120,
"target_soc": 85
}
Here, driveoff = 12 means 60 minutes until departure.
If the backend has no calculated values, a valid initial placeholder response is:
{
"seq": 0,
"vin": "WVWZZZ1JZXW000001",
"driveoff": -1,
"prec_dsrd": -1,
"prec_hvac": -1,
"ambienttemp": -51,
"target_dist": -1,
"target_soc": -1
}
3. Cyclic delta exchange¶
After the initial exchange, the vehicle normally sends changed values every ten seconds. It still sends both safety fields in every request.
sequenceDiagram
participant EV as EVCC
participant BE as Backend
loop Active charging session
EV->>BE: POST flat JSON (seq n, changes, h2_stat, bat_stat)
BE-->>EV: 200 flat JSON (same seq and vin, changed directives)
Note over EV,BE: Normal interval 10 seconds
end
{
"seq": 6,
"vin": "WVWZZZ1JZXW000001",
"evccid": "001122334455",
"bat_eamount": 35,
"h2_stat": 0,
"bat_stat": 0
}
{
"seq": 6,
"vin": "WVWZZZ1JZXW000001",
"driveoff": 8
}
driveoff = 8 means 40 minutes until departure.
4. Preconditioning coordination¶
The backend uses prec_dsrd to request preconditioning and, when configured to
select the type, uses prec_hvac. The vehicle reports prec_reqtime and
prec_eamount so the backend can plan the work.
prec_eamount is the energy required or estimated for preconditioning. It is
not an accumulated-energy counter. bprec_eamount is absent from the 05/2023
standard and is not part of the BetterFleet VDV wire model.
sequenceDiagram
participant EV as EVCC
participant BE as BetterFleet
EV->>BE: prec_reqtime and prec_eamount
BE->>BE: Combine departure, charging and power constraints
BE-->>EV: driveoff, prec_dsrd and optional prec_hvac
EV->>BE: Updated requirements and safety states
5. Retry and reconnect¶
sequenceDiagram
participant EV as EVCC
participant BE as Backend
EV->>BE: POST (seq n)
Note over EV: Wait up to 15 seconds
EV->>BE: Retry 1
EV->>BE: Retry 2
EV->>BE: Retry 3
Note over EV,BE: If still unsuccessful, close and re-establish the connection
The protocol also defines idle and reconnect behaviour around the active charging session. The current FastAPI facade does not implement that state machine.
6. BetterFleet extension boundary¶
Schema discovery, generated OpenAPI, and
POST /vdv261/v2icp/diagnostics are BetterFleet integration aids. They do
not form part of the V2ICP exchange defined by VDV 261.