VolatileOCPP – Implementation of Open Charge Alliance OCPP Test Scenarios

4 hours ago 2

https://ocpp.us

string url = "ws://localhost:8180/steve/websocket/CentralSystemService/1"; string protocol = "ocpp1.6"; CentralSystem s = new CentralSystem(url, protocol); s.RunScenarios();

Scenarios can be run against the SteVe OCPP Server implementation as a testbed. Create a ChargeBox ID and OCPP ID tag volatileocpp.

Scenario implementations are built based directly on the CompliancyTestTool PDF included within the repository. Not every scenario is implemented. Many will be implemented in time. Some will be implemented when software/hardware that implements it gets tested. Security profiles 1 and 2 have been tested using MaEVe CSMS.

https://github.com/steve-community/steve

https://github.com/thoughtworks/maeve-csms/

Issues found and reported so far:

steve-community/steve#1609 citrineos/citrineos#61 EVerest/libiso15118#52 EVerest/libiso15118#53

Unless your CS or CSMS implements every OCPP method, then not every scenario will apply to your implementation. Those scenarios will be skipped during execution. Most implementations will be a subset of the full OCPP specification.

If you need help verifying your OCPP implementation, email [email protected] to see how we can help.

Supports method: Authorize Supports method: BootNotification Supports method: DataTransfer Supports method: FirmwareStatusNotification Supports method: Heartbeat Supports method: MeterValues Supports method: StatusNotification Supports method: StartTransaction Supports method: StopTransaction Done Running scenario: ocpp.Scenarios.TC_001_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_003_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_004_1_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_004_2_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_005_1_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_007_CSMS -- PASSED! Skipping incompatible test ocpp.Scenarios.TC_010_CSMS Running scenario: ocpp.Scenarios.TC_023_1_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_023_2_CSMS Configure the volatileocpp ID Tag to be expired then press enter. -- PASSED! Running scenario: ocpp.Scenarios.TC_023_3_CSMS Configure the volatileocpp ID Tag to be blocked then press enter. -- PASSED! Running scenario: ocpp.Scenarios.TC_024_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_064_CSMS WARNING: DataTransfer Response ACCEPTED -- PASSED!

A failed result might look like this.

Supports method: Authorize Supports method: BootNotification Supports method: DataTransfer Supports method: FirmwareStatusNotification Supports method: Heartbeat Supports method: MeterValues Supports method: StatusNotification Supports method: StartTransaction Supports method: StopTransaction Done Running scenario: ocpp.Scenarios.TC_001_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_003_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_004_1_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_004_2_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_005_1_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_007_CSMS -- PASSED! Skipping incompatible test ocpp.Scenarios.TC_010_CSMS Running scenario: ocpp.Scenarios.TC_023_1_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_023_2_CSMS Configure the volatileocpp ID Tag to be expired then press enter. 10/29/2024 9:12:13 PM|Error|WebSocket.messagec|System.Exception: Invalid response at ocpp.Scenarios.TC_023_2_CSMS.<>c__DisplayClass3_0.<RunScenario>b__0(Object sender, MessageEventArgs e) in /Users/bperry/projects/ocpp/Scenarios/TC_023_2_CSMS.cs:line 39 at WebSocketSharp.WebSocket.messagec(MessageEventArgs e) -- FAILED! Running scenario: ocpp.Scenarios.TC_023_3_CSMS Configure the volatileocpp ID Tag to be blocked then press enter. 10/29/2024 9:12:17 PM|Error|WebSocket.messagec|System.Exception: Invalid response at ocpp.Scenarios.TC_023_3_CSMS.<>c__DisplayClass3_0.<RunScenario>b__0(Object sender, MessageEventArgs e) in /Users/bperry/projects/ocpp/Scenarios/TC_023_3_CSMS.cs:line 39 at WebSocketSharp.WebSocket.messagec(MessageEventArgs e) -- FAILED! Running scenario: ocpp.Scenarios.TC_024_CSMS -- PASSED! Running scenario: ocpp.Scenarios.TC_064_CSMS WARNING: DataTransfer Response ACCEPTED -- PASSED!

https://arxiv.org/html/2404.06635v2

Simulating Chargers for your CSMS

Some basic charger simulations can be performed.

string url = "ws://localhost:8180/steve/websocket/CentralSystemService/1"; string protocol = "ocpp1.6"; List<Task> tasks = new List<Task>(); for (int i = 1; i< 11; i++) { Charger c = new Charger(url, protocol); c.ConnectorID = i.ToString(); c.IDTag = "volatileocpp"; tasks.Add(Task.Run(c.Simulate)); } foreach (Task t in tasks) t.Wait();

image

image

image

Read Entire Article