Closed LucasBrazi06 closed 1 month ago
This behaviour is expected if we are looking at a single EV. Spreading out the load of a single EV throughout the day is not implemented.
However, for use cases with more than a single EV: The default "highest objective" is fair share. Fair share tries to schedule all EVs ASAP. Data structures for REST requests: https://github.com/SAP/emobility-smart-charging/blob/master/src/main/java/com/sap/charging/server/api/v1/OptimizeChargingProfilesRequest.java#L33 https://github.com/SAP/emobility-smart-charging/blob/master/src/main/java/com/sap/charging/server/api/v1/store/OptimizerSettings.java#L39
However, we can also change the objective to "peak shaving". Importantly, please note:
Having said that, the following is an example of "peak shaving" (spread the load) over the day. Note that the two EVs are not scheduled at the same time even though the fuse would support it.
{
"event": {
"eventType": "Reoptimize"
},
"state": {
"fuseTree": {
"rootFuse": {
"@type": "Fuse",
"id": 0,
"fusePhase1": 96,
"fusePhase2": 96,
"fusePhase3": 96,
"phase1Connected": true,
"phase2Connected": true,
"phase3Connected": true,
"children": [
{
"@type": "ChargingStation",
"id": 1,
"fusePhase1": 32,
"fusePhase2": 32,
"fusePhase3": 32,
"phase1Connected": true,
"phase2Connected": true,
"phase3Connected": true
}, {
"@type": "ChargingStation",
"id": 2,
"fusePhase1": 32,
"fusePhase2": 32,
"fusePhase3": 32,
"phase1Connected": true,
"phase2Connected": true,
"phase3Connected": true
}
]
}
},
"cars": [
{
"canLoadPhase1": 1,
"canLoadPhase2": 1,
"canLoadPhase3": 1,
"id": 1,
"carType": "BEV",
"maxCapacity": 300,
"minLoadingState": 0,
"startCapacity": 30,
"minCurrent": 18,
"minCurrentPerPhase": 6,
"maxCurrent": 96,
"maxCurrentPerPhase": 32,
"suspendable": true,
"immediateStart": false,
"canUseVariablePower": true,
"chargingStarted": true,
"name": "####",
"timestampArrival": 0,
"timestampDeparture": 50000
}, {
"canLoadPhase1": 1,
"canLoadPhase2": 1,
"canLoadPhase3": 1,
"id": 2,
"carType": "BEV",
"maxCapacity": 300,
"minLoadingState": 0,
"startCapacity": 30,
"minCurrent": 18,
"minCurrentPerPhase": 6,
"maxCurrent": 96,
"maxCurrentPerPhase": 32,
"suspendable": true,
"immediateStart": false,
"canUseVariablePower": true,
"chargingStarted": true,
"name": "####",
"timestampArrival": 0,
"timestampDeparture": 50000
}
],
"carAssignments": [
{
"carID": 1,
"chargingStationID": 1
}, {
"carID": 2,
"chargingStationID": 2
}
],
"currentTimeSeconds": 1
},
"optimizerSettings": {
"weightObjectiveFairShare": 0,
"weightObjectivePeakShaving": 1,
"weightObjectiveEnergyCosts": 0,
"weightObjectiveLoadImbalance": 0
}
}
Response:
{
"cars": [
{
"id": 1,
"name": "####",
"modelName": null,
"carType": "BEV",
"startCapacity": 30.0,
"timestampArrival": 0,
"timestampDeparture": 50000,
"maxCapacity": 300.0,
"minCurrent": 18.0,
"minCurrentPerPhase": 6.0,
"maxCurrent": 96.0,
"maxCurrentPerPhase": 32.0,
"suspendable": true,
"canUseVariablePower": true,
"immediateStart": false,
"minLoadingState": 0.0,
"canLoadPhase1": 1.0,
"canLoadPhase2": 1.0,
"canLoadPhase3": 1.0,
"currentPlan": [
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
7.564967320261477,
0.0,
0.0,
....
],
"chargingStarted": true,
"chargedCapacity": 0.0
},
{
"id": 2,
"name": "####",
"modelName": null,
"carType": "BEV",
"startCapacity": 30.0,
"timestampArrival": 0,
"timestampDeparture": 50000,
"maxCapacity": 300.0,
"minCurrent": 18.0,
"minCurrentPerPhase": 6.0,
"maxCurrent": 96.0,
"maxCurrentPerPhase": 32.0,
"suspendable": true,
"canUseVariablePower": true,
"immediateStart": false,
"minLoadingState": 0.0,
"canLoadPhase1": 1.0,
"canLoadPhase2": 1.0,
"canLoadPhase3": 1.0,
"currentPlan": [
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
32.0,
7.529411764705833,
0.0,
0.0,
0.0,
0.0,
...
],
"chargingStarted": true,
"chargedCapacity": 0.0
}
]
}
@ofrendo Thanks a million for your comment and your example, very helpful!!! I will play with Peak Shaving then when Departure Time is active.
I though also about a workaround to stay in the Fair Share which is well tested:
It seems working :)
First response:
{
"cars": [
{
"id": 1,
"name": "CS-ABB-00001~1",
"modelName": null,
"carType": "BEV",
"startCapacity": 543.4782608695652,
"timestampArrival": 0,
"timestampDeparture": 57746,
"maxCapacity": 2173.913043478261,
"minCurrent": 18,
"minCurrentPerPhase": 6,
"maxCurrent": 227.36700000000002,
"maxCurrentPerPhase": 75.789,
"suspendable": true,
"canUseVariablePower": true,
"immediateStart": false,
"minLoadingState": 1847.8260869565217,
"canLoadPhase1": 1,
"canLoadPhase2": 1,
"canLoadPhase3": 1,
"currentPlan": [
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
75.789,
71.4971370332476,
0,
0,
0,
...
],
"chargingStarted": false,
"chargedCapacity": 0
}
]
}
After lowering the Car's maxCurrent/maxCurrentPerPhase according its Departure Time and calling the Optimizer again, the peak is shaved:
'{
"cars": [
{
"id": 1,
"name": "CS-ABB-00001~1",
"modelName": null,
"carType": "BEV",
"startCapacity": 543.4782608695652,
"timestampArrival": 0,
"timestampDeparture": 57746,
"maxCapacity": 2173.913043478261,
"minCurrent": 18,
"minCurrentPerPhase": 6,
"maxCurrent": 120,
"maxCurrentPerPhase": 40,
"suspendable": true,
"canUseVariablePower": true,
"immediateStart": false,
"minLoadingState": 1847.8260869565217,
"canLoadPhase1": 1,
"canLoadPhase2": 1,
"canLoadPhase3": 1,
"currentPlan": [
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
40,
6,
0,
0,
0,
...
],
"chargingStarted": false,
"chargedCapacity": 0
}
]
}
Let me know if it sounds good to you. In the meantime, I'll test it in production :-).
It worked in prod! We'll check now in a real customer's tenant with many DC chargers and vehicles. I'll also code the change of the algo per site area so we can test both strategies: fair share and peak shaving.
@ofrendo I want to give you feedbacks from the field, as you kindly answered me, that may help other users to deal with the same scenario.
Calling the Optimizer twice in Fair Share strategy by lowering the car's constraints in e-Mobility to do Peak Shaving worked:
Site Area settings:
Settings above can be overridden by users or plannings on our side.
Without e-Mobility optimization (only Departure Time + Fair Share): The charging session took all the power at the beginning and ended charging before departure time:
With e-Mobility optimization: The charging session took only the needed power up to the Departure Time:
So it has the advantages of Fair Share + Peak Shaving and worked with multiple cars connected to the charger! There is still few adjustments to do like cutting the peak at the end of the session.
Thanks again for your support!!!
Looks good! Thank you for providing the examples, excellent to see 👍
Hello! Not sure if this is the right place to ask, but I see in @LucasBrazi06 screenshot all the possible settings for the smart charging. Unfortunately, in my installation it looks like this:
I only have the checkmark to enable the smart charging, which I enabled, but I dont get to see all the values like opimization strategy etc... what am I doing wrong?
Thanks for your help!
Hello! Not sure if this is the right place to ask, but I see in @LucasBrazi06 screenshot all the possible settings for the smart charging. Unfortunately, in my installation it looks like this:
I only have the checkmark to enable the smart charging, which I enabled, but I dont get to see all the values like opimization strategy etc... what am I doing wrong?
Thanks for your help!
You can get touch with me by email. Thanks.
I have sent you an email, thanks!
On Thu 15. Aug 2024 at 21:48, Serge FABIANO @.***> wrote:
Hello! Not sure if this is the right place to ask, but I see in @LucasBrazi06 https://github.com/LucasBrazi06 screenshot all the possible settings for the smart charging. Unfortunately, in my installation it looks like this:
I only have the checkmark to enable the smart charging, which I enabled, but I dont get to see all the values like opimization strategy etc... what am I doing wrong?
Thanks for your help!
You can get touch with me by email. Thanks.
— Reply to this email directly, view it on GitHub https://github.com/SAP/emobility-smart-charging/issues/59#issuecomment-2292074036, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGNZ4VJGPDQGS7B6XXN4PTZRUAY3AVCNFSM6AAAAABMSJ4JEOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJSGA3TIMBTGY . You are receiving this because you commented.Message ID: @.***>
When same root fuse + car is sent with different departure times (timestampDeparture), the result is always the same!
I would have expected that the longer the departure time, the lower the amps delivered every 15 mins.
For instance changing the departure time value below (500, 5000, 50000) always results in the same response:
Could you advice?
Thanks in advance!