Skip to content
This repository was archived by the owner on Jun 29, 2024. It is now read-only.

Commit 5dd2ea6

Browse files
committed
Improve getting proper loadlimit values
1 parent 1d7d79e commit 5dd2ea6

File tree

4 files changed

+33
-10
lines changed

4 files changed

+33
-10
lines changed

ucopev/public.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@ func (e *UCOPEV) CurrentLimits(entity spineapi.EntityRemoteInterface) ([]float64
2929
// - and others
3030
func (e *UCOPEV) LoadControlLimits(entity spineapi.EntityRemoteInterface) (
3131
limits []api.LoadLimitsPhase, resultErr error) {
32-
return util.LoadControlLimits(e.service, entity, e.validEntityTypes, model.LoadControlCategoryTypeObligation)
32+
return util.LoadControlLimits(
33+
e.service,
34+
entity,
35+
e.validEntityTypes,
36+
model.LoadControlLimitTypeTypeMaxValueLimit,
37+
model.LoadControlCategoryTypeObligation,
38+
model.ScopeTypeTypeOverloadProtection)
3339
}
3440

3541
// send new LoadControlLimits to the remote EV

ucoscev/public.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,13 @@ func (e *UCOSCEV) CurrentLimits(entity spineapi.EntityRemoteInterface) ([]float6
2828
// - ErrDataNotAvailable if no such limit is (yet) available
2929
// - and others
3030
func (e *UCOSCEV) LoadControlLimits(entity spineapi.EntityRemoteInterface) (limits []api.LoadLimitsPhase, resultErr error) {
31-
return util.LoadControlLimits(e.service, entity, e.validEntityTypes, model.LoadControlCategoryTypeRecommendation)
31+
return util.LoadControlLimits(
32+
e.service,
33+
entity,
34+
e.validEntityTypes,
35+
model.LoadControlLimitTypeTypeMaxValueLimit,
36+
model.LoadControlCategoryTypeRecommendation,
37+
model.ScopeTypeTypeSelfConsumption)
3238
}
3339

3440
// send new LoadControlLimits to the remote EV

util/loadcontrol.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ func LoadControlLimits(
1818
service eebusapi.ServiceInterface,
1919
entity spineapi.EntityRemoteInterface,
2020
entityTypes []model.EntityTypeType,
21-
category model.LoadControlCategoryType) (limits []api.LoadLimitsPhase, resultErr error) {
21+
limitType model.LoadControlLimitTypeType,
22+
limitCategory model.LoadControlCategoryType,
23+
scopeType model.ScopeTypeType) (limits []api.LoadLimitsPhase, resultErr error) {
2224
limits = nil
2325
resultErr = api.ErrNoCompatibleEntity
2426
if entity == nil || !IsCompatibleEntity(entity, entityTypes) {
@@ -34,7 +36,8 @@ func LoadControlLimits(
3436
resultErr = eebusapi.ErrDataNotAvailable
3537
// find out the appropriate limitId for each phase value
3638
// limitDescription contains the measurementId for each limitId
37-
limitDescriptions, err := evLoadControl.GetLimitDescriptionsForCategory(category)
39+
limitDescriptions, err := evLoadControl.GetLimitDescriptionsForTypeCategoryDirectionScope(
40+
limitType, limitCategory, "", scopeType)
3841
if err != nil {
3942
return
4043
}

util/loadcontrol_test.go

+14-6
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@ import (
1212
func (s *UtilSuite) Test_LoadControlLimits() {
1313
var data []api.LoadLimitsPhase
1414
var err error
15+
limitType := model.LoadControlLimitTypeTypeMaxValueLimit
16+
scope := model.ScopeTypeTypeSelfConsumption
1517
category := model.LoadControlCategoryTypeObligation
1618
entityTypes := []model.EntityTypeType{model.EntityTypeTypeEV}
1719

18-
data, err = LoadControlLimits(s.service, s.mockRemoteEntity, entityTypes, category)
20+
data, err = LoadControlLimits(s.service, s.mockRemoteEntity, entityTypes, limitType, category, scope)
1921
assert.NotNil(s.T(), err)
2022
assert.Nil(s.T(), data)
2123

22-
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, category)
24+
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, limitType, category, scope)
2325
assert.NotNil(s.T(), err)
2426
assert.Nil(s.T(), data)
2527

@@ -29,16 +31,22 @@ func (s *UtilSuite) Test_LoadControlLimits() {
2931
LimitId: eebusutil.Ptr(model.LoadControlLimitIdType(0)),
3032
LimitCategory: eebusutil.Ptr(category),
3133
MeasurementId: eebusutil.Ptr(model.MeasurementIdType(0)),
34+
LimitType: eebusutil.Ptr(limitType),
35+
ScopeType: eebusutil.Ptr(scope),
3236
},
3337
{
3438
LimitId: eebusutil.Ptr(model.LoadControlLimitIdType(1)),
3539
LimitCategory: eebusutil.Ptr(category),
3640
MeasurementId: eebusutil.Ptr(model.MeasurementIdType(1)),
41+
LimitType: eebusutil.Ptr(limitType),
42+
ScopeType: eebusutil.Ptr(scope),
3743
},
3844
{
3945
LimitId: eebusutil.Ptr(model.LoadControlLimitIdType(2)),
4046
LimitCategory: eebusutil.Ptr(category),
4147
MeasurementId: eebusutil.Ptr(model.MeasurementIdType(2)),
48+
LimitType: eebusutil.Ptr(limitType),
49+
ScopeType: eebusutil.Ptr(scope),
4250
},
4351
},
4452
}
@@ -47,7 +55,7 @@ func (s *UtilSuite) Test_LoadControlLimits() {
4755
fErr := rFeature.UpdateData(model.FunctionTypeLoadControlLimitDescriptionListData, descData, nil, nil)
4856
assert.Nil(s.T(), fErr)
4957

50-
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, category)
58+
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, limitType, category, scope)
5159
assert.Nil(s.T(), err)
5260
assert.Equal(s.T(), 3, len(data))
5361
assert.Equal(s.T(), 0.0, data[0].Value)
@@ -79,7 +87,7 @@ func (s *UtilSuite) Test_LoadControlLimits() {
7987
fErr = rElFeature.UpdateData(model.FunctionTypeElectricalConnectionParameterDescriptionListData, paramData, nil, nil)
8088
assert.Nil(s.T(), fErr)
8189

82-
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, category)
90+
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, limitType, category, scope)
8391
assert.NotNil(s.T(), err)
8492
assert.Nil(s.T(), data)
8593

@@ -102,7 +110,7 @@ func (s *UtilSuite) Test_LoadControlLimits() {
102110
fErr = rFeature.UpdateData(model.FunctionTypeLoadControlLimitListData, limitData, nil, nil)
103111
assert.Nil(s.T(), fErr)
104112

105-
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, category)
113+
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, limitType, category, scope)
106114
assert.NotNil(s.T(), err)
107115
assert.Nil(s.T(), data)
108116

@@ -131,7 +139,7 @@ func (s *UtilSuite) Test_LoadControlLimits() {
131139
fErr = rElFeature.UpdateData(model.FunctionTypeElectricalConnectionPermittedValueSetListData, permData, nil, nil)
132140
assert.Nil(s.T(), fErr)
133141

134-
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, category)
142+
data, err = LoadControlLimits(s.service, s.monitoredEntity, entityTypes, limitType, category, scope)
135143
assert.Nil(s.T(), err)
136144
assert.Equal(s.T(), 3, len(data))
137145
assert.Equal(s.T(), 16.0, data[0].Value)

0 commit comments

Comments
 (0)