From cffab6d494c93bcf92729790effa7374926de8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piet=20G=C3=B6mpel?= Date: Tue, 15 Jul 2025 16:48:31 +0200 Subject: [PATCH] feat(OCPP201): add variable mapping support between OCPP201 Device Model and EVerest config * Introduce VariableMapping class with YAML-based mapping & JSON schema validation * Add mapping.yaml & mapping_schema.json for configurable mappings * Extend EverestDeviceModelStorage to apply bidirectional mappings * Update ComposedDeviceModelStorage to merge and validate mapped variables * Add MappingFilePath config option in manifest * Enhance documentation with mapping strategy and updated device model architecture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Piet Gömpel --- modules/OCPP201/CMakeLists.txt | 13 + modules/OCPP201/OCPP201.cpp | 16 +- modules/OCPP201/OCPP201.hpp | 1 + .../composed_device_model_storage.cpp | 15 +- .../everest_device_model_storage.cpp | 248 ++++++++++++------ .../everest_device_model_storage.hpp | 9 +- .../OCPP201/device_model/mapping/mapping.yaml | 19 ++ .../device_model/mapping/mapping_schema.json | 63 +++++ .../device_model/mapping/variable_mapping.cpp | 62 +++++ .../device_model/mapping/variable_mapping.hpp | 47 ++++ modules/OCPP201/doc.rst | 195 ++++++++++---- .../doc/device_model_class_diagram.png | Bin 63803 -> 47132 bytes .../doc/device_model_class_diagram.puml | 62 ++--- .../doc/sequence_config_service_and_ocpp.png | Bin 82011 -> 47447 bytes .../doc/sequence_config_service_and_ocpp.puml | 51 ++-- modules/OCPP201/manifest.yaml | 5 + 16 files changed, 604 insertions(+), 202 deletions(-) create mode 100644 modules/OCPP201/device_model/mapping/mapping.yaml create mode 100644 modules/OCPP201/device_model/mapping/mapping_schema.json create mode 100644 modules/OCPP201/device_model/mapping/variable_mapping.cpp create mode 100644 modules/OCPP201/device_model/mapping/variable_mapping.hpp diff --git a/modules/OCPP201/CMakeLists.txt b/modules/OCPP201/CMakeLists.txt index f0bda799b1..4a0548d1e5 100644 --- a/modules/OCPP201/CMakeLists.txt +++ b/modules/OCPP201/CMakeLists.txt @@ -46,6 +46,19 @@ target_sources(${MODULE_NAME} "device_model/everest_device_model_storage.cpp" "device_model/composed_device_model_storage.cpp" "device_model/definitions.cpp" + "device_model/mapping/variable_mapping.cpp" +) + +# Install mapping.yaml +install( + FILES device_model/mapping/mapping.yaml + DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/${MODULE_NAME} +) + +# Install schema +install( + FILES device_model/mapping/mapping_schema.json + DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/${MODULE_NAME} ) if(EVEREST_CORE_BUILD_TESTING) diff --git a/modules/OCPP201/OCPP201.cpp b/modules/OCPP201/OCPP201.cpp index 03ec8ebdb5..952c36ecd6 100644 --- a/modules/OCPP201/OCPP201.cpp +++ b/modules/OCPP201/OCPP201.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -420,6 +421,17 @@ void OCPP201::ready() { } }(); + const auto mapping_file_path = [&]() { + const auto config_mapping_file_path = fs::path(this->config.MappingFilePath); + if (config_mapping_file_path.is_relative()) { + return this->ocpp_share_path / config_mapping_file_path; + } else { + return config_mapping_file_path; + } + }(); + + const auto mapping_schema_path = this->ocpp_share_path / "mapping_schema.yaml"; + if (!fs::exists(this->config.MessageLogPath)) { try { fs::create_directory(this->config.MessageLogPath); @@ -838,6 +850,8 @@ void OCPP201::ready() { std::map evse_connector_structure = this->get_connector_structure(); + auto variable_mapping = std::make_unique(mapping_file_path, mapping_schema_path); + // initialize libocpp device model auto libocpp_device_model_storage = std::make_shared( device_model_database_path, device_model_database_migration_path, device_model_config_path); @@ -845,7 +859,7 @@ void OCPP201::ready() { // initialize everest device model this->everest_device_model_storage = std::make_shared( r_evse_manager, this->evse_hardware_capabilities_map, everest_device_model_database_path, - device_model_database_migration_path, get_config_service_client()); + device_model_database_migration_path, std::move(variable_mapping), get_config_service_client()); // initialize composed device model, this will be provided to the ChargePoint constructor auto composed_device_model_storage = std::make_unique(); diff --git a/modules/OCPP201/OCPP201.hpp b/modules/OCPP201/OCPP201.hpp index 750ca8f045..d1b04516bb 100644 --- a/modules/OCPP201/OCPP201.hpp +++ b/modules/OCPP201/OCPP201.hpp @@ -53,6 +53,7 @@ struct Conf { int RequestCompositeScheduleDurationS; std::string RequestCompositeScheduleUnit; int DelayOcppStart; + std::string MappingFilePath; }; class OCPP201 : public Everest::ModuleBase { diff --git a/modules/OCPP201/device_model/composed_device_model_storage.cpp b/modules/OCPP201/device_model/composed_device_model_storage.cpp index abf04d1067..eaa51445f1 100644 --- a/modules/OCPP201/device_model/composed_device_model_storage.cpp +++ b/modules/OCPP201/device_model/composed_device_model_storage.cpp @@ -40,7 +40,20 @@ bool ComposedDeviceModelStorage::register_device_model_storage( ocpp::v2::DeviceModelMap ComposedDeviceModelStorage::get_device_model() { ocpp::v2::DeviceModelMap device_model_map; for (const auto& [name, device_model_storage] : this->device_model_storages) { - device_model_map.merge(device_model_storage->get_device_model()); + const auto& partial_device_model = device_model_storage->get_device_model(); + for (const auto& [component, variable_map] : partial_device_model) { + auto& existing_variable_map = device_model_map[component]; // Inserts if not present + // Merge variable_map into existing_variable_map + for (const auto& [variable, variable_meta_data] : variable_map) { + if (existing_variable_map.find(variable) != existing_variable_map.end()) { + EVLOG_warning << "Variable " << variable.name << " already exists in component " << component.name + << " but is also defined in device model storage: " << name; + EVLOG_AND_THROW(std::runtime_error( + "Variable already exists in component. Fix your device model configuration.")); + } + existing_variable_map[variable] = variable_meta_data; // Overwrite or insert + } + } } return device_model_map; } diff --git a/modules/OCPP201/device_model/everest_device_model_storage.cpp b/modules/OCPP201/device_model/everest_device_model_storage.cpp index e780d99e51..dd64dd1a69 100644 --- a/modules/OCPP201/device_model/everest_device_model_storage.cpp +++ b/modules/OCPP201/device_model/everest_device_model_storage.cpp @@ -83,6 +83,30 @@ ComponentKey get_connector_component_key(const int32_t evse_id, const int32_t co return component; } +ocpp::v2::Component get_component(const ComponentKey& component_key) { + ocpp::v2::Component component; + component.name = ocpp::CiString<50>(component_key.name, ocpp::StringTooLarge::Truncate); + if (component_key.instance.has_value()) { + component.instance = ocpp::CiString<50>(component_key.instance.value(), ocpp::StringTooLarge::Truncate); + } + if (component_key.evse_id.has_value()) { + ocpp::v2::EVSE evse; + evse.id = component_key.evse_id.value(); + evse.connectorId = component_key.connector_id; + component.evse = evse; + } + return component; +} + +ocpp::v2::Variable get_variable(const DeviceModelVariable& dm_variable) { + ocpp::v2::Variable variable; + variable.name = ocpp::CiString<50>(dm_variable.name, ocpp::StringTooLarge::Truncate); + if (dm_variable.instance.has_value()) { + variable.instance = ocpp::CiString<50>(dm_variable.instance.value(), ocpp::StringTooLarge::Truncate); + } + return variable; +} + // Helper function to construct DeviceModelVariable with common structure DeviceModelVariable make_variable(const std::string& name, const ocpp::v2::VariableCharacteristics& characteristics, const std::string& value = "", @@ -147,45 +171,18 @@ std::string get_everest_config_value(const everest::config::ModuleConfigurationP throw std::out_of_range("Could not find requested config key: " + config_key); } -// Populate EVerest module config variables -std::vector -build_everest_config_variables(const everest::config::ModuleConfigurationParameters& module_config) { - std::vector component_config; - for (const auto& [impl, config_params] : module_config) { - std::string prefix; - if (impl != Everest::config::MODULE_IMPLEMENTATION_ID) { - // prefix variable name with impl + . - prefix = impl + "."; - } - for (const auto& config_param : config_params) { - try { - const auto variable_name = prefix + config_param.name; - ocpp::v2::VariableCharacteristics characteristics; - characteristics.dataType = to_ocpp_data_enum(config_param.characteristics.datatype); - characteristics.supportsMonitoring = false; // TODO: can we enable monitoring support? - // TODO: add unit if/once available? - - auto device_model_variable = make_variable( - variable_name, characteristics, get_everest_config_value(module_config, impl, config_param.name), - to_ocpp_mutability_enum(config_param.characteristics.mutability)); - component_config.push_back(device_model_variable); - } catch (const std::exception& e) { - EVLOG_error << "Could not add EVerest config entry to OCPP device model: " << e.what(); - } - } - } - - return component_config; -} - } // anonymous namespace EverestDeviceModelStorage::EverestDeviceModelStorage( const std::vector>& r_evse_manager, const std::map& evse_hardware_capabilities_map, const std::filesystem::path& db_path, const std::filesystem::path& migration_files_path, + std::unique_ptr variable_mapping, std::shared_ptr config_service_client) : - r_evse_manager(r_evse_manager), config_service_client(config_service_client) { + r_evse_manager(r_evse_manager), + config_service_client(config_service_client), + variable_mapping(std::move(variable_mapping)) { + this->module_configs = config_service_client->get_module_configs(); this->mappings = config_service_client->get_mappings(); std::map> component_configs; @@ -228,7 +225,9 @@ EverestDeviceModelStorage::EverestDeviceModelStorage( } } - component_configs[component_key] = build_everest_config_variables(module_config); + Component component = get_component(component_key); + component_configs[component_key] = + build_everest_config_variables(module_config, module_id_type.module_id, component); } ocpp::v2::InitDeviceModelDb init_device_model_db(db_path, migration_files_path); @@ -237,7 +236,86 @@ EverestDeviceModelStorage::EverestDeviceModelStorage( this->device_model_storage = std::make_unique(db_path); this->init_hw_capabilities(evse_hardware_capabilities_map); - this->init_everest_config(); +} + +std::vector EverestDeviceModelStorage::build_everest_config_variables( + const everest::config::ModuleConfigurationParameters& module_config, const std::string& module_id, + const ocpp::v2::Component& component) { + std::vector component_config; + for (const auto& [impl, config_params] : module_config) { + std::string prefix; + if (impl != Everest::config::MODULE_IMPLEMENTATION_ID) { + // prefix variable name with impl + . + prefix = impl + "."; + } + for (const auto& config_param : config_params) { + try { + const auto variable_name = prefix + config_param.name; + ocpp::v2::VariableCharacteristics characteristics; + characteristics.dataType = to_ocpp_data_enum(config_param.characteristics.datatype); + characteristics.supportsMonitoring = false; // TODO: can we enable monitoring support? + // TODO: add unit if/once available? + + auto device_model_variable = make_variable( + variable_name, characteristics, get_everest_config_value(module_config, impl, config_param.name), + to_ocpp_mutability_enum(config_param.characteristics.mutability)); + component_config.push_back(device_model_variable); + + everest::config::ConfigurationParameterIdentifier config_param_id; + config_param_id.module_id = module_id; + config_param_id.configuration_parameter_name = config_param.name; + config_param_id.module_implementation_id = impl; + + const auto ocpp_cv_opt = this->variable_mapping->get_ocpp_cv(config_param_id); + + if (ocpp_cv_opt.has_value()) { + const auto& ocpp_cv = ocpp_cv_opt.value(); + ocpp::v2::ComponentVariable everest_cv = {component, get_variable(device_model_variable)}; + // store mapping from EVerest OCPP ComponentVariable and the OCPP representation of it + this->variable_mapping->add_cv_mapping(everest_cv, ocpp_cv); + this->stored_in_everest_config_service.insert(ocpp_cv); + } + + ocpp::v2::ComponentVariable component_variable{component, get_variable(device_model_variable)}; + this->stored_in_everest_config_service.insert(component_variable); + } catch (const std::exception& e) { + EVLOG_error << "Could not add EVerest config entry to OCPP device model: " << e.what(); + } + } + } + + return component_config; +} + +ocpp::v2::DeviceModelMap EverestDeviceModelStorage::apply_mappings(const ocpp::v2::DeviceModelMap& device_model_map) { + ocpp::v2::DeviceModelMap mapped_device_model; + + for (const auto& [component, variable_map] : device_model_map) { + for (const auto& [variable, variable_meta_data] : variable_map) { + ocpp::v2::ComponentVariable everest_component_variable{component, variable}; + const auto& ocpp_component_variable_opt = this->variable_mapping->get_ocpp_cv(everest_component_variable); + if (ocpp_component_variable_opt.has_value()) { + const auto& ocpp_component_variable = ocpp_component_variable_opt.value(); + EVLOG_info << "Mapping identified for component variable: " << ocpp_component_variable; + + if (!ocpp_component_variable.variable.has_value()) { + EVLOG_warning << "No variable defined for component variable: " << ocpp_component_variable; + continue; + } + + ocpp::v2::VariableMetaData ocpp_variable_meta_data; + ocpp_variable_meta_data.characteristics = variable_meta_data.characteristics; + ocpp_variable_meta_data.monitors = variable_meta_data.monitors; + ocpp_variable_meta_data.source = variable_meta_data.source; + + mapped_device_model[ocpp_component_variable.component][ocpp_component_variable.variable.value()] = + ocpp_variable_meta_data; + } + mapped_device_model[component][variable] = variable_meta_data; + } + } + + return mapped_device_model; } void EverestDeviceModelStorage::init_hw_capabilities( @@ -270,41 +348,6 @@ void EverestDeviceModelStorage::init_hw_capabilities( } } -void EverestDeviceModelStorage::init_everest_config() { - for (const auto& [module_id_type, module_config] : this->module_configs) { - for (const auto& [impl, config_params] : module_config) { - std::string prefix; - if (impl != Everest::config::MODULE_IMPLEMENTATION_ID) { - // prefix variable name with impl + . - prefix = impl + "."; - } - for (const auto& config_param : config_params) { - try { - const auto variable_name = prefix + config_param.name; - - Component component; - component.name = module_id_type.module_type; - component.instance = module_id_type.module_id; - Variable variable; - variable.name = variable_name; - ocpp::v2::ComponentVariable component_variable; - component_variable.component = component; - component_variable.variable = variable; - // allows to differentiate variables backed by the EVerest config from other device model variables - this->stored_in_everest_config_service.insert(component_variable); - - std::lock_guard lock(device_model_mutex); - this->device_model_storage->set_variable_attribute_value( - component, variable, ocpp::v2::AttributeEnum::Actual, - get_everest_config_value(module_config, impl, config_param.name), VARIABLE_SOURCE_EVEREST); - } catch (const std::exception& e) { - EVLOG_error << "Could not initialize EVerest config entry in OCPP device model: " << e.what(); - } - } - } - } -} - void EverestDeviceModelStorage::update_hw_capabilities( const Component& evse_component, const types::evse_board_support::HardwareCapabilities& hw_capabilities) { std::lock_guard lock(device_model_mutex); @@ -324,7 +367,10 @@ void EverestDeviceModelStorage::update_power(const int32_t evse_id, const float ocpp::v2::DeviceModelMap EverestDeviceModelStorage::get_device_model() { std::lock_guard lock(device_model_mutex); - return this->device_model_storage->get_device_model(); + // Get the device model from the storage and apply variable mappings + auto device_model = this->device_model_storage->get_device_model(); + // The device model in the storage does not contain the mappings, so we apply the defined mappings to it + return this->apply_mappings(device_model); } std::optional @@ -332,7 +378,23 @@ EverestDeviceModelStorage::get_variable_attribute(const ocpp::v2::Component& com const ocpp::v2::Variable& variable_id, const ocpp::v2::AttributeEnum& attribute_enum) { std::lock_guard lock(device_model_mutex); - return this->device_model_storage->get_variable_attribute(component_id, variable_id, attribute_enum); + + // check if a mapping exists + ocpp::v2::ComponentVariable component_variable{component_id, variable_id}; + const auto everest_component_variable_opt = this->variable_mapping->get_everest_cv(component_variable); + if (everest_component_variable_opt.has_value()) { + const auto& everest_component_variable = everest_component_variable_opt.value(); + + if (!everest_component_variable.variable.has_value()) { + EVLOG_warning << "No variable defined for mapped component variable: " << everest_component_variable; + return std::nullopt; + } + + return this->device_model_storage->get_variable_attribute( + everest_component_variable.component, everest_component_variable.variable.value(), attribute_enum); + } else { + return this->device_model_storage->get_variable_attribute(component_id, variable_id, attribute_enum); + } } std::vector @@ -340,7 +402,22 @@ EverestDeviceModelStorage::get_variable_attributes(const ocpp::v2::Component& co const ocpp::v2::Variable& variable_id, const std::optional& attribute_enum) { std::lock_guard lock(device_model_mutex); - return this->device_model_storage->get_variable_attributes(component_id, variable_id, attribute_enum); + // check if a mapping exists + ocpp::v2::ComponentVariable component_variable{component_id, variable_id}; + const auto everest_component_variable_opt = this->variable_mapping->get_everest_cv(component_variable); + if (everest_component_variable_opt.has_value()) { + const auto& everest_component_variable = everest_component_variable_opt.value(); + + if (!everest_component_variable.variable.has_value()) { + EVLOG_warning << "No variable defined for mapped component variable: " << everest_component_variable; + return {}; + } + + return this->device_model_storage->get_variable_attributes( + everest_component_variable.component, everest_component_variable.variable.value(), attribute_enum); + } else { + return this->device_model_storage->get_variable_attributes(component_id, variable_id, attribute_enum); + } } ocpp::v2::SetVariableStatusEnum EverestDeviceModelStorage::set_variable_attribute_value( @@ -349,26 +426,29 @@ ocpp::v2::SetVariableStatusEnum EverestDeviceModelStorage::set_variable_attribut std::lock_guard lock(device_model_mutex); - int evse_id = 0; - if (component_id.evse.has_value()) { - evse_id = component_id.evse.value().id; - } - ocpp::v2::ComponentVariable component_variable; component_variable.component = component_id; component_variable.variable = variable_id; + + const auto everest_component_variable_opt = this->variable_mapping->get_everest_cv(component_variable); + if (everest_component_variable_opt.has_value()) { + // there is a mapping, so the incoming component variable is not present in the storage, we need to map it to + // the EVerest representation of it and set this + component_variable = everest_component_variable_opt.value(); + } + auto stored_in_everest_config_service_it = this->stored_in_everest_config_service.find(component_variable); if (stored_in_everest_config_service_it != this->stored_in_everest_config_service.end()) { if (attribute_enum != ocpp::v2::AttributeEnum::Actual) { return ocpp::v2::SetVariableStatusEnum::Rejected; } - if (not component_id.instance.has_value()) { + if (not component_variable.component.instance.has_value()) { return ocpp::v2::SetVariableStatusEnum::Rejected; } - const auto module_id = component_id.instance.value(); + const auto module_id = component_variable.component.instance.value(); everest::config::ConfigurationParameterIdentifier identifier; identifier.module_id = module_id; - const std::string variable_name = variable_id.name; + const std::string variable_name = component_variable.variable.value().name; const auto strpos = variable_name.find("."); if (strpos != std::string::npos) { identifier.module_implementation_id = variable_name.substr(0, strpos); @@ -382,12 +462,12 @@ ocpp::v2::SetVariableStatusEnum EverestDeviceModelStorage::set_variable_attribut if (result.set_status == everest::config::SetConfigStatus::Accepted) { // immediately set it in the libocpp device model as well - const auto libocpp_result = this->device_model_storage->set_variable_attribute_value( - component_id, variable_id, attribute_enum, value, source); - if (libocpp_result != ocpp::v2::SetVariableStatusEnum::Accepted) { + const auto everest_dm_result = this->device_model_storage->set_variable_attribute_value( + component_variable.component, component_variable.variable.value(), attribute_enum, value, source); + if (everest_dm_result != ocpp::v2::SetVariableStatusEnum::Accepted) { EVLOG_error << "Device model set variable results disagree"; } - return libocpp_result; // FIXME: what to return, libocpp or EVerest result? + return everest_dm_result; // FIXME: what to return, libocpp or EVerest result? } else if (result.set_status == everest::config::SetConfigStatus::Rejected) { return ocpp::v2::SetVariableStatusEnum::Rejected; } else if (result.set_status == everest::config::SetConfigStatus::RebootRequired) { diff --git a/modules/OCPP201/device_model/everest_device_model_storage.hpp b/modules/OCPP201/device_model/everest_device_model_storage.hpp index e1cc539e83..5f5e92024f 100644 --- a/modules/OCPP201/device_model/everest_device_model_storage.hpp +++ b/modules/OCPP201/device_model/everest_device_model_storage.hpp @@ -9,8 +9,10 @@ #include #include +#include #include #include +#include #include namespace module::device_model { @@ -20,6 +22,7 @@ class EverestDeviceModelStorage : public ocpp::v2::DeviceModelStorageInterface { const std::vector>& r_evse_manager, const std::map& evse_hardware_capabilities_map, const std::filesystem::path& db_path, const std::filesystem::path& migration_files_path, + std::unique_ptr variable_mapping, std::shared_ptr config_service_client); virtual ~EverestDeviceModelStorage() override = default; virtual ocpp::v2::DeviceModelMap get_device_model() override; @@ -55,11 +58,15 @@ class EverestDeviceModelStorage : public ocpp::v2::DeviceModelStorageInterface { std::shared_ptr config_service_client; std::map module_configs; std::map mappings; + std::unique_ptr variable_mapping; void init_hw_capabilities( const std::map& evse_hardware_capabilities_map); void update_hw_capabilities(const ocpp::v2::Component& evse_component, const types::evse_board_support::HardwareCapabilities& hw_capabilities); - void init_everest_config(); + std::vector + build_everest_config_variables(const everest::config::ModuleConfigurationParameters& module_config, + const std::string& module_id, const ocpp::v2::Component& component); + ocpp::v2::DeviceModelMap apply_mappings(const ocpp::v2::DeviceModelMap& device_model_map); }; } // namespace module::device_model diff --git a/modules/OCPP201/device_model/mapping/mapping.yaml b/modules/OCPP201/device_model/mapping/mapping.yaml new file mode 100644 index 0000000000..d9f16eed14 --- /dev/null +++ b/modules/OCPP201/device_model/mapping/mapping.yaml @@ -0,0 +1,19 @@ +mappings: + - ocpp: + component: + name: "TxCtrlr" + variable: + name: "EVConnectionTimeOut" + everest: + module_id: "auth" + configuration_parameter_name: "connection_timeout" + module_implementation_id: "!module" + + - ocpp: + component: + name: "AuthCtrlr" + variable: + name: "MasterPassGroupId" + everest: + module_id: "auth" + configuration_parameter_name: "master_pass_group_id" diff --git a/modules/OCPP201/device_model/mapping/mapping_schema.json b/modules/OCPP201/device_model/mapping/mapping_schema.json new file mode 100644 index 0000000000..bb9302aaa4 --- /dev/null +++ b/modules/OCPP201/device_model/mapping/mapping_schema.json @@ -0,0 +1,63 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ComponentVariable to ConfigurationParameterIdentifier Mapping", + "type": "object", + "properties": { + "mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ocpp": { + "type": "object", + "properties": { + "component": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "instance": { "type": "string" }, + "evse": { + "type": "object", + "properties": { + "id": { "type": "integer" }, + "connectorId": { "type": "integer" } + }, + "required": ["id"], + "additionalProperties": false + } + }, + "required": ["name"], + "additionalProperties": false + }, + "variable": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "instance": { "type": "string" } + }, + "required": ["name"], + "additionalProperties": false + } + }, + "required": ["component", "variable"], + "additionalProperties": false + }, + "everest": { + "type": "object", + "properties": { + "module_id": { "type": "string" }, + "configuration_parameter_name": { "type": "string" }, + "module_implementation_id": { "type": "string" } + }, + "required": ["module_id", "configuration_parameter_name"], + "additionalProperties": false + } + }, + "required": ["ocpp", "everest"], + "additionalProperties": false + } + } + }, + "required": ["mappings"], + "additionalProperties": false +} diff --git a/modules/OCPP201/device_model/mapping/variable_mapping.cpp b/modules/OCPP201/device_model/mapping/variable_mapping.cpp new file mode 100644 index 0000000000..a9dc3877dd --- /dev/null +++ b/modules/OCPP201/device_model/mapping/variable_mapping.cpp @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Pionix GmbH and Contributors to EVerest + +#include +#include +#include +#include + +using namespace ocpp::v2; +using namespace everest::config; + +VariableMapping::VariableMapping(const fs::path& mapping_file, const fs::path& schema_file) { + if (!fs::exists(mapping_file)) { + EVLOG_warning << "Mapping file does not exist: " << mapping_file; + return; + } + + const auto& mapping = Everest::load_yaml(mapping_file); + const auto& schema = Everest::load_yaml(schema_file); + + auto validator = nlohmann::json_schema::json_validator{}; + validator.set_root_schema(schema); + validator.validate(mapping); + + for (const auto& entry : mapping["mappings"]) { + ComponentVariable cv = entry["ocpp"]; + ConfigurationParameterIdentifier cpi = entry["everest"]; + user_mapping[cpi] = cv; + } +}; + +void VariableMapping::add_cv_mapping(const ComponentVariable& everest_component_variable, + const ComponentVariable& ocpp_component_variable) { + this->everest_cv_to_ocpp_cv_mapping[everest_component_variable] = ocpp_component_variable; + this->ocpp_cv_to_everest_cv_mapping[ocpp_component_variable] = everest_component_variable; +} + +std::optional VariableMapping::get_ocpp_cv(const ConfigurationParameterIdentifier& identifier) { + auto it = user_mapping.find(identifier); + if (it != user_mapping.end()) { + return it->second; + } + return std::nullopt; +} + +std::optional +VariableMapping::get_ocpp_cv(const ocpp::v2::ComponentVariable& everest_component_variable) { + auto it = everest_cv_to_ocpp_cv_mapping.find(everest_component_variable); + if (it != everest_cv_to_ocpp_cv_mapping.end()) { + return it->second; + } + return std::nullopt; +} + +std::optional +VariableMapping::get_everest_cv(const ocpp::v2::ComponentVariable& ocpp_component_variable) { + auto it = ocpp_cv_to_everest_cv_mapping.find(ocpp_component_variable); + if (it != ocpp_cv_to_everest_cv_mapping.end()) { + return it->second; + } + return std::nullopt; +} diff --git a/modules/OCPP201/device_model/mapping/variable_mapping.hpp b/modules/OCPP201/device_model/mapping/variable_mapping.hpp new file mode 100644 index 0000000000..9668a7fca3 --- /dev/null +++ b/modules/OCPP201/device_model/mapping/variable_mapping.hpp @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Pionix GmbH and Contributors to EVerest + +#pragma once + +#include +#include +#include + +/// \brief This class is used to map EVerest module configuration parameters to OCPP component variables +class VariableMapping { + +public: + /// \brief Constructor that loads the mapping from the given \p mapping_file and validates it against the schema in + /// \p schema_file + VariableMapping(const fs::path& mapping_file, const fs::path& schema_file); + + /// \brief EVerest modules are represented as OCPP component variables in the OCPP device model. The following + /// functions adds a bi-directional mapping for the EVerest component variables and (mostly standardized) OCPP + /// component variables. + void add_cv_mapping(const ocpp::v2::ComponentVariable& everest_component_variable, + const ocpp::v2::ComponentVariable& ocpp_component_variable); + + /// \brief Gets a component variable from the given ȨVerest configuration parameter \p identifier + /// \return An optional OCPP component variable if the mapping exists, otherwise std::nullopt + std::optional + get_ocpp_cv(const everest::config::ConfigurationParameterIdentifier& identifier); + + /// \brief Gets a component variable from the given \p everest_component_variable + /// \return An optional OCPP component variable if the mapping exists, otherwise std::nullopt + std::optional + get_ocpp_cv(const ocpp::v2::ComponentVariable& everest_component_variable); + + /// \brief Gets the EVerest component variable for the given \p ocpp_component_variable + std::optional + get_everest_cv(const ocpp::v2::ComponentVariable& ocpp_component_variable); + +private: + std::map + user_mapping; // Maps EVerest configuration parameters to OCPP component variables + + // EVerest modules are represented as OCPP component variables in the OCPP device model. The following maps are + // bi-directional mappings to map between EVerest component variables and (mostly standardized) OCPP component + // variables. + std::map everest_cv_to_ocpp_cv_mapping; + std::map ocpp_cv_to_everest_cv_mapping; +}; \ No newline at end of file diff --git a/modules/OCPP201/doc.rst b/modules/OCPP201/doc.rst index 79bf61e832..a603fb71e3 100644 --- a/modules/OCPP201/doc.rst +++ b/modules/OCPP201/doc.rst @@ -364,14 +364,22 @@ than the value configured for `CompositeScheduleIntervalS` because otherwise tim Device model implementation details ----------------------------------- -For managing configuration and telemetry data of a charging station, the OCPP2 specification introduces -a device model that is very different to the design of OCPP1.6. -The specified device model comes with these high-level requirements: +This module provides a complete implementation of the OCPP 2.x Device Model by combining multiple variable sources into a unified view that can be exposed to the Central System (CSMS). +The design supports both standardized and vendor-specific variables from libocpp and EVerest modules through a flexible, pluggable architecture. -* 3-tier model: Break charging station down into 3 main tiers: ChargingStation, EVSE and Connector -* Components and Variables: Break down charging station into components and variables for configuration and telemetry -* Complex data structure for reporting and configuration of variables -* Device model contains variables of the whole charging station, beyond OCPP business logic +Overview of OCPP Device Model +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The Device Model (introduced in OCPP 2.0.1 and extended in 2.1) is a hierarchical, structured data model to manage the configuration and telemetry of a charging station. It defines: + +* **Components** (e.g., ChargingStation, EVSE, TxCtrlr) +* **Variables** (e.g., HeartbeatInterval, AllowReset) + +This enables the CSMS to: + +* Dynamically discover station capabilities +* Read/write configuration values +* Monitor status and telemetry The device model of OCPP2 can contain various physical or logical components and variables. While in OCPP1.6 almost all of the standardized configuration keys are used to influence the control flow of @@ -379,51 +387,146 @@ libocpp, in OCPP2 the configuration and telemetry variables that can be part of control or reporting capabilities of only libocpp. Still there is a large share of standardized variables in OCPP2 that do influence the control flow of libocpp. -Internally and externally managed variables -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -EVerest has multiple different data sources that control the values variables that OCPP requires to report to the CSMS. -It is therefore required to make a distinction between **internally** and **externally** managed variables of the device model. - -We define **internally** and **externally** managed variables as follows: - -* Internally Managed: Owned, stored and accessed in libocpp in device model storage - Examples: HeartbeatInterval, AuthorizeRemoteStart, SampledDataTxEndedMeasurands, AuthCacheStorage -* Externally Managed: Owned, stored and accessed via EVerest config service (not yet supported) - Examples: ConnectionTimeout, MasterPassGroupId -* For externally managed variables a mapping to the EVerest configuration parameter is defined (not yet supported) - -Note that the EVerest config service is not yet implemented. Currently all components and variables are controlled -by the libocpp device model storage implementation. - -Device Model Implementation of this module -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Challenges in EVerest +^^^^^^^^^^^^^^^^^^^^^ + +EVerest's modular architecture presents specific challenges: + +* **Fixed hierarchy vs. loosely coupled modules**: OCPP enforces a strict component/variable structure, while EVerest modules are independently configured and instantiated. +* **Existing configurations differ**: EVerest module configs use their own names, types, and metadata and do not always simply map to OCPP variables. +* **High metadata overhead**: Each variable in the Device Model requires detailed attributes (e.g., characteristics, mutability, monitoring). +* **No distinction between config and telemetry**: OCPP treats all variables uniformly, while EVerest separates static config (for modules) and dynamic telemetry (mostly vars of EVerest interfaces). + +Solution: Composed Device Model +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To address these issues, a **ComposedDeviceModel** abstraction is introduced as part of this module. It combines two sub device models: + +* **Libocpp Device Model**: Manages standardized OCPP variables used directly by libocpp. Defined via JSON component configs. Stored in SQLite database using the DeviceModelStorageSqlite. +* **EVerest Device Model**: Maps EVerest module configurations to OCPP Device Model components and variables. Provides standardized EVSE and Connector +components and respective variables. Is using EVerest configuration service to read and write EVerest module configuration parameters. Allows mapping of EVerest +module parameters to OCPP variables. The OCPP representation is also stored in SQLite database using the DeviceModelStorageSqlite. + +Mapping Strategy for EVerest Device Model +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| **OCPP Element** | **EVerest Source** | **Description** | +| ------------------------------------------ | ----------------------------------------------------- | ---------------------------------------------------- | +| Component.name | `ModuleIdType.module_type` | EVerest module type (e.g., `EvseManager`, `EvseV2G`) | +| Component.instance | `ModuleIdTypemodule_id` | ID from EVerest config | +| Component.evse.id | `ModuleTierMappings.module.evse` | EVSE ID (if mapped) | +| Component.evse.connector\_id | `ModuleTierMappings.module.connector` | Connector ID (if mapped) | +| Variables | `ModuleConfigurationParameters` | Each parameter becomes an OCPP variable | +| Variable.name | `impl + "." + config_param.name` (if impl != !module) | Prefix with implementation name if needed | +| VariableCharacteristics.dataType | `config_param.characteristics.datatype` | Translated to OCPP type | +| VariableCharacteristics.unit | *(TODO)* | Not yet implemented | +| VariableCharacteristics.supportsMonitoring | `false` *(TODO)* | Monitoring is currently not supported | +| VariableAttribute.mutability | `config_param.characteristics.mutability` | Translated to OCPP mutability enum | +| VariableAttribute.value | `config_param.value` | Actual value from config | + +The `ComposedDeviceModel` is passed to libocpp and routes OCPP operations to the correct source, avoiding duplication and supporting clear separation of ownership. + +User Mapping of EVerest Configuration Parameters to OCPP Variables +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +EVerest modules expose their configuration parameters in a format that does not always directly match the standardized OCPP 2.x Device Model. To bridge this gap, +the **Variable Mapping** mechanism allows users a flexible and explicit mapping between: + +* **EVerest Configuration Parameters** (identified by `module_id`, `configuration_parameter_name`, and optionally an `implementation_id`) +* **Standardized OCPP Component Variables** (identified by `component` and `variable` names in the Device Model) + +This mapping is defined in a YAML file (`mapping.yaml`) and validated against a JSON schema (`mapping_schema.json`) at runtime. The mapping supports bidirectional translation: + +* **When exposing the Device Model**: EVerest configuration parameters are mapped to the appropriate standardized OCPP components and variables before being sent to the CSMS. +* **When processing incoming OCPP requests**: Operations such as `SetVariables.req` are resolved to the corresponding EVerest configuration parameter, ensuring the correct module is updated. + +Example for `mapping.yaml`: + +```yaml +mappings: + - ocpp: + component: + name: "TxCtrlr" + variable: + name: "EVConnectionTimeOut" + everest: + module_id: "auth" + configuration_parameter_name: "connection_timeout" + module_implementation_id: "!module" +``` + +This example maps the OCPP `TxCtrlr.EVConnectionTimeout` variable to the `auth.connection_timeout` configuration parameter of the EVerest module. + +Note that when the CSMS requests the Device Model (e.g. via GetBaseReport.req), both representations will be shown to the CSMS. +For the example mapping defined that would mean an extract of the NotifyReport.req would contain: + +```json +... +{ + "component": { + "instance": "auth", + "name": "Auth" + }, + "variable": { + "name": "connection_timeout" + }, + "variableAttribute": [ + { + "constant": false, + "mutability": "ReadWrite", + "persistent": true, + "type": "Actual", + "value": "15" + } + ], + "variableCharacteristics": { + "dataType": "integer", + "supportsMonitoring": false + } +}, +{ + "component": { + "name": "TxCtrlr" + }, + "variable": { + "name": "EVConnectionTimeOut" + }, + "variableAttribute": [ + { + "constant": false, + "mutability": "ReadWrite", + "persistent": true, + "type": "Actual", + "value": "15" + } + ], + "variableCharacteristics": { + "dataType": "integer", + "supportsMonitoring": false + } +}, +... +``` + +EVerest Configuration Service +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This module provides an implementation of device model API provided as part of libocpp (it implements -`device_model_storage_interface.hpp`). -The implementation is designed to fullfill the requirements of the device model API even if the components and variables are -controlled by different sources (Internally, Externally). +The **EVerest Configuration Service** is a central interface for reading and writing module configuration parameters within the EVerest runtime. It enables: +When used with the Device Model, the Configuration Service acts as the **backend for EVerest configuration parameters**. For example, if the CSMS sets an +OCPP configuration variable that maps to an EVerest parameter, the request is transparently translated into a call to the Configuration Service, +which applies the change to the correct module. -Device Model Sources -^^^^^^^^^^^^^^^^^^^^ +Device Model Implementation Architecture +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Device Model variables are defined in JSON component configs. For each variable a property `source` can be used to define -the source that controls it. This design allows for a single source of truth for each variable and it -allows the device model implementation of this module to address the correct source for the requested operation. -Today `OCPP` is the only supported source for internally managed variables. +Class diagram for device model: -Sources for externally managed configuration variables like the EVerest config service are under development. +.. image:: doc/device_model_class_diagram.png -Sequence of variable access for internally and externally managed variables -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Sequence of variable access for internally and externally managed variables: .. image:: doc/sequence_config_service_and_ocpp.png -Class diagram for device model -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. image:: doc/device_model_class_diagram.png - Clarification of the device model classes of this diagram: * DeviceModel: @@ -440,15 +543,15 @@ Clarification of the device model classes of this diagram: * DeviceModelStorageSqlite * Implements DeviceModelStorageInterface as part of libocpp - * This storage holds internally managed variables + * Is used in libocpp as well as in EVerest device model as storage backend * EverestDeviceModelStorage * Implements DeviceModelStorageInterface as part of everest-core (OCPP201 module) * Uses EVerest config service to retrieve configuration variables of EVerest modules + * Uses DeviceModelStorageSqlite to store OCPP representation of EVerest configuration parameters and EVSE and Connector components * ComposedDeviceModelStorage * (Final) implementation of DeviceModelStorageInterface as part of everest-core (OCPP201 module) * A reference of this class will be passed to libocpp's ChargePoint constructor - * Differentiates between externally and internally managed variables diff --git a/modules/OCPP201/doc/device_model_class_diagram.png b/modules/OCPP201/doc/device_model_class_diagram.png index 1b989dab31756285e9947bb886aa8aa5ec883cd4..a9a0e67e690aa179d846e3960f467d49fb4174d8 100644 GIT binary patch literal 47132 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

rcu&XI_I8QPxh>N9}{k#z5j+Av)2zGLEdm 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

8m5?d^fz@+jFb-0*OJ&*!4 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 a+6KJ(3wOvJ;z(wKkGYAZajBt8_Ns=XJP;y3c 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

y)N^O&1=Immos(3 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 L_uW%4y7)f;p2Xu$ diff --git a/modules/OCPP201/doc/device_model_class_diagram.puml b/modules/OCPP201/doc/device_model_class_diagram.puml index bca34cbf73..a0643b9b6d 100644 --- a/modules/OCPP201/doc/device_model_class_diagram.puml +++ b/modules/OCPP201/doc/device_model_class_diagram.puml @@ -1,49 +1,37 @@ @startuml package libocpp { - -class ChargePoint { - - device_model: DeviceModel -} - -class DeviceModel { - - device_model: DeviceModelStorageInterface - + get_device_model(): DeviceModelRepresentation - + get_value(...): T - + set_value(...): SetVariableStatusEnum -} - -interface DeviceModelStorageInterface { - + get_device_model(): DeviceModelRepresentation - + get_variable_attribute(...): std::optional - + set_variable_attribute_value(...): bool -} - -class DeviceModelStorageSqlite implements DeviceModelStorageInterface - + class ChargePoint { + - device_model: DeviceModel + } + + class DeviceModel { + - device_model: DeviceModelStorageInterface + + get_device_model(): DeviceModelRepresentation + + get_value(...): T + + set_value(...): SetVariableStatusEnum + } + + interface DeviceModelStorageInterface { + + get_device_model(): DeviceModelRepresentation + + get_variable_attribute(...): std::optional + + set_variable_attribute_value(...): bool + } + + class DeviceModelStorageSqlite implements DeviceModelStorageInterface } package everest-core { - -class EverestDeviceModelStorage implements libocpp.DeviceModelStorageInterface -class ComposedDeviceModelStorage implements libocpp.DeviceModelStorageInterface { - - everest_storage: EverestDeviceModelStorage - - libocpp_storage: DeviceModelStorageSqlite + class EverestDeviceModelStorage implements libocpp.DeviceModelStorageInterface + class ComposedDeviceModelStorage implements libocpp.DeviceModelStorageInterface { + - everest_storage: EverestDeviceModelStorage + - libocpp_storage: DeviceModelStorageSqlite + } } -} - -note left of ChargePoint - ChargePoint and DeviceModel are - implemented within the library. -end note - -note right of ComposedDeviceModelStorage - This implementation will be passed to libocpp's constructor -end note ChargePoint *-- DeviceModel DeviceModel *-- DeviceModelStorageInterface ComposedDeviceModelStorage *-- EverestDeviceModelStorage -ComposedDeviceModelStorage *-- DeviceModelStorageSqlite +EverestDeviceModelStorage *-- DeviceModelStorageSqlite -@enduml +@enduml \ No newline at end of file diff --git a/modules/OCPP201/doc/sequence_config_service_and_ocpp.png b/modules/OCPP201/doc/sequence_config_service_and_ocpp.png index 7e0b87995efb20a1b761172187ac6c0e503985da..c0ca93b4c3e8800fc162bf52645099144323ae69 100644 GIT binary patch literal 47447 zcmeFZWmJ@H`!_mbpcoh^DiQ`#0~myapro`6hzzs zjg8neO^t2pt7#F4U5)yR53GLsJz^J}$1W@=kYL(%gZ{FXL{`y2o z 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 L{BYbsE$9CQUYS_O literal 82011 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 diff --git a/modules/OCPP201/doc/sequence_config_service_and_ocpp.puml b/modules/OCPP201/doc/sequence_config_service_and_ocpp.puml index b32528b25d..0cb86833bf 100644 --- a/modules/OCPP201/doc/sequence_config_service_and_ocpp.puml +++ b/modules/OCPP201/doc/sequence_config_service_and_ocpp.puml @@ -1,5 +1,5 @@ @startuml -'https://plantuml.com/sequence-diagram + !pragma teoz true participant CSMS order 10 participant libocpp order 20 @@ -7,40 +7,27 @@ participant ComposedDeviceModel order 30 database DeviceModelStorageSqlite order 40 database EverestDeviceModelStorage order 50 -autonumber "" -skinparam sequenceArrowThickness 2 - -== Get Device Model at startup == +autonumber -ComposedDeviceModel->ComposedDeviceModel: Initialize device model based on component config -libocpp->ComposedDeviceModel: get_device_model -loop For each variable defined in component config - alt internally managed variable - ComposedDeviceModel->InternalStorage: get_value - InternalStorage->ComposedDeviceModel: get_value response - else externally managed variable - ComposedDeviceModel->ExternalStorage: get_value - ExternalStorage->ComposedDeviceModel: get_value response +== Get Device Model at startup == +libocpp -> ComposedDeviceModel: get_device_model() +loop for each variable + alt libocpp source + ComposedDeviceModel -> DeviceModelStorageSqlite: get_value() + else everest source + ComposedDeviceModel -> EverestDeviceModelStorage: get_value() end end -ComposedDeviceModel->libocpp: get_device_model response +ComposedDeviceModel --> libocpp: return model -== SetVariables.req by CSMS == -CSMS->libocpp: SetVariables.req -loop For each SetVariable request - libocpp->libocpp: Logical internal validation - libocpp->libocpp: Device Model validation - alt request is valid - libocpp->ComposedDeviceModel: set_value - alt internally managed variable - ComposedDeviceModel->InternalStorage: set_value - InternalStorage->ComposedDeviceModel: set_value response - else externally managed variable - ComposedDeviceModel->ExternalStorage: set_value - ExternalStorage->ComposedDeviceModel: set_value response - end - ComposedDeviceModel->libocpp: set_value response - end +== SetVariable.req == +CSMS -> libocpp: SetVariable.req +libocpp -> ComposedDeviceModel: set_value() +alt libocpp source + ComposedDeviceModel -> DeviceModelStorageSqlite: set_value() +else everest source + ComposedDeviceModel -> EverestDeviceModelStorage: set_value() end +ComposedDeviceModel --> libocpp: return status -@enduml +@enduml \ No newline at end of file diff --git a/modules/OCPP201/manifest.yaml b/modules/OCPP201/manifest.yaml index dc2a6927c0..8547c6c8e3 100644 --- a/modules/OCPP201/manifest.yaml +++ b/modules/OCPP201/manifest.yaml @@ -65,6 +65,11 @@ config: This is only used to prevent issues from passing by availlable before preparing on a restart. type: integer default: 0 + MappingFilePath: + description: >- + Path to the mapping file that contains the mapping between OCPP variables and Everest configuration parameters. + type: string + default: mapping.yaml provides: auth_validator: description: Validates the provided token using CSMS, AuthorizationList or AuthorizationCache