Skip to content

Commit

Permalink
Notify consumer about charging profile update when a transaction stops (
Browse files Browse the repository at this point in the history
#788)

* Executing signal_set_charging_profiles_callback when a transaction is stopped to notify the consumer. The stopped transaction might have removed previously reported TxProfiles (as part of the composite schedule) which could influence the load balancing / charging power of the EVSEs.
* Added signal of profiles when clearing profiles.
* Only signal if profiles changed

---------

Signed-off-by: pietfried <[email protected]>
  • Loading branch information
Pietfried authored Sep 19, 2024
1 parent 8124039 commit 4dcd8a2
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions lib/ocpp/v16/charge_point_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2340,6 +2340,11 @@ void ChargePointImpl::handleClearChargingProfileRequest(ocpp::Call<ClearCharging

ocpp::CallResult<ClearChargingProfileResponse> call_result(response, call.uniqueId);
this->send<ClearChargingProfileResponse>(call_result);

if (response.status == ClearChargingProfileStatus::Accepted and
this->signal_set_charging_profiles_callback != nullptr) {
this->signal_set_charging_profiles_callback();
}
}

void ChargePointImpl::handleTriggerMessageRequest(ocpp::Call<TriggerMessageRequest> call) {
Expand Down Expand Up @@ -4096,9 +4101,12 @@ void ChargePointImpl::on_transaction_stopped(const int32_t connector, const std:
this->status->submit_event(connector, FSMEvent::TransactionStoppedAndUserActionRequired, ocpp::DateTime());
this->stop_transaction(connector, reason, id_tag_end);
this->transaction_handler->remove_active_transaction(connector);
this->smart_charging_handler->clear_all_profiles_with_filter(std::nullopt, connector, std::nullopt,
ChargingProfilePurposeType::TxProfile, false);

const auto profile_cleared = this->smart_charging_handler->clear_all_profiles_with_filter(
std::nullopt, connector, std::nullopt, ChargingProfilePurposeType::TxProfile, false);
if (profile_cleared and this->signal_set_charging_profiles_callback != nullptr) {
this->signal_set_charging_profiles_callback();
}
reset_pricing_triggers(connector);
}

Expand Down

0 comments on commit 4dcd8a2

Please sign in to comment.