Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter

- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
This commit is contained in:
Eric F
2026-06-08 00:38:27 -04:00
parent 468cfeaa50
commit d398a6ced2
7326 changed files with 1177561 additions and 7 deletions

View File

@@ -0,0 +1,335 @@
{
"description": "Tests one external watt setpoint for one EVSE",
"start_times": [
"2024-12-17T13:00:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 10.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
}
],
"node_type": "Generic",
"energy_usage_root": {
"current_A": {
"L1": 0.029999999329447746,
"L2": 0.0,
"L3": 0.0,
"N": 0.0
},
"energy_Wh_import": {
"L1": 1.7999999523162842,
"L2": 0.0,
"L3": 0.0,
"total": 1.7999999523162842
},
"power_W": {
"L1": 2.0,
"L2": 0.0,
"L3": 0.0,
"total": 2.0
},
"timestamp": "2024-12-17T13:08:46.479Z",
"voltage_V": {
"DC": 248.10000610351563,
"L1": 0.0,
"L2": 0.0
},
"frequency_Hz": {
"L1": 47.0,
"L2": 47.0,
"L3": 47.0
}
},
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 9.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:46.479Z"
}
],
"schedule_setpoints": [
{
"setpoint": {
"priority": 42,
"source": "external_limit_1_setpoint",
"frequency_table": [
{
"frequency_Hz": 49.0,
"total_power_W": -7000.0
},
{
"frequency_Hz": 50.0,
"total_power_W": 0
},
{
"frequency_Hz": 51.0,
"total_power_W": 7000.0
}
]
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "EVSE1_leave",
"value": -10.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
},
"total_power_W": {
"source": "EVSE1_leave",
"value": -6900.0
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "EVSE1_leave",
"value": -10.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
},
"total_power_W": {
"source": "EVSE1_leave",
"value": -6900.0
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "EVSE1_leave",
"value": -10.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
},
"total_power_W": {
"source": "EVSE1_leave",
"value": -6900.0
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_leave",
"value": -9.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
},
"total_power_W": {
"source": "external_limit_1_leave",
"value": -6210.0
}
},
"timestamp": "2024-12-17T13:08:46.479Z"
}
],
"uuid": "evse1",
"valid_for": 10
}
]
]
}

View File

@@ -0,0 +1,323 @@
{
"description": "Tests loadbalancing between two DC EVSE nodes (50/50)",
"start_times": [
"2024-12-17T13:00:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 2,
"slice_watt": 1000,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"total_power_W": {
"value": 10000.0,
"source": "EVSE1_leaves"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"total_power_W": {
"value": 50000.0,
"source": "EVSE1_leaves"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 60.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
},
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"total_power_W": {
"value": 12000.0,
"source": "EVSE2_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE2_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE2_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE2_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE2_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"total_power_W": {
"value": 60000.0,
"source": "EVSE2_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 80.0,
"source": "EVSE2_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE2_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE2_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE2_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse2"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 125.0,
"source": "GridConnection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 120.0,
"source": "GridConnection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "GridConnection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 125.0,
"source": "GridConnection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 120.0,
"source": "GridConnection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "GridConnection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "EVSE1_root",
"value": 60.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_NumPhasesActive",
"value": 3
},
"total_power_W": {
"source": "EVSE1_root",
"value": 41400.0
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "EVSE1_root",
"value": 60.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_NumPhasesActive",
"value": 3
},
"total_power_W": {
"source": "EVSE1_root",
"value": 41400.0
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "EVSE1_root",
"value": 60.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_NumPhasesActive",
"value": 3
},
"total_power_W": {
"source": "EVSE1_root",
"value": 41400.0
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1",
"valid_for": 10
},
{
"limits_root_side": {
"ac_max_current_A": {
"source": "GridConnection_root",
"value": 60.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_NumPhasesActive",
"value": 3
},
"total_power_W": {
"source": "GridConnection_root",
"value": 41400.0
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "GridConnection_root",
"value": 60.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_NumPhasesActive",
"value": 3
},
"total_power_W": {
"source": "GridConnection_root",
"value": 41400.0
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "GridConnection_root",
"value": 60.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_NumPhasesActive",
"value": 3
},
"total_power_W": {
"source": "GridConnection_root",
"value": 41400.0
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse2",
"valid_for": 10
}
]
]
}

View File

@@ -0,0 +1,299 @@
{
"description": "Tests loadbalancing between two EVSE nodes (50/50)",
"start_times": [
"2024-12-17T13:00:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 0.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
},
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 0.0,
"source": "EVSE2_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE2_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE2_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE2_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE2_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 8.0,
"source": "EVSE2_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE2_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE2_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE2_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE2_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse2"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "GridConnection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "GridConnection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "GridConnection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "GridConnection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "GridConnection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "GridConnection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "GridConnection_root",
"value": 24.0
},
"ac_max_phase_count": {
"source": "GridConnection_phase,EVSE1_phase",
"value": 3
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "GridConnection_root",
"value": 24.0
},
"ac_max_phase_count": {
"source": "GridConnection_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "GridConnection_root",
"value": 24.0
},
"ac_max_phase_count": {
"source": "GridConnection_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1",
"valid_for": 10
},
{
"limits_root_side": {
"ac_max_current_A": {
"source": "EVSE2_leave",
"value": 8.0
},
"ac_max_phase_count": {
"source": "GridConnection_phase,EVSE2_phase",
"value": 3
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "EVSE2_leave",
"value": 8.0
},
"ac_max_phase_count": {
"source": "GridConnection_phase,EVSE2_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "EVSE2_leave",
"value": 8.0
},
"ac_max_phase_count": {
"source": "GridConnection_phase,EVSE2_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse2",
"valid_for": 10
}
]
]
}

View File

@@ -0,0 +1,88 @@
{
"basefile": "1_0_two_ac_evse_load_balancing.json",
"description": "Tests load balancing between two EVSE nodes, one is charging and one is unplugged with 0A in idle",
"patches": [
{
"op": "replace",
"path": "/request/children/1/schedule_import/0/limits_to_root/ac_max_current_A/value",
"value": 0.0
},
{
"op": "replace",
"path": "/request/children/1/evse_state",
"value": "Unplugged"
},
{
"op": "replace",
"path": "/expected_results/0/0/limits_root_side/ac_max_current_A/source",
"value": "GridConnection_root,EVSE1_root"
},
{
"op": "replace",
"path": "/expected_results/0/0/limits_root_side/ac_max_current_A/value",
"value": 32.0
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/0/limits_to_root/ac_max_current_A/source",
"value": "GridConnection_root,EVSE1_root"
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/0/limits_to_root/ac_max_current_A/value",
"value": 32.0
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/1/limits_to_root/ac_max_current_A/source",
"value": "GridConnection_root,EVSE1_root"
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/1/limits_to_root/ac_max_current_A/value",
"value": 32.0
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_current_A/source",
"value": ""
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_current_A/value",
"value": 0.0
},
{
"op": "remove",
"path": "/expected_results/0/1/limits_root_side/ac_max_phase_count"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_current_A/source",
"value": ""
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_current_A/value",
"value": 0.0
},
{
"op": "remove",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_phase_count"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_current_A/source",
"value": ""
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_current_A/value",
"value": 0.0
},
{
"op": "remove",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_phase_count"
}
]
}

View File

@@ -0,0 +1,61 @@
{
"basefile": "1_0_two_ac_evse_load_balancing.json",
"description": "Tests load balancing between two EVSE nodes, one is charging and one is unplugged with 6A in idle",
"patches": [
{
"op": "replace",
"path": "/request/children/1/schedule_import/0/limits_to_root/ac_max_current_A/value",
"value": 6.0
},
{
"op": "replace",
"path": "/request/children/1/evse_state",
"value": "Unplugged"
},
{
"op": "replace",
"path": "/expected_results/0/0/limits_root_side/ac_max_current_A/value",
"value": 26.0
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/0/limits_to_root/ac_max_current_A/value",
"value": 26.0
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/1/limits_to_root/ac_max_current_A/value",
"value": 26.0
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_current_A/source",
"value": "EVSE2_root"
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_current_A/value",
"value": 6.0
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_current_A/source",
"value": "EVSE2_root"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_current_A/value",
"value": 6.0
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_current_A/source",
"value": "EVSE2_root"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_current_A/value",
"value": 6.0
}
]
}

View File

@@ -0,0 +1,90 @@
{
"basefile": "1_0_two_ac_evse_load_balancing.json",
"description": "Tests load balancing between two EVSE nodes, one is charging and one is unplugged with 6A in idle",
"patches": [
{
"op": "replace",
"path": "/request/children/0/schedule_import/0/limits_to_root/ac_max_current_A/value",
"value": 45.0
},
{
"op": "replace",
"path": "/request/children/0/schedule_import/0/limits_to_leaves/ac_max_current_A/value",
"value": 44.0
},
{
"op": "replace",
"path": "/request/children/1/schedule_import/0/limits_to_root/ac_max_current_A/value",
"value": 0.0
},
{
"op": "replace",
"path": "/request/children/1/schedule_export/0/limits_to_root/ac_max_current_A/value",
"value": 8.0
},
{
"op": "remove",
"path": "/request/children/1/schedule_export/0/limits_to_leaves/ac_max_current_A"
},
{
"op": "replace",
"path": "/expected_results/0/0/limits_root_side/ac_max_current_A/value",
"value": 40.0
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/0/limits_to_root/ac_max_current_A/value",
"value": 40.0
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/1/limits_to_root/ac_max_current_A/value",
"value": 40.0
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_current_A/value",
"value": -8.0
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_phase_count/source",
"value": "BrokerFastCharging_FixedValue"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_current_A/value",
"value": -8.0
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_phase_count/source",
"value": "BrokerFastCharging_FixedValue"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_current_A/value",
"value": -8.0
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_phase_count/source",
"value": "BrokerFastCharging_FixedValue"
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_current_A/source",
"value": "EVSE2_root"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_current_A/source",
"value": "EVSE2_root"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_current_A/source",
"value": "EVSE2_root"
}
]
}

View File

@@ -0,0 +1,109 @@
{
"basefile": "1_0_two_ac_evse_load_balancing.json",
"description": "Tests load balancing between two EVSE nodes, both are discharging",
"patches": [
{
"op": "replace",
"path": "/request/children/0/schedule_import/0/limits_to_root/ac_max_current_A/value",
"value": 0.0
},
{
"op": "replace",
"path": "/request/children/0/schedule_export/0/limits_to_root/ac_max_current_A/value",
"value": 12.0
},
{
"op": "replace",
"path": "/request/children/1/schedule_import/0/limits_to_root/ac_max_current_A/value",
"value": 0.0
},
{
"op": "replace",
"path": "/request/children/1/schedule_export/0/limits_to_root/ac_max_current_A/value",
"value": 11.0
},
{
"op": "remove",
"path": "/request/children/0/schedule_export/0/limits_to_leaves/ac_max_current_A"
},
{
"op": "remove",
"path": "/request/children/1/schedule_export/0/limits_to_leaves/ac_max_current_A"
},
{
"op": "replace",
"path": "/expected_results/0/0/limits_root_side/ac_max_current_A/value",
"value": -8.0
},
{
"op": "replace",
"path": "/expected_results/0/0/limits_root_side/ac_max_phase_count/source",
"value": "BrokerFastCharging_FixedValue"
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/0/limits_to_root/ac_max_current_A/value",
"value": -8.0
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/0/limits_to_root/ac_max_phase_count/source",
"value": "BrokerFastCharging_FixedValue"
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/1/limits_to_root/ac_max_current_A/value",
"value": -8.0
},
{
"op": "replace",
"path": "/expected_results/0/0/schedule/1/limits_to_root/ac_max_phase_count/source",
"value": "BrokerFastCharging_FixedValue"
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_current_A/source",
"value": "GridConnection_root"
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_current_A/value",
"value": -8.0
},
{
"op": "replace",
"path": "/expected_results/0/1/limits_root_side/ac_max_phase_count/source",
"value": "BrokerFastCharging_FixedValue"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_current_A/source",
"value": "GridConnection_root"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_current_A/value",
"value": -8.0
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/0/limits_to_root/ac_max_phase_count/source",
"value": "BrokerFastCharging_FixedValue"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_current_A/source",
"value": "GridConnection_root"
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_current_A/value",
"value": -8.0
},
{
"op": "replace",
"path": "/expected_results/0/1/schedule/1/limits_to_root/ac_max_phase_count/source",
"value": "BrokerFastCharging_FixedValue"
}
]
}

View File

@@ -0,0 +1,235 @@
{
"description": "Tests one external limit for one EVSE",
"start_times": [
"2024-12-17T13:00:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 0.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "grid_connection_root,external_limit_1_root,EVSE1_root",
"value": 32.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "grid_connection_root,external_limit_1_root,EVSE1_root",
"value": 32.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "grid_connection_root,external_limit_1_root,EVSE1_root",
"value": 32.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1",
"valid_for": 10
}
]
]
}

View File

@@ -0,0 +1,235 @@
{
"description": "Tests one external limit for one EVSE",
"start_times": [
"2024-12-17T13:00:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 0.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 13.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "external_limit_1_leave",
"value": 13.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_leave",
"value": 13.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_leave",
"value": 13.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1",
"valid_for": 10
}
]
]
}

View File

@@ -0,0 +1,283 @@
{
"description": "Tests one external limit for one EVSE",
"start_times": [
"2024-12-17T13:00:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [
{
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 0.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_2_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_2_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_2_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 31.0,
"source": "external_limit_2_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_2_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_2_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"uuid": "evse1",
"valid_for": 10
}
]
]
}

View File

@@ -0,0 +1,518 @@
{
"description": "Tests one external limit for one EVSE",
"start_times": [
"2024-12-17T13:00:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [
{
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 0.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:40.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 5.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:37.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 6.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:38.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:39.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:40.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 0.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:41.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:42.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:43.479Z"
}
],
"schedule_setpoints": [],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_2_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_2_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_2_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 31.0,
"source": "external_limit_2_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_2_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_2_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "",
"value": 0.0
}
},
"timestamp": "2024-12-17T13:08:37.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_leave",
"value": 6.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:38.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:39.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:40.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "",
"value": 0.0
}
},
"timestamp": "2024-12-17T13:08:41.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:42.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_2_leave",
"value": 31.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_2_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:43.479Z"
}
],
"uuid": "evse1",
"valid_for": 10
}
]
]
}

View File

@@ -0,0 +1,400 @@
{
"description": "Tests one external limit for one EVSE",
"start_times": [
"2024-12-17T13:00:00.000Z",
"2024-12-17T13:01:00.000Z",
"2024-12-17T13:02:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Both",
"switch_3ph1ph_max_nr_of_switches_per_session": 3,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 0.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {},
"limits_to_root": {
"total_power_W": {
"value": 11000.0,
"source": "external_limit_1_root"
}
},
"timestamp": "2024-12-17T13:00:01.479Z"
},
{
"limits_to_leaves": {},
"limits_to_root": {
"total_power_W": {
"value": 2000.0,
"source": "external_limit_1_root"
}
},
"timestamp": "2024-12-17T13:00:01.479Z"
},
{
"limits_to_leaves": {},
"limits_to_root": {
"total_power_W": {
"value": 5000.0,
"source": "external_limit_1_root"
}
},
"timestamp": "2024-12-17T13:00:01.479Z"
},
{
"limits_to_leaves": {},
"limits_to_root": {
"total_power_W": {
"value": 0.0,
"source": "external_limit_1_root"
}
},
"timestamp": "2024-12-17T13:00:01.479Z"
}
],
"schedule_setpoints": [],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "grid_connection_root,EVSE1_root",
"value": 32.0
},
"ac_max_phase_count": {
"source": "EVSE1_minphase",
"value": 1
},
"total_power_W": {
"source": "grid_connection_root,EVSE1_root",
"value": 7360.0
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "grid_connection_root,EVSE1_root",
"value": 32.0
},
"ac_max_phase_count": {
"source": "EVSE1_minphase",
"value": 1
},
"total_power_W": {
"source": "grid_connection_root,EVSE1_root",
"value": 7360.0
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"timestamp": "2024-12-17T13:00:01.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"uuid": "evse1",
"valid_for": 10
}
],
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_root",
"value": 15.942028999328613
},
"ac_max_phase_count": {
"source": "grid_connection_phase,EVSE1_phase",
"value": 3
},
"total_power_W": {
"source": "external_limit_1_root",
"value": 11000.0
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"timestamp": "2024-12-17T13:00:01.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"uuid": "evse1",
"valid_for": 10
}
],
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_root",
"value": 15.942028999328613
},
"ac_max_phase_count": {
"source": "grid_connection_phase,EVSE1_phase",
"value": 3
},
"total_power_W": {
"source": "external_limit_1_root",
"value": 11000.0
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"timestamp": "2024-12-17T13:00:01.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"uuid": "evse1",
"valid_for": 10
}
]
]
}

View File

@@ -0,0 +1,30 @@
{
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"expected_results": [
[]
],
"request": {
"children": [],
"node_type": "Undefined",
"schedule_setpoints": [],
"uuid": "",
"schedule_import": [],
"schedule_export": []
},
"start_times": [
"2025-01-16T15:42:56.390Z"
]
}

View File

@@ -0,0 +1,88 @@
{
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "",
"value": 0.0
},
"total_power_W": {
"source": "",
"value": 0.0
}
},
"timestamp": "2024-01-01T12:00:00.000Z"
}
],
"schedule_setpoints": [],
"uuid": "evse_manager",
"valid_for": 10
}
]
],
"request": {
"children": [],
"energy_usage_root": {
"current_A": {
"L1": 0.029999999329447746,
"L2": 0.0,
"L3": 0.0,
"N": 0.0
},
"energy_Wh_import": {
"L1": 1.7999999523162842,
"L2": 0.0,
"L3": 0.0,
"total": 1.7999999523162842
},
"power_W": {
"L1": 2.0,
"L2": 0.0,
"L3": 0.0,
"total": 2.0
},
"timestamp": "2024-03-27T12:41:16.864Z",
"voltage_V": {
"DC": 248.10000610351563,
"L1": 0.0,
"L2": 0.0
}
},
"node_type": "Evse",
"priority_request": false,
"schedule_import": [],
"schedule_export": [],
"schedule_setpoints": [],
"uuid": "evse_manager"
},
"start_times": [
"2024-01-01T12:00:00.000Z"
]
}

View File

@@ -0,0 +1,338 @@
{
"description": "Tests one external ampere setpoint for one EVSE",
"start_times": [
"2024-12-17T13:00:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 10.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 9.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:46.479Z"
}
],
"schedule_setpoints": [
{
"setpoint": {
"priority": 42,
"source": "external_limit_1_setpoint",
"ac_current_A": 7.5
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"setpoint": {
"priority": 41,
"source": "external_limit_1_setpoint",
"ac_current_A": 13.0
},
"timestamp": "2024-12-17T13:08:37.479Z"
},
{
"setpoint": {
"priority": 41,
"source": "external_limit_1_setpoint",
"ac_current_A": -8.0
},
"timestamp": "2024-12-17T13:08:40.479Z"
},
{
"setpoint": {
"priority": 41,
"source": "external_limit_1_setpoint",
"ac_current_A": -12.0
},
"timestamp": "2024-12-17T13:08:44.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": 7.5
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": 7.5
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": 7.5
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": 13.0
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:37.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": -8.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:40.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "EVSE1_leave",
"value": -10.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:44.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_leave",
"value": -9.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
}
},
"timestamp": "2024-12-17T13:08:46.479Z"
}
],
"uuid": "evse1",
"valid_for": 10
}
]
]
}

View File

@@ -0,0 +1,366 @@
{
"description": "Tests one external watt setpoint for one EVSE",
"start_times": [
"2024-12-17T13:00:00.000Z"
],
"config": {
"nominal_ac_voltage": 230.0,
"update_interval": 1,
"schedule_interval_duration": 60,
"schedule_total_duration": 1,
"slice_ampere": 0.5,
"slice_watt": 500,
"debug": false,
"switch_3ph1ph_while_charging_mode": "Never",
"switch_3ph1ph_max_nr_of_switches_per_session": 10,
"switch_3ph1ph_switch_limit_stickyness": "DontChange",
"switch_3ph1ph_power_hysteresis_W": 500,
"switch_3ph1ph_time_hysteresis_s": 30
},
"request": {
"children": [
{
"children": [
{
"children": [],
"evse_state": "Charging",
"node_type": "Evse",
"priority_request": false,
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 10.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 0.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "EVSE1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "EVSE1_phase"
},
"ac_min_current_A": {
"value": 6.0,
"source": "EVSE1_mincurrent"
},
"ac_min_phase_count": {
"value": 1,
"source": "EVSE1_minphase"
},
"ac_number_of_active_phases": 3,
"ac_supports_changing_phases_during_charging": true
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "evse1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 9.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:46.479Z"
}
],
"schedule_setpoints": [
{
"setpoint": {
"priority": 42,
"source": "external_limit_1_setpoint",
"total_power_W": 4242.0
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"setpoint": {
"priority": 41,
"source": "external_limit_1_setpoint",
"total_power_W": 8242.0
},
"timestamp": "2024-12-17T13:08:37.479Z"
},
{
"setpoint": {
"priority": 41,
"source": "external_limit_1_setpoint",
"total_power_W": -4242.0
},
"timestamp": "2024-12-17T13:08:40.479Z"
},
{
"setpoint": {
"priority": 41,
"source": "external_limit_1_setpoint",
"total_power_W": -14242.0
},
"timestamp": "2024-12-17T13:08:44.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "external_limit_1_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "external_limit_1_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"uuid": "external_limit_1"
}
],
"node_type": "Generic",
"schedule_export": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 16.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_import": [
{
"limits_to_leaves": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_leave"
}
},
"limits_to_root": {
"ac_max_current_A": {
"value": 32.0,
"source": "grid_connection_root"
},
"ac_max_phase_count": {
"value": 3,
"source": "grid_connection_phase"
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
}
],
"schedule_setpoints": [],
"uuid": "grid_connection"
},
"expected_results": [
[
{
"limits_root_side": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": 6.147826194763184
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
},
"total_power_W": {
"source": "external_limit_1_setpoint",
"value": 4242.0
}
},
"schedule": [
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": 6.147826194763184
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
},
"total_power_W": {
"source": "external_limit_1_setpoint",
"value": 4242.0
}
},
"timestamp": "2024-12-17T13:00:00.000Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": 6.147826194763184
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
},
"total_power_W": {
"source": "external_limit_1_setpoint",
"value": 4242.0
}
},
"timestamp": "2024-12-17T13:08:36.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": 11.944927215576172
},
"ac_max_phase_count": {
"source": "grid_connection_phase,external_limit_1_phase,EVSE1_phase",
"value": 3
},
"total_power_W": {
"source": "external_limit_1_setpoint",
"value": 8242.0
}
},
"timestamp": "2024-12-17T13:08:37.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_setpoint",
"value": -6.147826194763184
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
},
"total_power_W": {
"source": "external_limit_1_setpoint",
"value": -4242.0
}
},
"timestamp": "2024-12-17T13:08:40.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "EVSE1_leave",
"value": -10.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
},
"total_power_W": {
"source": "EVSE1_leave",
"value": -6900.0
}
},
"timestamp": "2024-12-17T13:08:44.479Z"
},
{
"limits_to_root": {
"ac_max_current_A": {
"source": "external_limit_1_leave",
"value": -9.0
},
"ac_max_phase_count": {
"source": "BrokerFastCharging_FixedValue",
"value": 3
},
"total_power_W": {
"source": "external_limit_1_leave",
"value": -6210.0
}
},
"timestamp": "2024-12-17T13:08:46.479Z"
}
],
"uuid": "evse1",
"valid_for": 10
}
]
]
}