-
Notifications
You must be signed in to change notification settings - Fork 66
Open
Description
I'm trying to understand the correct implementation of the AlignedDataSendDuringIdle configuration variable in relation to the OCPP 2.0.1 specification requirements J01.FR.19 and J01.FR.20.
Current Implementation
The codebase contains a comment referencing J01.FR.20 in meter_values.cpp:34:
// J01.FR.20 if AlignedDataSendDuringIdle is true and any transaction is active,
// don't send clock aligned meter values
if (this->context.device_model
.get_optional_value<bool>(ControllerComponentVariables::AlignedDataSendDuringIdle)
.value_or(false)) {
for (auto const& evse : this->context.evse_manager) {
if (evse.has_active_transaction()) {
return; // Don't send ANY clock-aligned meter values
}
}
}
This implementation checks the global AlignedDataSendDuringIdle variable and stops sending clock-aligned meter values for all EVSEs if any transaction is active on any EVSE.
Specification Details
According to the OCPP 2.0.1 specification, AlignedDataSendDuringIdle has:
Questions
- Which requirement applies?
- Is J01.FR.19 or J01.FR.20 the correct requirement for this behavior?
- What is the difference between these two requirements?
- Current behavior vs. specification:
- The current implementation uses only the global variable (no EVSE-specific lookup)
- It stops sending meter values for all EVSEs when any transaction is active
- Is this the intended "global fallback" behavior when no EVSE-specific value is configured?
- EVSE-specific implementation:
- Should the implementation check for EVSE-specific AlignedDataSendDuringIdle values?
Could you help clarify:
- The correct interpretation of J01.FR.19 and J01.FR.20
Metadata
Metadata
Assignees
Labels
No labels