From 658cb526463f64f7d004cc290b5920e779081b8b Mon Sep 17 00:00:00 2001 From: Nils Prommersberger Date: Fri, 4 Apr 2025 13:28:38 +0200 Subject: [PATCH] Set IsActive to false when received limit duration is 0 According to the EEBus UC Implementation Guideline for LPC v1.0.0 section 2.2 1): If Actor Controllable System receives an Active Power Consumption Limit with a duration set to "0", the limit SHALL immediately be deactivated by the Controllable System (see [LPC-007]). If the received write command contains a duration set to "0" AND also a request to set the Active Power Consumption Limit to "activated", the Actor Controllable System SHALL ignore the request This has the added effect for us, that previously in the CS-LPC/CS-LPP API it was next to impossible to differentiate between a limit without a duration (active forever), and a limit with a 0 duration. --- usecases/cs/lpc/public.go | 3 +++ usecases/cs/lpp/public.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/usecases/cs/lpc/public.go b/usecases/cs/lpc/public.go index 038d1434..925837a1 100644 --- a/usecases/cs/lpc/public.go +++ b/usecases/cs/lpc/public.go @@ -46,6 +46,9 @@ func (e *LPC) ConsumptionLimit() (limit ucapi.LoadLimit, resultErr error) { if value.TimePeriod != nil && value.TimePeriod.EndTime != nil { if duration, err := value.TimePeriod.GetDuration(); err == nil { limit.Duration = duration + if limit.Duration == 0 { + limit.IsActive = false + } } } diff --git a/usecases/cs/lpp/public.go b/usecases/cs/lpp/public.go index ca2bf1c9..1ceec74b 100644 --- a/usecases/cs/lpp/public.go +++ b/usecases/cs/lpp/public.go @@ -46,6 +46,9 @@ func (e *LPP) ProductionLimit() (limit ucapi.LoadLimit, resultErr error) { if value.TimePeriod != nil && value.TimePeriod.EndTime != nil { if duration, err := value.TimePeriod.GetDuration(); err == nil { limit.Duration = duration + if limit.Duration == 0 { + limit.IsActive = false + } } }