Skip to content

Commit

Permalink
K01 - Small cleanups (#746)
Browse files Browse the repository at this point in the history
* Use dependency injection for ChargePoint.

Signed-off-by: Gianfranco Berardi <[email protected]>

* Added check for SmartChargingCtrlrAvailable to ChargePoint::handle_set_charging_profile_req

Signed-off-by: Christoph <[email protected]>
Signed-off-by: Gianfranco Berardi <[email protected]>

* Added test DISABLED_K01FR29_SmartChargingCtrlrAvailableIsFalse_RespondsCallError

Signed-off-by: Christoph <[email protected]>
Signed-off-by: Gianfranco Berardi <[email protected]>

* Added update to status doc

Signed-off-by: Christoph <[email protected]>
Signed-off-by: Gianfranco Berardi <[email protected]>

* Updated Component to SmartChargingCtrlrAvailableEnabled as per PR Review. Updated config to true

Signed-off-by: Christoph <[email protected]>
Signed-off-by: Gianfranco Berardi <[email protected]>

* updated status doc to represent all completed and planned K01 function requirements
updated some comment and test names after community discussion.

Signed-off-by: Coury Richards <[email protected]>
Signed-off-by: Gianfranco Berardi <[email protected]>

* Refactor so that ChargePoint constructors share logic and remove duplication.

Signed-off-by: Gianfranco Berardi <[email protected]>

* Remove duplicated comments/documentation.

Co-authored-by: Piet Gömpel <[email protected]>
Signed-off-by: Gianfranco Berardi <[email protected]>

* Move test comments/documentation above relevant tests.

Signed-off-by: Gianfranco Berardi <[email protected]>

* Reenable test; added positive test case.

Signed-off-by: Gianfranco Berardi <[email protected]>

* Correct comment.

Signed-off-by: Gianfranco Berardi <[email protected]>

* updated status document per PR comments to better highlight the reasoning

Signed-off-by: Coury Richards <[email protected]>
Signed-off-by: Gianfranco Berardi <[email protected]>

* Rename SmartChargingCtrlrAvailableEnabled to SmartChargingCtrlrEnabled.

Signed-off-by: Gianfranco Berardi <[email protected]>

* Update Smart Charging variables in new location.

config.json was removed.

Signed-off-by: Gianfranco Berardi <[email protected]>

* Add link to OCA question in status docs.

Signed-off-by: Gianfranco Berardi <[email protected]>

* Use non-deprecated build kit Docker container.

Signed-off-by: Gianfranco Berardi <[email protected]>

---------

Signed-off-by: Gianfranco Berardi <[email protected]>
Signed-off-by: Christoph <[email protected]>
Signed-off-by: Coury Richards <[email protected]>
Co-authored-by: Christoph <[email protected]>
Co-authored-by: Coury Richards <[email protected]>
Co-authored-by: Piet Gömpel <[email protected]>
  • Loading branch information
4 people authored Aug 27, 2024
1 parent 21292cf commit 9b2fba5
Show file tree
Hide file tree
Showing 10 changed files with 330 additions and 113 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build_and_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ jobs:
rsync -a source/.ci/build-kit/ scripts
- name: Pull docker container
run: |
docker pull --platform=linux/x86_64 --quiet ghcr.io/everest/build-kit-alpine:latest
docker image tag ghcr.io/everest/build-kit-alpine:latest build-kit
docker pull --platform=linux/x86_64 --quiet ghcr.io/everest/everest-ci/build-kit-base:latest
docker image tag ghcr.io/everest/everest-ci/build-kit-base:latest build-kit
- name: Run install with tests
run: |
docker run \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,14 @@
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
"mutability": "ReadOnly",
"value": true
}
],
"description": "Whether smart charging is supported.",
"type": "boolean"
},
"SmartChargingCtrlrAvailableEnabled": {
"SmartChargingCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
Expand All @@ -44,7 +45,7 @@
{
"type": "Actual",
"mutability": "ReadWrite",
"value": false
"value": true
}
],
"description": "Whether smart charging is enabled.",
Expand Down
56 changes: 27 additions & 29 deletions doc/ocpp_201_status.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ This document contains the status of which OCPP 2.0.1 numbered functional requir
|| Actor responsible for or status of requirement is unknown |
| 🤓 | Catch-all for FRs that are satisfied for other reasons (see the Remark column) |


## General - General

| ID | Status | Remark |
Expand Down Expand Up @@ -1225,7 +1224,6 @@ This document contains the status of which OCPP 2.0.1 numbered functional requir
|-----------|--------|--------|
| J03.FR.04 | | |


## SmartCharging - SetChargingProfile

| ID | Status | Remark |
Expand All @@ -1235,48 +1233,48 @@ This document contains the status of which OCPP 2.0.1 numbered functional requir
| K01.FR.03 | 🌐 💂 | `TxProfile`s without `transactionId`s are rejected. |
| K01.FR.04 || |
| K01.FR.05 || |
| K01.FR.06 | 🌐 | |
| K01.FR.07 | ⛽️ | Notified through the `signal_set_charging_profiles` callback. |
| K01.FR.06 | 🌐 💂 | As part of validation any `ChargingProile` with a stackLevel - chargingProfilePurpose - evseId combination is rejected |
| K01.FR.07 | ⛽️ | K08 - Notified through the `signal_set_charging_profiles` callback. |
| K01.FR.08 | 🌐 | `TxDefaultProfile`s are supported. |
| K01.FR.09 || |
| K01.FR.10 | | |
| K01.FR.11 | | |
| K01.FR.12 | | |
| K01.FR.13 | | |
| K01.FR.10 | ⛽️ | K08 - During validation `validFrom` and `validTo` are set if they are blank to support this |
| K01.FR.11 | | K08 - The application of `ChargingProfileSchedules` are done via the `CompositeSchedule` from `GetCompositeSchedule` |
| K01.FR.12 | | K08 - The application of `ChargingProfileSchedules` are done via the `CompositeSchedule` from `GetCompositeSchedule` |
| K01.FR.13 | | K08 - The application of `ChargingProfileSchedules` are done via the `CompositeSchedule` from `GetCompositeSchedule` |
| K01.FR.14 || |
| K01.FR.15 || |
| K01.FR.16 || |
| K01.FR.17 | | |
| K01.FR.19 | | |
| K01.FR.17 | ⛽️ | K08 - The application of `ChargingProfileSchedules` are done via the `CompositeSchedule` from `GetCompositeSchedule` |
| K01.FR.19 | | |
| K01.FR.20 || Suggests `ACPhaseSwitchingSupported` should be per EVSE, conflicting with the rest of the spec. |
| K01.FR.21 | | |
| K01.FR.21 | | There is an active community discussion on this topic. |
| K01.FR.22 | | |
| K01.FR.26 || |
| K01.FR.27 || |
| K01.FR.28 || |
| K01.FR.29 | | |
| K01.FR.30 | | |
| K01.FR.31 | | |
| K01.FR.32 | | |
| K01.FR.29 | | |
| K01.FR.30 | ⛽️ | K08 - The application of `ChargingProfileSchedules` are done via the `CompositeSchedule` from `GetCompositeSchedule` |
| K01.FR.31 | | |
| K01.FR.32 | ⛽️ | K08 - The application of `ChargingProfileSchedules` are done via the `CompositeSchedule` from `GetCompositeSchedule` |
| K01.FR.33 || |
| K01.FR.34 | | |
| K01.FR.34 | | Defer to K15 - K17 work |
| K01.FR.35 || |
| K01.FR.36 | | |
| K01.FR.37 | | |
| K01.FR.38 | 🌐 💂 | `ChargingStationMaxProfile`s with `Relative` for `chargingProfileKind` are rejected. |
| K01.FR.39 | 🌐 💂 | New `TxProfile`s matching existing `(stackLevel, transactionId)` are rejected. |
| K01.FR.40 | 🌐 💂 | `Absolute`/`Recurring` profiles without `startSchedule` fields are rejected. |
| K01.FR.41 | 🌐 💂 | `Relative` profiles with `startSchedule` fields are rejected. |
| K01.FR.42 | | |
| K01.FR.43 | | |
| K01.FR.36 | ⛽️ | K08 |
| K01.FR.37 | ⛽️ | K08 |
| K01.FR.38 | | `ChargingStationMaxProfile`s with `Relative` for `chargingProfileKind` are rejected. |
| K01.FR.39 | | New `TxProfile`s matching existing `(stackLevel, transactionId)` are rejected. |
| K01.FR.40 | | `Absolute`/`Recurring` profiles without `startSchedule` fields are rejected. |
| K01.FR.41 | | `Relative` profiles with `startSchedule` fields are rejected. |
| K01.FR.42 | ⛽️ | |
| K01.FR.43 | | Open question to OCA - https://oca.causewaynow.com/wg/OCA-TWG/mail/thread/4254 |
| K01.FR.44 || We reject invalid profiles instead of modifying and accepting them. |
| K01.FR.45 || We reject invalid profiles instead of modifying and accepting them. |
| K01.FR.46 | | |
| K01.FR.47 | | |
| K01.FR.48 | | |
| K01.FR.46 | ⛽️ | K08 |
| K01.FR.47 | ⛽️ | K08 |
| K01.FR.48 | | |
| K01.FR.49 || |
| K01.FR.50 | | |
| K01.FR.51 | | |
| K01.FR.50 | ⛽️ | K08 |
| K01.FR.51 | ⛽️ | K08 |
| K01.FR.52 || |
| K01.FR.53 || |

Expand Down
19 changes: 18 additions & 1 deletion include/ocpp/v201/charge_point.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ class ChargePoint : public ChargePointInterface, private ocpp::ChargingStationBa
std::unique_ptr<EvseManager> evse_manager;

// utility
std::unique_ptr<MessageQueue<v201::MessageType>> message_queue;
std::shared_ptr<MessageQueue<v201::MessageType>> message_queue;
std::shared_ptr<DeviceModel> device_model;
std::shared_ptr<DatabaseHandler> database_handler;

Expand Down Expand Up @@ -507,6 +507,7 @@ class ChargePoint : public ChargePointInterface, private ocpp::ChargingStationBa
bool send(CallError call_error);

// internal helper functions
void initialize(const std::map<int32_t, int32_t>& evse_connector_structure, const std::string& message_log_path);
void init_websocket();
WebsocketConnectionOptions get_ws_connection_options(const int32_t configuration_slot);
void init_certificate_expiration_check_timers();
Expand Down Expand Up @@ -857,6 +858,22 @@ class ChargePoint : public ChargePointInterface, private ocpp::ChargingStationBa
const std::string& core_database_path, const std::string& sql_init_path,
const std::string& message_log_path, const std::shared_ptr<EvseSecurity> evse_security,
const Callbacks& callbacks);

/// \brief Construct a new ChargePoint object
/// \param evse_connector_structure Map that defines the structure of EVSE and connectors of the chargepoint. The
/// key represents the id of the EVSE and the value represents the number of connectors for this EVSE. The ids of
/// the EVSEs have to increment starting with 1.
/// \param device_model_storage device model storage instance
/// \param database_handler database handler instance
/// \param message_queue message queue instance
/// \param message_log_path Path to where logfiles are written to
/// \param evse_security Pointer to evse_security that manages security related operations
/// \param callbacks Callbacks that will be registered for ChargePoint
ChargePoint(const std::map<int32_t, int32_t>& evse_connector_structure, std::shared_ptr<DeviceModel> device_model,
std::shared_ptr<DatabaseHandler> database_handler,
std::shared_ptr<MessageQueue<v201::MessageType>> message_queue, const std::string& message_log_path,
const std::shared_ptr<EvseSecurity> evse_security, const Callbacks& callbacks);

~ChargePoint();

void start(BootReasonEnum bootreason = BootReasonEnum::PowerUp) override;
Expand Down
2 changes: 1 addition & 1 deletion include/ocpp/v201/ctrlr_component_variables.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ extern const RequiredComponentVariable& OrganizationName;
extern const RequiredComponentVariable& SecurityProfile;
extern const ComponentVariable& ACPhaseSwitchingSupported;
extern const ComponentVariable& SmartChargingCtrlrAvailable;
extern const ComponentVariable& SmartChargingCtrlrAvailableEnabled;
extern const ComponentVariable& SmartChargingCtrlrEnabled;
extern const RequiredComponentVariable& EntriesChargingProfiles;
extern const ComponentVariable& ExternalControlSignalsEnabled;
extern const RequiredComponentVariable& LimitChangeSignificance;
Expand Down
Loading

0 comments on commit 9b2fba5

Please sign in to comment.