Skip to content

Conversation

@andistorm
Copy link
Member

@andistorm andistorm commented Apr 10, 2025

Describe your changes

Issue ticket number and link

Checklist before requesting a review

  • I have performed a self-review of my code
  • I have made corresponding changes to the documentation
  • I read the contribution documentation and made sure that my changes meet its requirements

Requires

Related

Issues to create after merging

  • If generation is enabled, check if newly generated files differ from the exisiting ones (check for ci)
  • Stabilize Code generator by checking gRPC, protoc and go version in cmake
  • Refactor code generator extensions by making it more independent from grpc source code
  • Allow configuring of eebus service instead of hardcoded example
    • multiple calls in modules/EEBUS/grpc_calls

@andistorm andistorm force-pushed the feature/eebus branch 3 times, most recently from f8bb894 to 866fb7d Compare April 11, 2025 12:29
Comment on lines 6 to 12
ENV EVEREST_CMAKE_PATH=/usr/lib/cmake/everest-cmake
ENV EVEREST_CMAKE_VERSION=tmp/eebus
RUN rm -rf ${EVEREST_CMAKE_PATH} \
&& git clone https://github.com/EVerest/everest-cmake.git ${EVEREST_CMAKE_PATH} \
&& cd ${EVEREST_CMAKE_PATH} \
&& git checkout ${EVEREST_CMAKE_VERSION} \
&& rm -r .git
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Revert this before merging

@mlitre mlitre self-assigned this Apr 24, 2025
&& rm /usr/local/bin/python3 \
&& ln -s /usr/local/bin/python${short_version} /usr/local/bin/python3

RUN python3.13 -m pip install --break-system-packages \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it really necessary to break packages here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used the python3.13 only queue.shutdown feature in the eebus tests which requires python 3.13. But I know removed it which makes this pip install here unnecessary


add_go_target(
NAME
eebus_grpc_api_dummy_cem
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we really instantiating a dummy?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the go target for this since we don't use it

FYI: It is a binary to manually test the lpc implementation

Comment on lines 5 to 8
liblog:
git: https://github.com/EVerest/liblog.git
git_tag: feature/eebus
options: ["BUILD_EXAMPLES OFF", "CMAKE_POSITION_INDEPENDENT_CODE ON"]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need to specifically have liblog and a specfic branch here? Looking at the changes it looks like it could have a large impact?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be removed here after EVerest/liblog#26 is merged

void ControlServiceCalls::call_set_config() {
control_service::SetConfigRequest request;
request = control_service::CreateSetConfigRequest(
4715, "Demo", "Demo", "EVSE", "2345678901",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should make these configurable? This leads me to a second question: would we have one eebus module per EVSE or one per charging station?

}

void ControllableSystemLPCControlCalls::call_set_consumption_nominal_max() {
cs_lpc::SetConsumptionNominalMaxRequest request = cs_lpc::CreateSetConsumptionNominalMaxRequest(32000);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where does this 32000 number come from?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those are a couple of arbitrary example values, I added this as comments and added the todo to create an issue to refactor this to get this configurable in future, but I would leave it as it is for now to be improved later

}

void ControllableSystemLPCControlCalls::call_set_consumption_limit() {
common_types::LoadLimit load_limit = common_types::CreateLoadLimit(0, true, false, 4200, false);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here what are these numbers?


void ControllableSystemLPCControlCalls::call_set_failsafe_consumption_active_power_limit() {
cs_lpc::SetFailsafeConsumptionActivePowerLimitRequest request =
cs_lpc::CreateSetFailsafeConsumptionActivePowerLimitRequest(4200, true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here?

@@ -1,25 +1,30 @@
# enabling coverage related things
option(EVEREST_CORE_ENABLE_COVERAGE "Enable coverage for everest-core" OFF)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did we add this new COVERAGE variable option?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No valid reason for this -> removed

ci:
name: Build, Lint and Test
uses: everest/everest-ci/.github/workflows/continuous_integration.yml@v1.4.6
uses: everest/everest-ci/.github/workflows/continuous_integration.yml@feature/eebus
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • revert before merge

do_not_run_coverage_badge_creation: true
run_install_wheels: true
run_integration_tests: true
build_kit_base_image_tag: feature-eebus
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • revert before merge

CMakeLists.txt Outdated
everest-cmake
GIT_REPOSITORY https://github.com/EVerest/everest-cmake.git
GIT_TAG main
GIT_TAG tmp/eebus
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • revert before merge

@mlitre mlitre mentioned this pull request Oct 23, 2025
3 tasks
james-ctc added a commit that referenced this pull request Nov 3, 2025
2ea181e6 Update everest-sqlite to 0.1.4, libevse-security to 0.9.9 and libwebsockets to 4.4.1 (#1143)
c7f77717 fix(ocpp2x): Fix String too large exception (#1142)
e77384dd Bugfix/typo in log messages raw (#1141)
f6299194 fix(ocppv2): Fix GetCertStatusCallback to avoid uncaught exception (#1140)
3762400c Add raw message logging (before parsing the message) (off by default) (#1139)
6257696b Removed misleading TLS logging (#1138)
157ba65d fix: StatusNotification timestamp is updated to represent the report time (#1130)
cce4fe38 Free memory allocated by strdup at the end of websocket init (#1134)
9ee949e3 Add missing override keyword, fixing compiler warnings (#1133)
e13949fc fix int to string in throw (#1132)
098cf786 fix(ocpp2): Fix crash on missing nullptr check on tx start (#1127)
3c6e1be6 fix(ocpp16): Make UnlockConnectorOnEVSideDisconnect RO configurable (#1126)
0d300acf Change log from INFO to DEBUG (#1124)
13752fcf fix(ocpp16): Send invalid fw signature security event (#1125)
9c8ec21f fix(v21): Rejected response for NotifyAllowedEnergyTransfer (#1116)
5c75287f feat(ocpp16): add ISO15118CertificateManagementEnabled configuration option: (#1123)
7288e3fd fix(ocpp16): Set the correct websocket connection options after upgrade (#1122)
54d27c52 fix(v21): Fix V2XChargingCtrlr variables (#1114)
617d71fb fix(ocpp16): Configuration key fixes (#1120)
c18eab18 Update dependencies, bump version to 0.29.0 (#1118)
cf046127 Fix: Composite schedule calculation for connector 0 (#1112)
6f6b26ac fix: update OCPP 1.6 configuration via a separate file (#1113)
89c7b62e fix(generator): Fix generator for required arrays of string enums (#1115)
6e72da5f fix(v21): Removed NotifyCRL and NotifyQRCodeScanned as they don't exist (#1111)
5cb564a0 Feature/ocpp21 smartcharging support (#1110)
1d2ce8db Using correct default price texts if online / offline. Before this change, the DefaultPriceText.priceTexts[n] was used, although this configuration key is only meant for the non default languages as a backup (#1103)
bc6ecb29 Add helper methods to set common charge point data (#1026)
fd65ff84 Bump versions of liblog and libevse security (#1108)
0b84d7f9 Fix json exceptions being thrown during handling of invalid messages (#1107)
057cf3fb Stopping ping timer when connection closed or failed. Closing connection instead of calling reconnect() on a pong timeout. User application logic will trigger the reconnect (#1105)
a0a99069 Bugfix/websocket ping pong (#1102)
668cc39a Catch and aggregate missing required variables in DeviceModel (#1091)
012eb14c fix(v2): eventNotificationType made optional NotifyMonitoringReport (#1099)
f31f7d28 Refactor: Device model db initialization and cleanup (#1100)
7b4ba2c8 refactor(OCPP2.x): Adjustments to device model (#1093)
7c9d31e9 Fixed update of OCSP when a new certificate was installed via DataTransfer.req . Timer is used to schedule the update, because handle_data_transfer_pnc_certificate_signed needs to return in order to not block the message queue (#1097)
663f5977 Fixes for security interface updates (#1095)
7c90aa2f refactor(OCPP1.6): OCSP cache updates (#1094)
715d508e bump to 0.27.1 (#1092)
bd1015bd Fixed issue in V2G CSR generation, where getCpoName().value() always evaluated and could cause a bad optional access (#1089)
34e83e1c Fix EVSE struct initialization in handle_unlock_connector (#1087)
c76f5ef1 feature(ocpp16): Authorize response waits for set user price (#1065)
70556eb9 Let set_variable_attribute_value return SetVariableStatusEnum, not bool (#1066)
8df1ee20 refactor(ocpp1.6): Composite Schedule calculation (#1062)
7c632dd2 fix(ocpp16): Reset fw/log status' to Idle after success and failures (#1064)
0cbb27a8 fix(ocpp16): Security events for invalide CP and CPMS certificates (#1061)
6d954818 Bump version to 0.26.3 and libtimer dependency to 0.1.2 (#1060)
b19c9696 fix(v16): Removed security event on firmware installed notification (#1059)
e305daa4 fix(ocpp16): Reset connector status to available on failed fw install (#1058)
ec4949cc refactor(ocpp16): Remove the call to stop during a reset (#1057)
5d97eedc [OCPP 1.6] periodically check for expired profiles across all profile types (#1054)
2af0e8f6 fix(config16): Fix ChargeRateUnit for full ocpp 1.6 config (#1056)
18cff33a refactor(1.6): Split start function in 2 (#1053)
fb391b4f Fix handling and reporting of more invalid messages (#1052)
ee0edb6f Add unittests for availability functional block (#1041)
848bdf54 Ensure compliance with OCPP 1.6 3.13.2. Stacking charging profiles (#1051)
32c78890 Update to v0.26.1 in CMakeLists (#1050)
9ef9da82 fix(v2Database): Use proper last used date for cache expiry (#1048)
b40d2998 Integrate everest-sqlite as sqlite wrapper (#1027)
bd1a8db3 fix(ocpp16): Send security event on invalid csms certificate TC_078_CS (#1046)
b329f15d Bugfix/validate token (#1039)
ea4a5d9d Verifying pnc contract against MO and now also against V2G root (#1034)
aee7da8e Removed maaikez from CODEOWNERS (#1045)
91a45eb7 Initiating message queue operations before starting the message queue. This ensures that ensures that no message handlers (e.g. for StopTransaction.conf) are yet received that could interfere with try_resume_transactions, which could have lead to a duplicate sending of StopTransaction.req on startup (#1030)
a43df192 Addressed added argument to libevse-security for verify_certificate (#1033)
76ed3c5b Fixed a bug that set_connection_timeout_callback was called without checking for nullptr (#1044)
9794491c Bounds checks for Plug&Charge configuration keys (#1040)
1db00929 Fixed bug to set CentralContractValidationAllowed (#1038)
e46c2f6b DataTransfer.req(GetInstalledCertificates) now responds with NotFound in case no certificates were found (#1035)
3b1edda8 Session cost add message (#1007)
3ccfd0e5 Fix casting and types issues (#1029)
ae8f7fbf Calling reservation cleared when a transaction starts. Allows the state machine to move from Reserved to Occupied when transactions start (#1025)
f4094d99 fix(v16): Adding / removing connector id 0 default profiles (#1021)
8e2073f7 Added OCPP 2.1 complementary requirements to ocpp2x_status.md (#1011)
4d734a6c Updated README to address new OCPP2.1 support (#1022)
b37d3af9 revert ChangeAvailability scheduled for reserved state (#1024)
940d6e90 fix(v201): Comparison for profile period entry (#1023)
0135dc76 Refactored OCPP1.6 error cleared handling (#1020)
601a5423 fix(Ocpp16): Make StopTransactionOnEVSideDisconnect optional (#1015)
593ad434 Respond with to ChangeAvailability with Scheduled when in Preparing/Reserved state  (#1016)
4a11a672 Added configuration key StopTransactionIfUnlockNotSupported. If its configured to true, a transaction is stopped even if the response to the UnlockConnector is NotSupported. (#1017)
c669fba0 Add mlitre to CODEONWERS (#1019)
91a704e7 Hardened message handling by adding handling for StringConversionException and std::exception in message_callback of OCPP1.6 (#1018)
63e25cdd Event handler for NotifyEVChargingNeedsRequest (#1003)
c55d2581 OCPP 2.1 messages (#845)
ec68901b Bump version to 0.24.2 (#1010)
4d055dad Replace deprecated boost::asio::io_service with boost::asio::io_context (#1005)
7030f4e2 ci: Set spe-tags=, (#1009)
7536c99e Deploy Doxygen Docs (#888)
3b25cc62 Update CI to v1.4.6 (#1004)
a26227ae UnlockConnector refactoring (#1006)
055caef0 Moved StatusNotification.req(Finishing) behind StopTransaction.req message. Moving to StatusNotification.req(Available) in case transaction ends because of EVDisconnect (#1000)
205a0614 Functional blocks dependencies (#990)
6533694e Only change state to available if the current state is 'Reserved' (#998)
dc51a495 Fixed issue that websocket ping timer was not started when websocket is connected. (#1001)
731bda71 * Added OCPP2.1 option to templates (#985)
b3de351e Send CALLERROR only as response to CALL message (#995)
e3c135eb Addressed requested changes
006b3e30 * Removed most default occurences from switch-cases * Switched from runtime_error or out_of_range to more specific Exceptions: EnumConversionException, StringToEnumException, EnumToStringException
c5c835d9 Added all missing switch statements, added compile error when statements are missing
ff0100ce Bump version to 0.24.0 (#986)
04059e2c * Renamed all occurances of v201 to v2 and V201 to V2 * Added clarifications of directory structure in getting started guide
b6d807a3 Renamed v201 directories to v2
d1af3e29 Reintroduce getter function for transaction id (#992)
260bcec9 Add forward declarations and move includes to cpp files (#987)
b7131c6f Move remote transaction control callbacks and handlers to functional block (#977)
ea3cb61a Move provisioning callbacks and handlers to functional block (#976)
88a3df98 Transaction functional block. (#972)
2b14301e Raise error if charging schedules are empty (#920)
50520ce1 Refactoring of composite schedule calculation (#943)
817dc71b Move firmware update to new functional block (#952)
3283265e Catch exception when assiging String<> type with too long string (#966)
fc107f30  Fix bug where security event notification was sent while bootnotification was still pending. #984
a425d348 Bump libevse security dependency to 0.9.3 (#980)
c86a8f2d Fix potential nullptr access when we never constructed the websocket. Also change log to debug as it can spam when all options are not available (#979)
ba076c84 Move smart charging handlers and callbacks to functional block (#957)
7f3687de Fix bug where retry of certificate signing is too fast (#970)
698e1014 Move diagnostics handlers and callbacks to functional block. (#968)
96232f08 Move tariff and cost handlers and callbacks to functional block (#965)
4149cc7f Move meter values functions and callbacks to functional block. (#961)
e7d9de17 Move certificate stuff of iso15118 to security functional block. (#959)
1fa8fa0e Fetch everest-evse_security (#954)
9db4783f build with fetchcontent: add libwebsockets dependency (#955)
73cf4e5e Bump version to 0.23.0 (#963)
c67cd07e Remove lines where get display message always returned 'unknown' (#964)
ab89f477 Implemented missing handle_message in display message functional block (#956)
828ce615 Move 'Availability' callbacks and handlers to new functional block (#950)
5b24f57f Move functional block O: DisplayMessage (#944)
a513b3d7 Prepare smart charging for stationmaxcurrent fix with some small fixes (#936)
353a3ebb Move security callbacks and handlers to new functional block (#937)
240f15a5 Configurable TPM support for SECC or CSMS leaf certificate (#947)
e39d8237 Reset connection also if lws_client_connect_via_info fails (#948)
19049ff4 Move authorization callbacks and handlers to new functional block (#938)
96e7ae50 Change cmake test file so it is  possible to add separate unit test executables (#934)
e58099cd Integrate of send Triggermessage (MeterValues) in empty Connector case of present connectors or reject if non is present (#898)
850bd796 Update to add if the period returned was transformed in unit (#935)
4165d6cd Implement LocalAuthListDisablePostAuthorize variable (#941)
04b5b75a Initial commit: add device model test helper class. (#927)
83b3aa07 Change c-style casts of size_t to static_cast (#929)
e333c075 Censor write only variables logging and added a new callback to sanitize any logging that would be passed to the existing message_callback (#911)
85ee171b Checking supported_feature_profiles for CostAndPrice before attepting to get respective conigutation keys (#924)
8b0ad21c Fixed bounds check of connectors when validating charging profile (#925)
8d5ae96b Support of v1.6 only compilation (#879)
61a1c54b Make centralSystemURI accessible via changeConfiguration, reject if readOnly (#900)
8d162ae8 Correct remaining booleans in CostAndPrice (#919)
00137ba7 Converte boolean to true/false string equvivalent (#916)
c6638378 Move reservations callbacks and handlers to new functional block (Ticket #890, Pull request #894)
c84487f1 Apply validation on the Custom part on ChangeConfiguration.req (#917)
3869f69b Add interfaces and mocks for connectivity manager and ocsp updater. (#918)
0d6f14d7 Add In Depth Smart Charging Documentation (#905)
e52ac969 Reservation all connectors reserved (#878)
e7a37da3 Block possibility of using a stale reference in SafeQueue (#913)
5a7a0083 Fixed GetCompositeScheduleRequest invalid optional access (#910)
68b375be Fix potential bad_optional_access crash in connectivity manager (#912)
230ae1a9 Bugfix/libwebsocket dtor deadlock (#896)
21c83c99 Added bounds checking for ConnectorEvseIds and ISO15118EvseId (#903)
2f005e04 1.6: Support multiple temperature measurements (#902)
0cd8b3c0 Changed CtrlrComponent vars from references to values (#904)
c234ccc5 Harden handles against invalid connector id range (#882)
0d5649e2 Check for case insensitive bool value (#887)
b8c81b68 Add option to select multiple ocpp versions to libwebsockets and connectivity_manager (#886)
254dfbb5 Harden message_callback against runtime error (#884)
03cc8687 Converting reading context of meter value to Other (#899)
469629c6 Support hashing directories of certificates (#852)
270acabf Set libwebsockets install lib dir to follow the CMAKE_INSTALL_LIBDIR (#876)
01b20340 Fix unchecked access to profiles vector in smart charging test case (#892)
83993da1 Optionally allow security level 0 connections (#856)
9836ac47 Connectivity manager refactoring (#874)
173af8dd Feature/327 use case h01 reservation (#854)
c9a6f455 Fix bug in ClearChargingProfile.req (#872)
15e653d1 Libwebsockets (usage) improvements (#870)
18ca071b Feature/data transfer functional block (#871)
94a6844b Update Reusable Workflow to v1.4.4 (#873)
350430f1 Moved functionality to create message id from message_queue to call_types and made it a free function. Removed unused imports and usage of boost/uuid headers (#869)
0fbecf48 Merge pull request #863 from EVerest/857-certificates-handling-over-an-unsecure-connection-in-ocpp201-should-not-be-allowed
7f3ce1fc fix: rename config variables
4cb4a8a4 fix: rework on comments
1a042982 fix: add component variables in security controller
dbae9b96 fix: reject two cert types
db44a898 fix: security profile check when installing certificate
925e9cd3 Refactor of message dispatching (#864)
74f82e3a Refactored libocpp documentation (#847)
b2290824 Handle enum value in message queue and use if instead of switch to prevent compiler warnings (#867)
ac68603f Added fully featured v16 config as an example (#829)
b00d278c Rename `DeviceModelStorage` to `DeviceModelInterface` (#768)
5416829e Fixed bug setting NetworkConfigurationPriority (#866)
d042629d Use transaction BecomeAvailable when stopping transactions also when this->status->get_state(connector) == ChargePointStatus::Faulted since the internal state of the state machine could be other then Faulted, which would lead to an unspecified transaction not moving back to Available (#865)
49e05967 Add coverage and use reusable workflow from everest-ci (#858)
af3d08e4 Fix reporting of log rotation status (#862)
e29e5290 Bump libevse-security to 0.9.1 as used in everest-core already (#861)
4b0ab722 Improve network related logging (#859)
034b2f03 Bump version to 0.19.0 (#860)
c7755aaf Feature for SmartCharging Offline Behavior (#783)
d41bfc17 OCPP 1.6 add schema validation checks on updates to custom keys (#853)
b1f947e0 Allow empty network connection priorities. Replace throw with a clear warning message. (#855)
abdf54c9 Fix typo in testcase (#851)
6a001022 Removed websocket++ as a dependency (#846)
a6f88c8f Enable pedantic compiler error and remove C++20 feature usage (#848)
3c0d64c9 408 extend network connection profiles (#769)
478e92de Added optional argument reason in on_suspended_evse function for v16 (#850)
f480fc0e smart charging: updated validation to be explicit when conforming profile (#838)
8d74ff55 Configurable default limits for composite schedule calculation (#839)
97cc058a Add some additional security events (#818)
f1f31880 Restore increased size of Get15118EVCertificate.exiResponse (#824)
83172ee7 Added test case to check if existing profiles can properly validated (#837)
c6a6e01b check websocket and connectivity against nullptr in data_transfer_req (#833)
69c5bada Added parameter ChargingRateUnit to function to get composite schedules. This allows the user application the specify which unit to use (#834)
5c7f10cd Handle of invalid datetime when format check fails (#822)
846bc5e7 Reintroduce constructor which constructs the message queue (#830)
de063744 Various code generator fixes (#825)
37542f38 Fix reconnect mechanism when basic auth password is set (#827)
2124d055 Update ChargePoint tests to use new constructor with dependency injection. (#789)
c1d30ef9 Folkengine/k08 octt test failure (#803)
fa801934 Remote start and stop could fail in core, we should be able to report that (#817)
66880737 Bugfix: revert renaming of nlohmann json validator (#823)
7d466746 Setting transaction pointer of connector to null in case a transaction is stopped. This addresses the issue that charging profiles with purpose TxProfile were accepted even in case no transaction was active (#821)
feb302d9 Uri: fix schema reporting (#816)
8ccf5c11 OCPP 2.0.1: Refactor Smart Charging Persistence (#790)
e29affd9 Log an explicit error when a wildcard server certificate is rejected (#814)
8c59de30 Merge pull request #807 from EVerest/feature/806-customise-exceptions
c7a4e23c Add optional TLS secrets logging (disabled by default) (#804)
68f0aee3 Correctly set User-Host header if a HostName is provided in the config (#805)
252abab0 Make exceptions specific inside ComponentStateManager
15070a18 Fix missing backslash in URI if not filled in network profile (#801)
af2fcc43 Feature/706 ocpp 201 california pricing requirements (#757)
5dedd1f9 Rename 'component schemas' to 'component config' (#794)
2647ee4b ChargePoint: add support for SecurityEventNotification `FirmwareUpdated` after reboot (#747)
10ff71f9 Add critical and timestamp parameters to on_security_event functions (#795)
9fca4cb8 refactor: Replace get_vector_from_csv with split_string (#791)
9a9a9b9c Testing: Updated test fixture names (#782)
1c0a2e3b Added certificate validation to FirmwareUpdate.req handler in ocpp201 (#727)
c5237ea2 Update CODEOWNERS (#797)
4dcd8a27 Notify consumer about charging profile update when a transaction stops (#788)
8124039f Fix EvseId 0 not throwing the correct exception (#799)
0f5dfa05 Use the last_used value from the auth cache database to check for cache lifetime when authorizing (#793)
4e4085fd Remove code generator tooling for ocpp201 (#784)
71f8b1ae Feature/k02 05 cumulative (#760)
affafb76 cache network connection profiles (#778)
2ae785fb Change for loop in get_all_composite_schedules to include all evses including 0 (#786)
4a62b490 Implemented API for composite schedules for ocpp201 (#773)
70b67a9c Move definition of device_model to let destructor of connectivity manager execute befroe the one of the device_model (#777)
591c978a Added verifications before calling callbacks (#725)
3fef0923 Ensure that connector stays in bounds of status notification callback (#767)
6e4035d1 Implemented feature and additional config option in addtion to QueueAllMessages. A new config option MessageTypesDiscardForQueueing has been introduced. It is a comma seperated list of message types that shall not be queued (when offline) even in case QueueAllMessages is true. If QueueAllMessages is false, the configuration of this paramater has no effect. The message queue will discard all message type listed as part of this value except for transaction-related message types. This feature has been implemented for OCPP1.6 and OCPP2.0.1 (#765)
079e12b1 Feature/K08 Get Composite Schedule  (#745)
5cf14b34 [janitorial]: fix enum warning in connector,  typo fixes (#764)
9849a961 Fix issue that connectivity_manager was only initialized in a single constructor (#771)
0c5aac4d Ensure ChargePoint initializes evse_manager before passing it to smart_charging_handler. (#763)
7fc94d20 Moved websocket to new connectivity_manager class. (#748)
2bc64f07 Add missing conversion to uint64_t (#762)
fb4d4306 Add "critical" optional parameter to on_security_event() (#751)
9b2fba5e K01 - Small cleanups (#746)
21292cfc SmartCharging use cases K09 and K10 (#743)
65ef664f Device Model - hardwired monitors (#739)
47eee62a Bug/729 add remove variables and components from schema for device model (#740)
5602bbc0 Build examples in CI (#749)
033b18cd Fix build of example v16 binary (#731)
e074a6b7 Moved loading of charging profiles from database into memory into constructor. Before that, this function was inside the start() function of the ChargePoint. If the libocpp consumer requested the composite schedule before the start() function is called, existing profiles were not used. (#738)
e12fb952 Fix compilation issue with ambiguous type in types.cpp (#750)
f096e5c1 Improved handling of json and enum conversion errors (#742)
d967fcf3 Mark methods as override (#735)
c2a980b7 Optional log rotation (#719)
4a2f7a55 Feature/376 ocpp 201 california pricing requirements tariff and cost (#707)
398f0c5e Update generators and move custom enums to new file (#741)
1c688a6b Implement SetChargingProfileRequest and basic database storage/loading (#711)
8476c0d8 moving add_stop_energy_wh (#737)
01dba252 Bump libocpp version to 0.15.0, bump libevse-security to 0.8.0 (#732)
bfb3d1f1 Fix missing include (#726)
abecf022 revert hardcoded csms uri in config (#724)
aab1d578 Allow resuming of transactions for OCPP1.6 (#704)
1067cf3d Refactored OCPP16 error handling in state machine (#673)
1b15045b adjust some component schmeas and configs to align with requirements of OCPP201 spec (#720)
ebe4fd51 added support for SummaryInventory in OCPP201 (#716)
f7b26ec2 Replaced throws with error handling (#718)
341d3a51 Update API for new library header usage (#717)
2aef3530 Fix usage of SSL default password callback (#696)
f40b6eae fixed bug that accessed evse id 0 as parameter in set_evse_operative_status (#714)
c23b8136 [fix] explicitly initialize the variables in transaction.hpp (#710)
d7189a0f Only log missing variables on debug (#708)
d578e450 Added further handling for UnlockConnector.req (#712)
01f064f4 Smart Charging: Expand add profile capabilities (#682)
d6064d73 Add support for AllowReset per EVSE in OCPP2.0.1 (#705)
8be8104b Feature/add trigger reason to transaction finished (#698)
f5861735 Change return type of DataTransfer to std::optional (#699)
618ddbd4 Resume interrupted transactions (#501)
673bc5bf Adding async messages to queue and therefore persisting these messages when queue all messages is set (#695)
1dc06dc1 Add wait_for for futures (#694)
a774d78f Added monitor triggering/filtering base capabilities (#686)
921635a8 pause charging when maxEnergyOnInvalidId is equal (#666)
22fc7025 Fixed bug that source and value was interchanged when setting NetworkConnectionProfiles variable (#692)
21b00339 Added callback connection_state_changed_callback to be able to notify libocpp consumer if the websocket connection status has been changed (#693)
618b79d9 Minor adjustments to device model initialization (#690)
ad698a09 Add missing start of message queue for OCPP1.6 (#691)
b223e4e8 charge point: improved thread handling (#685)
b67951ce Add helper class holding the EVSE's (#668)
704ca434 Bump version to 0.14.0 (#689)
981925c6 Feature/656 device model initialization in cpp (#681)
10e194b4 Unit test refactoring (#674)
6587cd48 Fixed bug that lead to incorrect transaction handling in case StartTransaction.req could not be delivered: (#688)
ee0f1ebe Improve readability/informativeness of the OCPP 2.0.1 status document (#617)
77f5b2a6 Support for persistently storing normal messages (if QueueAllMessages is enabled) (#684)
73017e6b Bump version to 0.13.0 (#683)
3d361ac6 Return listVersion -1 if LocalAuthListEnabled is false (#679)
8d4cccbc Feature/variable monitoring messages (#665)
15a632db K01: Implement Full Validate Profile Method & Required Methods (#611)
9d605a92 throw exception when NetworkConfigurationPriority is empty (#669)
fbb7eac4 Message Queue Refactoring (#637)
e479e62f changed SecurityEventNotification name for OCPP1.6 from InvalidCsmsCertificate (OCPP201) to InvalidCentralSystemCertificate (OCPP16) (#680)
1913fd5f Support SoC Measurand (#677)
86292aee Added transactions (#675)
71149ee3 Add option to disable compilation of v16 or v201 if you have no need for one of those 2 options (#670)
70607696 alternate composite schedule calculation (#619)
d3adcf8c Feature/variable monitoring backend (#653)
8b385655 Bump version of liblog to prevent BUILD_TESTING=ON for liblog in case of (#660)
9398212a Add AuthCache cleanup logic (#243)
3dc613d6 Add not applicable to some of the Smart Charging cases (#663)
2f82f128 Added extra memory mode for DB (#659)
9a19d29b * Introduced new configuration key MaxMessageSize (#651)
c89460cf Without this change, a Plug&Charge authorization request failed when the OCSP could not be generated, e.g. because the contract certificate chain did not contain any OCSP extension. Those contract certificates exist in the real world. This commit changes the behavior in case no OCSP data could be generated. If CentralContractValidationAllowed is true, the certificate is send as part of the Authorize.req instead of rejecting the request directly (#652)
f5bd5196 Moved implicit instatiation of CallResult<AuthorizeResponse> within try-block (#636)
e688898e Update to database connection usage (#643)
1d05b2e1 update availability status of the entire charging station in the device model (#648)
1cf2d654 Scoped lock to avoid a deadlock on connection timeout (#655)
960e9749 Bump version to 0.12.0 (#654)
cab24d5b Trigger security event notification on root certificate mismatch (#624)
09762a7a Add thread that executes the callbacks via a queue to synchronize them (#615)
84dbfa38 bug: correct precision of meter_start (#646)
a3e03e4b Bump libevse version (#647)
62aad728 Add missing return value to DatabaseHandler::authorization_cache_clea… (#642)
d3921aa5 fix: OCPP message handling on invalid messages (#618)
a383cff8 Updated dependency to OpenSSL V3 (#639)
cc74b0b8 v1.6: Reject call of RemoteStart.req with negative connector (#627)
c86da17e v1.6: Persist queued changeAvailabilty (#629)
f9e2d48b Feature/631 support ocpp 201 2146 iso15118v2gcertificateinstallationenabled (#632)
6b3892f1 Set connection_attempts to 1 from construction to prevent sometimes reporting a reconnect delay of 0ms (#622)
6c2cdead Updated dependencies on new libevse (#620)
9810a9a8 Refactor Exception Handling of Database Handlers (#602)
c83af3a0 * SetChargingProfile handler allowed TxProfile when there was no active transaction. This was fixed with this change. Added further test cases (#616)
0b4afa8f stopping bootnotification timer when BootNotification.conf is Accepted (#614)
edb8bba5 Convert another logline to debug in libwebsockets (#601)
5278e16a Guard 2.0.1 database transactions with a mutex (#589)
16957338 Use correct libevse-security hash (#613)
cea4087e Bugfix/66 gracefull crash handling (#604)
6fb39bdd OCPP1.6: Pending transactions at startup (#610)
4bd4daed Fix issue that two SecurityEventNotification.req were sent on startup (#612)
d6e65d20 Execute on changeavailability for connector 0 callback (#607)
8ba873ab Moved security event notification to charge_point start function (#515)
8ad3c9a5 Fixing transactionData omitted in StopTransaction.req (#493)
f90b5826 Change trigger reason for stopped by EV according to errata (#594)
d3f696b5 Added BootNotificationResponse callback for OCPP1.6 (#605)
25a3c6e0 Added support to report QueueAllMessages and MessageQueueSizeThreshold in OCPP16 to the CSMS (#593)
37c877ef Fixed a case in which a re-connect was not attempted by the libwebsockets when there was a connection timeout. The conn thread did not had the opportunity to dispatch the 'on_conn_fail' callback in the case of a timeout (#603)
c227242c Merge pull request #597 from EVerest/support-set-variable-on-the-fly
ded4812e Support change of a variable on the fly
64e91c46 Add interface class for v201 ChargePoint class (#591)
5f574c5d Removed logging used in debug (#600)
42d139ae Install missing 3rd party headers (#588)
6d8a6866 Added support for iface in libwebsockets, added config values, added README (#552)
ce164cde Fix user input usage (#599)
f3e388ed Bump version of used github action run-clang-format to v1.1.0 (#587)
c0f942ee Removed dependency on websocket++, minimized dependencies (#568)
19aba263 Switch to libevse-security tag v0.6.0 (#586)
85127948 Drop transaction message from database if delivery attempts are exceeded (#579)
cf617008 Merge pull request #581 from EVerest/580-the-field-evse-persists-in-transactionevent-updated-and-ended
a3fd1723 Format Clang
e775a9eb Remove evse from TransactionEvent Updated and Ended
eb8e36be Merge pull request #578 from EVerest/577-do-not-send-the-idtoken-in-transactionended-message-when-it-is-ended-because-remote-stop-or-ev-disconnected
315b8080 Updated for changes to libevse-security is_tpm_key_file (#583)
b693a782 Schedule Validation Follow-Ups (#537)
6c4bcf5f Update the comment with reference to documentation
76e2301e changed default config to more reasonable values (#576)
26ee85ce moved handling of changed variable after responding with SetVariables.conf (#575)
129b8905 Send idToken at finish transaction only if it is deauthorized using a token
cc169bed executing disconnected callback when websocket connection is closed (#573)
d21b6c83 Add functionality for database migrations (#556)
27efcee3 Add IdTagInfo to startTransaction.conf callbacks (#498)
8cf99628 Remove redundant conversions for CustomData (#571)
23c4f44f Fixed message received from CSMS too large (#569)
cb1c54b2 initialize nr_of_evses with 0 (#570)
a7f9a75e Allowing NotifyReportResponse by CSMS in pending (#565)
04f87bb3 Response TriggerMessage Rejected for MeterValues if the measurand does not exist (#564)
8ba2086a Various custom data extensions (#541)
2d4193f2 statemachine returns faulted if faulted (#562)
d2ef2c92 Improved validation of TxProfile: (#561)
04724176 - Fixed an issue that waited for a message to be sent for 20 seconds when the WS was offline. On new behavior it quickly fails. (#560)
10e75263 Start OCSP updater only when successfully connected to CSMS. Increase retry to 24h (#559)
86ca42ef Resetting next message to send in case we receive a CALL message while in ConnectionState::Rejected (#558)
e2fe336c calling set_connection_timeout on start up to apply the value that is set (#557)
d47fd2dc Validate a TxDefaultProfile. (#524)
63998422 OCPP2.0.1: Device model access for EVSE and Connector specific variables (#553)
0f471de8 Support configurable TxStart and TxStop points (#546)
3ce375e3 Made libwebsocket usage default (#555)
8a9e0696 Adding OCPP 2.0.1 status document (#540)
5c66e7bd Refactoring database handling to allow for unit testing (#549)
cc6bfac1 OCPP1.6: Improved offline transaction handling (#551)
d8d02ce5 Fix ConfigurationInventory reporting in GetBaseReport (#545)
6a339875 drop use of deprecated OpenSSL functions (#535)
88006dcb Add unit tests for sha256 functions (#548)
e1ae0bcd OCPP1.6 P&C Handling adjustments (#538)
ce792235 Make EVSE mockable and add mock (#534)
45d7e890 Verify that EVSE exists. (#531)
778e0800 Pg c07 authorize contract certs (#536)
86adda6e Updated interfaces (#532)
b5301869 Adding OCPP1.6 add profiles tests (#440)
84477ba5 smart_charging: Add validation for profile schedules (#521)
c19299e7 Add unit tests for using components as keys in map (#522)
10bb269c External variable access for OCPP2.0.1  (#530)
18541b4f Added SWTCH to list of 2.0.1 CSMS (#526)
eed4bf48 Bugfix/494 libocpp verify csms cn wildcard (#516)
d0ecfdfb Fix WriteOnly and ReadOnly variable reporting (#523)
1f7cbb63 add 1.6 k01 clear all profiles with filter tests (#447)
51b3a62f SmartChargingHandler: Add validation for TxProfiles (#452)
5a4f95f0 Rejected RemoteStartTransaction.req and RemoteStopTransaction.req while in Pending (#520)
dafe04a0 using default interval for retries when no BootNotification.retryInterval is given by CSMS (#519)
8cc5808c feat: add method to obtain transaction id (#509)
7bf03378 added certificateType to SignCertificate.req (#514)
19b5e7c8 Mz security event boot reason (#512)
ebb83cc7 fix: libwebsockets retry on no-connection (#513)
4d5cb7cd Fix insertion of duplicate signed meter values (#517)
39fa5b75 Added tested OCPP 2.0.1 CSMS systems (#511)
135b385b Added libwesocket support for secprofile 0 and 1 (#508)
ba83f17c [fix] check on registration status in component_state_manager lambda (#506)
272be7a9 Supported Measurands for OCPP1.6 (#492)
2f591646 Send CALLERROR SecurityError B02.FR.09 (#503)
69c8afe0 add missing keypair conversion fields (#510)
c978e5d7 Fixed conversion (#507)
a7e9e61e fix: information log causing segfault (#500)
eec7ea29 Added ITE to list of tested OCPP 2.0.1 systems. (#505)
bcfae6d6 If no changeconfiguration callback is register call the generic one, … (#282)
db4d1d0e Update dependency on libevse-security (#491)
7023ae3f Add filtering of signed meter values (#481)
72cbc5a9 Disconnect websocket also when it is not connected.  (#418)
d4c9bf40 Add option for custom logging library instead of header file (#487)
2ae29ec9 Unit testing best practices, fix gtest linkage (#488)
ba9b7d52 Fixed link to OCPP protocols in README (#489)
e401336c CiString conversion fixes for GCC<9 (#483)
73b64e86 Fix compatibility with python 3.7 (#484)
7e0ce54d Support for AuthCacheDisablePostAuthorize and DisableRemoteAuthorization (#476)
7e3aec20 specified pietfried and hikinggrass for ocpp16 domains in CODEOWNERS file (#479)
0236188b Usage of allow_zero also for integer values in device model (#477)
df2400bc Reliability improvements for OpenSSL tpm2 provider on an embedded system (#463)
43286e58 Enable the Power.Offered measurand (#471)
65cb2ef8 Fix logic in connection attempt only AFTER a reconnect (#473)
c9827c5e Added stackLevel to EnhancedChargingSchedulePeriod (#453)
674a5b72 Number of fixes to the Metervalue implementation for 2.0.1 (#448)
f9e30ebb Fix usage of recursive_lock in lock_guard (#470)
be4e10a8 Special handling for value 0 for certain variables (#466)
9ea3d291 Add issue and PR templates and CODEOWNERS file (#436)
d12054ec Support of mutex inside get/set of configuration, which can be happen… (#281)
dfb29dee Bump evse security version (#469)
a1fe09b8 Libwebsockets: Fix message loss on reconnect (#457)
94902c2d Adjusted and moved SQLite close handler (#465)
4c6a8d14 Restore connector states to persisted states on failed firmware update (#464)
eeff12f8 persist flag in execute_change_availability_request was not used and is now used (#461)
45102e1c removed error log for InternalError Message type (#462)
051c685f Dont persist unavailable on fw updates (#456)
06fcfa30 Add additional locking for next message to send (#451)
0ee858f7 changed type from string to ocpp::SessionStartedReason in 1.6 build examples (#435)
496c14bf Added certificate_single_path to KeyPair type  (#455)
10323b29 Protect from concurrent connector status updates (#454)
722f09b1 Fix bug in handleGetInstalledCertificateIdsRequest (#449)
38943d4a 437: Fix delay in bootnotification
104fe883 Activenetworkprofile variable missing and is required if we support networkconnectionprofile (#424)
36df4f02 prioritizing bootnotification in message queue over transactional messages (#444)
72c7a1f9 Fixed reconnect attempt, fixed sys error on timer dtor (#443)
fbc95ee6 Ensure that BootNotification is the first message in the queue (#439)
d3971bdc Improved handling in case CSMS responds with CALLERROR or not at all to BootNotification.req (#431)
bef3f615 Update libevse-security to v0.4.2 (#428)
fde2ece7 Extended Use of SecurityEventNotification.req in OCPP1.6 (#425)
d76c80a4 Localised per-thread conn data for a clean disconnect (#429)
aae98f5a configuration_key_changed_callback function is now also called when set_custom_configuration_key finished successfully (#427)
ac0538ea Add InvalidCsmsCertificate notification (#419)
84b604a9 Add support for certificate links (#398)
4ae306af Remove pycache file (#412)
1b59cc9a Fix vector conversion of network connection priorities (#411)
35195e63 Bump libevse-security to v0.4.1 (#409)
536ec6ef Fix: OCPP 2.0.1 CS, EVSE, and Connector availability tracking (#292)
7fa3cb9e Added option for writing SecurityEvents to a security log file for ocpp1.6 and ocpp2.0.1 (#407)
7b8eb76f  CI: Add building, testing and linting (#297)
0255e3b3 Add request_value to 2.0.1 ChargePoint api (#405)
c2033a06 Fix unit tests: database_tests and evse_security_mock (#389)
6af3a5b6 Fix message_id_generator lifetime issue (#404)
9afe4053 * changed argument reason of on_session_started from string to SessionStartedReason (#402)
8d7642d8 B07 get base report simplifications (#397)
5ee114c4 Added OCPP 2.0.1 feature profiles and link to google sheet (#370)
82bde3fa added argument initiated_by_trigger_message to all functions that could be triggered by TriggerMessage or ExtendedTriggerMessage. This fixes a bug that messages were not send to the CSMS as a result of TriggerMessages while being in BootNotification Pending state. Messages are now sent when triggered and while in Pending
3e876da3 Properly check network configuration priority size
c03ac070 fix bytes and items per message in localauthlistctrl (#399)
f79c7cdc B08 get custom report (#294)
990e3bc6 added vendor error codes and vendor id and info to on_error and on_fault and applied respective changes in chargepoint state machine (#395)
87506abb Several updates to OCPP201 device model (#392)
8114bce2 Fix build issue caused by implicit signed type in JSON schema validator
bbdd481a Update README.md with SteVe
411439bc Update README.md
7888cd60 clang format
3168357d changed id_token parameter of on_transaction_finished to ocpp::v201::IdTokenType
2e1b537d Without this change, the disconnected_callback was executed also on reconnect attempts when the websocket is already disconnected. This leads to the situation that the time_disconnected of ChargePoint resets on reconnect attempts and therefore the handling of the OfflineThreshold is incorrect. This change only calls disconnected_callback if websocket is not already disconnected.
1ecd9cd5 Support for tpm CSR request (#381)
7174478c Fix websocket certificate check (#380)
cf644b88 Added support for libwebsockets for tpm/secprofile 2/3 (#320)
a6cd837e OCPP1.6: Add internal availability change request API (#358)
0d8c47b0 Fix sorting operator for map insertion (#291)
b6190933 Fix regression: Add message queue "resuming" state (#357)
78652836 OCPP 1.6 Fix: add flag for pending firmware update (#306)
bc6a9188 Bugfix/hotfix tls intermediates (#305)
3f05b142 Add component SeccId and add warning for missing components/variables (#300)
c294586d Generate signing request not only for CSMS (#290)
049b19c1 Fix: Validate CN = FQDN for TLS websockets connections (#287)
191e6d16 fix: Remove optional StatusNotifications on reset (#302)
fef9c417 Make sure the session_id_logging map is properly locked when modifying it
89158a10 OCPP 2.0.1: Make message interval, retries, and timeout configurable at run-time (#298)
aba6f3b9 Fix potential crashes and fix TxProfile during transaction (#299)
32bc5c4a EV377: split notify report requests (#295)
daa49501 Feat: Optionally delay the resumption of the message queue after reconnect (#283)
01c3a6bd Use sqlite_close_v2
775f02b0 OCPP2.0.1: Ensure individual firmware status notifications are sent once (#277)
bb11e09e EV369b:  drop update transactional messages if necessary (#285)
d0b429b9 EV369: Message queue buffering (#284)
497b08c5 Fix union annotation for python<3.10 (#289)
9f8cf84c OCPP2.0.1 add data transfer in line with OCPP1.6 implementation (#279)
1826478c Validate datetime in OCPP 2.0.1 device model (#286)
776f5c07 EV 355: part II: update schemas and enforce required property (#272)
6aa9c90b add timestamp to StatusNotification.req for v16
6ad37127 EV 355: Consider & verify "default" and "required" settings for Device Model Variable Attributes (#269)
4cff8fe1 Do not send InstallScheduled when changing connectors to unavailable (#276)
aa5990a8 Implement OCPP 2.0.1 use case M06: Get V2G Charging Station Certificate status (#249)
7afed39d Fix off by one error for max connection attempts
463975f0 Make sure a transaction cache update also sets the lifetime (#268)
07295a8b Set connectors to unavailable during fw update (#252)
5df2ceb8 Fix a few unchecked optional accesses (#273)
f5c15437 A05.FR.06: Remove network profiles lower than the actual security level (#271)
b208d4e7 disconnecting websocket with websocketpp::close::status::going away
34bd0a1a Fix default ciphers (#274)
004d98b1 Fix code generator for RequestStartTransaction and RequestStopTransaction (#270)
95aea4e1 Harden change configuration on integer input (#261)
8a4a9710 Averaging Measurements (#241)
4551bfa0 Change data transfer API for 1.6 (#265)
baca3bd4 Merge pull request #266 from EVerest/refactor/libevse_header_refactor
a43c4e68 Fixed evsesecurity header include
f202c9b5 fixed argument in database tests (#267)
6bfdb5a0 Add websocket option update on component variable change (#263)
a008911d fixed reporting of similar sampled data in transaction data of StopTransaction.req
ba53f415 Fix reconnect interval not actually using the configured delay (#257)
081fec70 Support of security profile for example charge_point (#246)
280c6a8d configure message logging (#253)
271e0257 validate CSMS-URL: opt. schema must fit with security-profile; chargepoint-ID deprecated in URL (#201)
6ef52526 Added PUMP Connect as compatible CSMS for OCPP 1.6 (#260)
b50b61a8 Usage of is token reserved for connector callback in remotestart (#220)
f381e393 fixed optional access to CpoName
333c911e Add timers for certificate expiration check (A03) (#250)
9268b485 Merge pull request #255 from EVerest/fix/add-password-callback-in-profile-3
6a7de6eb chore: fix formatting
5807195c fix: limit max len of password in password callback
d5f8a76a fix: add password callback to SSL if using profile 3 and the private key file is encrypted
0846082f OCPP201: SignCertificate and CertificateSigned (#212)
d7675057 checking if error has changed before executing status_notification_callback
092d88fd changing type from bool to int; allowing pos 0 when data is empty
dd13282b changed from recursion to loop
642d7d75 Update lib/ocpp/v201/charge_point.cpp
326ce3d5 clang format
a2f73ebc added minimum of 512 to MaxCustomerInformationDataLength
ed8b2405 implemented GetCustomerInformation and NotifyCustomerInformation (n09, n10)
ba2ae51f Database error handling (#247)
bcf4e57b Added new tested CSMS (#208)
93c14e95 Close libocpp gracefully (#245)
0fe5bbc7 Bump version & dependency versions (#244)
4c30a761 Add message logging callback (#209)
a78f3e49 added handlers for GetInstalledCertificateIds and InstallCertificate for v201 (#242)
4c5d505e only stopping pending transactions if StopTransaction.req is not yet queued; This change is required because without this check the StopTransaction.req could be sent twice for the same transaction on startup because since e865d20 the transaction message queue is also loaded on startup (#239)
71e014c8 ChangeAvailability(Scheduled) moves inactive EVSE/connectors to unavailable directly
1cfe50a6 C16: Master Pass (#225)
839594c3 Allow connector phase rotation to accept <ConnectorId>.NotApplicable … (#211)
3745352b Use database to store transaction metervalues to be sent at the end of a transaction (#205)
386dcb26 added disconnected callback to websocket
790426a5 responding with NotSupported to GetBaseReport.req(SummaryInventory)
69703c2f fix: 1、fix component:ClockCtrlr config
9e89830b moved response to assign directly
0f120dfe implemented GetTransactionStatusRequest for v201
b8cf9579 Add handling of max energy on invalid id (#230)
dd654871 callback for boot notification (#232)
08eb2fd9 Make sure that CallResult and CallError messages are delivered in order (#231)
df8a2827 Update libevse-security dependency (#237)
d5f6892d clang format
7fec2ba3 moved try/catch to next layer to add more context for logging
94a6ae1f Update lib/ocpp/v201/device_model.cpp
2111ace6 added is_integer and is_decimal functions to device model validation
f46b66f7 Add additional security event notifications for firmware update tests (#233)
e865d20d * added support to report and consume security events in OCPP1.6 * now treating  SecurityEventNotification like transaction-related message * Revert SecurityEvent enum back to strings
a1339411 B06:- Get variables requests  (#218)
6749e46a fix crash invalid evseid
8292d0c2 J01- Non transaction meter values
2b4f3ea4 Only send status notifications on reconnect if we received a disconnect callback
0c434645 * Adding A04 Security Event Notification * Only send critical events to the CSMS * L01.FR.02, L01.FR.02, L01.FR.31 * Fixed TriggerMessage for FirmwareStatusNotifcation for L01.FR.26
f07b61d8 improved readability
ba73be41 improved handling of ChangeAvailability.req
71a7f216 added minLimit and maxLimit for BasicAuthPassword
44b8df4c writing security profile to device model on init websocket and connected callback
ac4bb792 If no metervalues are going to be sent, do not sent a MeterValueRequest or an empty meterValue list in a transaction (#187)
7f349e54 Add missing find_dependency(everest-evse_security) (#210)
4769c490 Added a time sync callback that can be used to sync system time (#202)
314baaad custom readonly values were not reported. now fixed (#207)
9d26227e added conversion functions for evse security types and using them in datatransfer pnc backports for 1.6 (#206)
1cb09994 Add  some SQLiteStatement functions to prepare for other PRs (#203)
24fb839e Add auth cache storage size to de device model (#170)
3bb54185 Binding json default construct to use initializer list based constructor (#179)
fd5a8dee Update liblog dependency to 0.2.0 (#198)
dedfa941 Improved device model storage initialization (#204)
e4f1ccdf Refactored pki_handler to evse_security (#157)
32dd05fd Fixed FirmwareStatusNotification for v16 and v201 (#200)
435a0cc7 Add ChargePoint constructor so a pointer to a device model storage can be used (#188)
a4716b68 ran clang format and added user-host also to websocket tls (#197)
18a828e1 Set is connected to false in on fail handler of plain websocket (#196)
69c75d83 Integrated hostName as parameter which is applied on websocket plain (#194)
9c445dbf Support older C++ versions with `boost::filesystem` (#177)
0a1b3877 Fix clang lambda capture which went out of scope (#195)
17ae171f Fixed some compiler errors with older versions of gcc (#192)
e8e9b9ea OCPP201 device model setup in cmake (#190)
a53e4e0a Improvements for OCPP1.6 made during OCA Plugfest  (#185)
743f6972 Fix build with clang < 16 (#183)
09fe1d73 Remove check on auth list ctrlr available (#189)
4aaf1cdb adding Custom.json to Config.json schema if it exists
49066870 not installing Custom.json by default in libocpp
2a572cbb added try catch around message_callback function to process messages that were not correctly formatted
e244a2b9 appying new authorization key before reconnecting
c5030bb6 added bounds checking for evse on change availability
f3c2ea90 added NotImplemented response in case we receive CALL that is not implemented
5960ef05 added change of heartbeat interval on change
5d416f75 added argument connector status map as optional argument for restart command for 1.6
d2ef6966 added support for custom configuration keys for 1.6. This includes: * the option to register callbacks for specific keys that are executed when those keys change initiated by CSMS * an API call  to retrieve configuration parameters * an API call to set custom configuration key in case they have changed internally
0278eeb8 Only send charging status transaction event updated when charging state actually changed
5dc53c80 E04-offline transactions (#173)
6534c4cc - added reduced state machine for connector 0 for 1.6 - chargepoint can now be initialized with initial chargepoint states ; if no states are provided, last states from persistant storage will be used to initialize the state machine - reset of state machine is now public
95706e02 added plug in timeout handler to move from preparing to finished
ca1fe7af made WaitForStopTransactionsOnResetTimeout configurablefor ocpp1.6
392fddb1 No longer use async for transaction events, instead use normal response handling
73c97f58 * Send status notification if offline period exceeds threshold * Store the connector status when offline into a map * send status notification for changed connectors when back online
33c35465 Signed-off-by: Gregory Squires <gregsq@protonmail.ch> pg_websocket_v_dtor - Make WebSocketBase destructor virtual to properly call Websockettls or Websocketplain destructors when unique_ptr<WebSocketBase> dtor is called.
73cb2556 Add check to validate if the callback struct is completely filled before starting (#167)
840d3c3e calling set system time callback on bootnotification response and heartbeat
88032c75 Refactor the validate_token function; include both local list and auth cache in the correct order and offlineTxForUnkownId (#156)
8a3aa82f introduction of measurement (#160)
3360cd6c removed doubled definition of apply_local_list in v201
f73838e1 Refactor v16 database using the new sqlite statement wrapper (#154)
62b4959b authlist database changes (#153)
83533ebf Update README.md (#159)
fc610b52 Make it possible to use own logger instead of everest logger. (#150)
6cfe002a Merge pull request #145 from EVerest/me-trigger-message
0dc78e06 Add function to device model that allows setting read-only values for certain components (#152)
a2d5df45 Fix CamelCase to snake_case and fix doxygen comments
a59b1369 Add firmware status notification to trigger message
b16cb4f4 Fix style issue
81cf7246 Add LogStatusNotification
be772087 Style fix and add triggers still needing implementation
e5e32167 Removed meter value message where not intended, small style changes and added connectorId check just to be sure
8b93e0be Simplify evse searching, add exception to bootnotification and add status notification
b4412b7a Simplfiy get_latest_meter_value
8ac54049 First few messages implemented
5f126991 Split off SQLite statement wrapper into own file and apply to v201 usages (#149)
24700a7b checking if message queue is running before pushing messages to it
c365fe4b Reset with ongoing transaction (#128)
3c552995 Use the token id as well as the token type to generate auth cache hashes (#148)
a01eb60b Don't store central type tokens in the authorization cache as per C03 and C05 (#147)
5c32e299 Add an example on how to build libocpp with FetchContent instead of EDM (#135)
76f57419 Update nlohmann json and schema validator (#144)
e0de9b9a Adding missing dependency for gtest (#136)
970b663d Send rejected when a start or stop transaction request is sent and bootnotification is still pending (#142)
315842ed Add clang-format linter workflow (#140)
4660464a Transaction event changes to get remote start / stop working and compliant to octt (#138)
694ce69f now adding variables with instance properly in insert device model script
705cdb21 add unlockconnector to handle_message switch
115bcc27 added public function to disconnect and connect the websocket connection
14a08861 Merge pull request #134 from EVerest/doc/mz-sync-to-roadmap
fa8707cc Reference to EVerest roadmap
a1f46375 fixed units tests who had old boost dependencies
4af34133 returning websocket close reason back to chargepoint class to handle reconnects according to this reason, this is required for 2.0.1
fc220c2d Add charging state to transaction so it will be sent when a transaction has been started (#130)
8ba7a70e fixed bug in calculation of next network configuration priority
a8fd8095 added shutting down flag to websocket to interrupt reconnect attempts when websocket was closed with code normal
674b1720 refactored error and fault handling in libocpp bumped version to 0.8.6
bb081036 - implemented a01: change auf BasicAuthPassword (#129)
ee070c55 Handle more invalid messages (#119)
793a113b Add on_faulted and on_reserved events (#126)
c65ca7de Firmware update (#121)
5e18bf1a - Added handling for ClearCache.req - Improved updating and deleting of cache entries - implemented validate_token with linear flow
d4cd8f5d applying SampledMeasurands filter to Transaction_Begin and Transaction_End context values
30e9c6ba adding remote start id to transaction to be able to report it on EventType(Ended)
642c6dfc sending response to ChangeAvailability.req before executing callback
0f2bdbcb now including meter values without measurands in StopTransaction.req. This includes e.g. signed meter values
729cd7c4 added configuration key for allowing certain smart charging profiles with no startSchedule
f79d59e3 Remote start stop (#110)
395b5e24 added config_path param to init_device_model_db script so that it need not be executed from within the folder where it is located. This is required to set up device model databases for testing
a3b5e76f Remote unlock connector (#115)
4fd74407 Fix openssl warning of deprecated function
58e6bc4b Refactoring of OCPP201 device model - refactored device model API - device_model_storage.hpp provides an API for different device model storage implementations - added implementation of device model storage for SQLite - added support for initializing ocpp201 sqlite device model database - updated charge_point.cpp to use new device model api - updated component schemas by adding variable_name and instance properties - updated v201 config (can now include all possible VariableAttribute types (Actual, Target, MinSet, MaxSet) - added code generator tooling for setting up the device model and component schemas - enhanced libocpp readme by explaining how to set up ocpp201
a9e54376 improved logging around websocket connection; allowing 8 characters AuthorizationKey now
b80fcaa8 OCPP 2.0.1 GetLog (#111)
e4cd4ff9 added basic implementation for DataTransfer mechanism (#103)
168d9687 Handle invalid messages (#107)
b3fa45fe added transaction started callback updated chargoint example code (#105)
3b006cca Make nlohmann_json_schema_validator a public dependency of libocpp in CMakeLists.txt (#106)
158e9e72 Fix v16 example, restructure headers (#98)
1b261816 Fix missing optional header
23413585 Switched from boost::optional to std::optional
f67ba30e - added handling of Reset.req and Authorize.req / Authorize.conf - updated componenet schemas and device model management - added device_model_management_base as base class for configuring and retrieving components and variables - Added support for sending MeterValue.req and MeterValue within TransactionEvent.req - Considering all configuration keys of SampledDataCtrlr and AlignedDataCtrlr - moved database_handler to v16 - added database handler for v201 - added support for AuthCache - added handling for ChangeAvailability.req - added first support for DataTransfer.req (rejecting always) and NotifyEvent.req
be1d2c50 SECC leaf certificate has to be requested using data_transfer_pnc_sign_certificate ; certificate will only be part of pnc Authorize.req if certificate is set and CentralContractValidationAllowed is set to true
f4eb5627 - security profile is now written to user config only when it was actually changed by csms. before it was set already on the first connection - includes a bugfix that caused a segfault when changing the security profile
b172af42 Removed libfsm dependency
940eaf83 adjusted install path of config and misc in cmake script. Changes needed by EVerest/everest-framework#79
2071320f Add commands to build the doxygen documentation to the README (#93)
a49ef815 extended configuration so that also Internal configuration keys will be reported and can be set if they are rw
b2ab9c6f validating supported purpose types on startup
df677237 added on_enabled and on_disabled handlers for chargepoint
bc57c698 improved generation of certificate signing request
872cf483 transactionId will now be added to MeterValue.req of message queue when transactionId was unknown at the time of queuing
56c1b935 introduced flag in database to track if CSMS has acknowledged StopTransaction.req with StopTransaction.conf. Incomplete transactions will be immediately stopped at startup. This also works now for transactions that have been stopped while being offline before a PowerLoss
fb34de44 dont only update cache if token was accepted, also if it was rejected
1d93171d Configuration keys StopTxnAlignedData and StopTxnSampledData are now respected
052e0fb9 extended logging in database handler
d7b9a97e updated README
27cdcaac - get_all_composite_charging_schedules for loop missed last connector - checking if signal_set_charging_profiles_callback has been set before executing and log warning if not set
65efa32b Use most recent libtimer version
aea81568 now using reinterpret_cast
bb1399c0 - added support for Hubject PnC requirements - this includes the introduction of additional ocpp configuration keys
b7f550b7 checking timers against nullptr before calling stop
0bbb5961 General/PnC: - Added support for 1.6 ISO15118 PnC whitepaper - Added PnC to all configs
6e78fe80 removed return; when ws connection could not be initialized
f79d5387 sending initial StatusNotification.req
525c5ae3 To avoid sending of unitialized powermeter: - made powermeter in Connector.hpp optional - made return value of get_latest_meter_value optional
0a838218 added log message when ocpp config validation against schemas fails
18918e08 - moved execution of run function of state machine to charge_point start() - catching exception if state machine event could not be submitted successfully
54e2e975 fix error and update example
e5fc68a9 Checking if logging instance for given session id is present in map when calling stop_session_logging. session_id could not be present in case session logging is enabled but no session_id was given at on_session_started
58d7340a - Added Evse and Connector classes - moved ChargePointConnectionState back to 1.6 - improved ws connection and bootnotification handling - implemented functional block Provisioning profile as draft (B01 - B08) - renamed common ChargePoint to ChargingStationBase - renamed ChargePointConfiguration to DeviceModelManager - added method documentation - implemented draft for state machine within connector class instead of using libfsm
767494fe bumped versioN
a5294d03 implemented session logging
22dd6f54 Implement WebsocketPingInterval for OCPP 1.6 (#73)
41868287 add dc reporting
40b148b6 - Restructured libocpp into seperate parts for OCPP1.6 and OCPP2.0.1 and common functionality - Updated code generator to generate schemas for 1.6 and 2.0.1 - Generalized Websocket, PkiHandler, MessageQueue, types and ChargePoint (all used as common base for 1.6 ChargePoint and 2.0.1 ChargePoint) - Very basic implementation of OCPP2.0.1 ChargePoint (BootNotification) ; Generated Datatypes and Enums are already included - Templated CiString type with length as template parameter - Templated MessageQueue, EnhancedMessage and ControlMessage with OCPP version - MessageQueue now handles message timeouts and respects retry attempts and retry intervals
6c36130a - ignore some database operation errors. These errors can occur when the charge point was previously stopped - stopping meter value timer on on_transaction_stopped and improved ocpp restart behavior by not stopping io service thread
d7e58693 - Import Powermeter (and related) types from everest-core
7f4668fc Reworked OCPP smart charging - added class SmartChargingHandler - supporting all ChargingProfilePurpose and ChargingProfileKind - storing charging profiles persistently - added table CHARGING_PROFILES to database - added database tests for charging profiles
24267e25 fixed argument in register_provide_token_callback of build example
20637946 adding default transaction id of -1 when instantiating transactions. transaction_id is therefore not optional anymore in TransactionEntry strcut
8572810d added connection_state_changed_callback which will be called on websocket connect or disconnect
ed433da7 - RemoteStartTransaction.req is now considering connector id of single connectors - set_connection_timeout_callback can now be called from outside the chargepoint
acbf6f71 Bump libocpp version because of an API change
441eae4c lib now executes reset callbacks on Reset.req
746ac8fe Revert "changed type of timestamp in Powermeter to string"
90d960f8 changed type of timestamp in Powermeter to string
275ac345 Using tagged dependencies (#59)
09735172 fixed handling of StartTransaction.conf with status other than Accepted
d96d8b7d Improved detail of readme and fixed/updated build examples
05d32116 - fixed bug that deleted ca cert without checking for parameters  issuerkeyhash, issuernamehash and serial - stopping ocpp service properly before killing process on reset - improved handling of Reset.req - Transactions will be stopped properly before the actual reboot - Now properly erasing references of stopped transactions. This fixes the problem of MeterValues that have been sent also after stopped transactions - MinimumStatusDuration is now a considered configuration key - changed connection timeout to 30s - RemoteStartTransaction.req for no connector given now supported - Configuration key AuthorizeRemoteTxRequests is now rw - improved authorization handling and consideration of keys LocalPreAuthorize, LocalAuthorizeOffline, AuthorizationCacheEnabled, LocalAuthListEnabled - Now sending StatusNotification.req after successful reconnect for all connectors - RemoteStartTransaction.req with connector id = 0 now gets rejected - now dropping non-transaction-related msg queue is paused - maintaining time based order of messages in message queue
913af2ea Extended OCPP message logging with HTML and colorful console output Supported LogMessagesFormats: "log", "html", "console", "console_detailed"
7eee2d29 not throwing exception on db req with optional return
7cf55083 removed enabling and disabling of evse on startup of ocpp
6dfcccfa There was a race condition when we had a complete offline transaction and wanted to replace the transaction id in the message queue. Replacement of transaction id takes place in StartTransaction.conf handler but might be already too late when StopTransaction.req was sent before the replacement. Now we have a specific handling for StartTransaction.conf messages which means that we wait for the StartTransaction.conf handler to replace the transaction id in the mq before we send the next message
849317fb Replaced json power meter by power meter type. Now checking if measurands are present before accessing them
5d4b893d removed unused scheduled callbacks
3da0cbc3 - added callback to signal that new charging profiles have been set - add public function to get all composite schedules of chargepoint
f8de72c7 configuration of smart charging profile purposes is now possible
6ab0e507 adding signed meter values to transaction on start and stop if present
fabcb162 ChargePointConfiguration now takes ocpp_main_path and user_config_path as arguments
a26f9bf5 removed creating of scheduled callbacks table
0ea18c0e Fix some abiguous overload compile errors (#44)
f8604874 - added init.sql script for initialization of database - moved database handling from charge_point_configuration to charge_point - implemented database_handler class for all operations on the database - all database related operations now use the database_handler - added new database functionalities to libocpp build examples - added tests - transactions will now be inserted and updated in the database - incomplete transactions will now be stopped on startup by sending a StopTransaction.req for transactions without a meter_stop or time_end
4e2a8894 init_websocket should not be called in ctor
56ef3e41 CMake refactoring (#40) - cleaned up cmake files - added cmake config style support for install target - EDM compatibility
e66f50d8 It is now possible to stop and restart the ocpp communication. Improved behavior on stop() and reinitialization and implemented method to restart to ocpp service
4f7ecf10 CMake refactoring (#40)
9fe3b61c Add Debian GNU/Linux 11 build dependencies (#37)
b1a612b0 changed DEBUG to DEBG in logging.ini and changed to new liblog logging syntax
4d75f15e Update README.md
cc21b201 setting bootnotification timer when in state pending
7ec4d4cc checking if LocalAuthListManagement is present in config before accessing LocalAuthListEnabled
03216ecf now differentiating between central system root certificate and manufacturers root certificate on InstallCertificate.req
88c600b6 - Handling bytestring representation and normal string - Reconnect now disconnects directly before setting the reconnect timer
44f192e9 Update readme
03aded16 Added CSMS compatibility to README
10a04120 checking if connector is in state faulted before reserving
dee3357d Merge pull request #29 from EVerest/pg-fix-transaction-get-transaction
6792b52a avoiding to send StartTransaction.req twice and added lock_guard when iterating over transactions
b0ec805c Merge pull request #31 from EVerest/pg-aw-extend-state-machine
6bea3429 squashed 7 commits into 1
6fab86fe Merge pull request #27 from EVerest/pg-add-checks-for-change-configuration-values
7d9e6c8b changed splitting string to using boost::split
c3b0997c removed comment
eee8a288 chec…
james-ctc pushed a commit that referenced this pull request Nov 3, 2025
There was a missing nullptr check on this->reservation when a
transaction was started and reserrvation was disabled.

Signed-off-by: Martin Litre <mnlitre@gmail.com>
@felix-ulonska
Copy link

⚠️ PR Affected by Security Incident

This PR was affected by a security incident where a compromised account force-pushed to this branch and closed the PR.

✅ Branch History Restored

We've run an automation that restored the complete history of this branch to the time before the attack. All your commits are preserved. Nothing has been updated in the respective branch in case someone force-pushed after the attack but before our automation.

🔄 Action Required

GitHub won't allow reopening this PR after the close and force-push. Please:

  • Open a new PR from your branch to the target branch. You can use the following link to open a new PR: Open PR
  • Link back to this PR in the description to include previous discussions

We apologize for the inconvenience.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants