@@ -309,7 +309,7 @@ func (s *InternalSuite) Test_LoadControlLimits_Bender_1Phase() {
309
309
assert .Nil (s .T (), data )
310
310
assert .Equal (s .T (), 0 , len (data ))
311
311
312
- // according to OPeV Spec 1.0.1b, page 30: "At least one set of permitted values SHALL be stated."
312
+ // according to OpEV Spec 1.0.1b, page 30: "At least one set of permitted values SHALL be stated."
313
313
// which is not the case here for all elements
314
314
permData := & model.ElectricalConnectionPermittedValueSetListDataType {
315
315
ElectricalConnectionPermittedValueSetData : []model.ElectricalConnectionPermittedValueSetDataType {
@@ -364,6 +364,223 @@ func (s *InternalSuite) Test_LoadControlLimits_Bender_1Phase() {
364
364
assert .Equal (s .T (), 16.0 , data [0 ].Value )
365
365
}
366
366
367
+ func (s * InternalSuite ) Test_LoadControlLimits_Elli_1Phase () {
368
+ var data []ucapi.LoadLimitsPhase
369
+ var err error
370
+ limitType := model .LoadControlLimitTypeTypeMaxValueLimit
371
+ scope := model .ScopeTypeTypeOverloadProtection
372
+ scopeSelf := model .ScopeTypeTypeSelfConsumption
373
+ category := model .LoadControlCategoryTypeObligation
374
+ categoryRec := model .LoadControlCategoryTypeRecommendation
375
+
376
+ filter := model.LoadControlLimitDescriptionDataType {
377
+ LimitType : util .Ptr (limitType ),
378
+ LimitCategory : util .Ptr (category ),
379
+ ScopeType : util .Ptr (scope ),
380
+ }
381
+ data , err = LoadControlLimits (nil , nil , filter )
382
+ assert .NotNil (s .T (), err )
383
+ assert .Nil (s .T (), data )
384
+
385
+ data , err = LoadControlLimits (s .localEntity , s .mockRemoteEntity , filter )
386
+ assert .NotNil (s .T (), err )
387
+ assert .Nil (s .T (), data )
388
+
389
+ data , err = LoadControlLimits (s .localEntity , s .monitoredEntity , filter )
390
+ assert .NotNil (s .T (), err )
391
+ assert .Nil (s .T (), data )
392
+
393
+ descData := & model.LoadControlLimitDescriptionListDataType {
394
+ LoadControlLimitDescriptionData : []model.LoadControlLimitDescriptionDataType {
395
+ {
396
+ LimitId : util .Ptr (model .LoadControlLimitIdType (0 )),
397
+ LimitType : util .Ptr (limitType ),
398
+ LimitCategory : util .Ptr (category ),
399
+ MeasurementId : util .Ptr (model .MeasurementIdType (0 )),
400
+ Unit : util .Ptr (model .UnitOfMeasurementTypeA ),
401
+ ScopeType : util .Ptr (scope ),
402
+ },
403
+ {
404
+ LimitId : util .Ptr (model .LoadControlLimitIdType (1 )),
405
+ LimitType : util .Ptr (limitType ),
406
+ LimitCategory : util .Ptr (category ),
407
+ MeasurementId : util .Ptr (model .MeasurementIdType (1 )),
408
+ Unit : util .Ptr (model .UnitOfMeasurementTypeA ),
409
+ ScopeType : util .Ptr (scope ),
410
+ },
411
+ {
412
+ LimitId : util .Ptr (model .LoadControlLimitIdType (2 )),
413
+ LimitType : util .Ptr (limitType ),
414
+ LimitCategory : util .Ptr (category ),
415
+ MeasurementId : util .Ptr (model .MeasurementIdType (2 )),
416
+ Unit : util .Ptr (model .UnitOfMeasurementTypeA ),
417
+ ScopeType : util .Ptr (scope ),
418
+ },
419
+ {
420
+ LimitId : util .Ptr (model .LoadControlLimitIdType (3 )),
421
+ LimitType : util .Ptr (limitType ),
422
+ LimitCategory : util .Ptr (categoryRec ),
423
+ MeasurementId : util .Ptr (model .MeasurementIdType (0 )),
424
+ Unit : util .Ptr (model .UnitOfMeasurementTypeA ),
425
+ ScopeType : util .Ptr (scopeSelf ),
426
+ },
427
+ {
428
+ LimitId : util .Ptr (model .LoadControlLimitIdType (4 )),
429
+ LimitType : util .Ptr (limitType ),
430
+ LimitCategory : util .Ptr (categoryRec ),
431
+ MeasurementId : util .Ptr (model .MeasurementIdType (1 )),
432
+ Unit : util .Ptr (model .UnitOfMeasurementTypeA ),
433
+ ScopeType : util .Ptr (scopeSelf ),
434
+ },
435
+ {
436
+ LimitId : util .Ptr (model .LoadControlLimitIdType (5 )),
437
+ LimitType : util .Ptr (limitType ),
438
+ LimitCategory : util .Ptr (categoryRec ),
439
+ MeasurementId : util .Ptr (model .MeasurementIdType (2 )),
440
+ Unit : util .Ptr (model .UnitOfMeasurementTypeA ),
441
+ ScopeType : util .Ptr (scopeSelf ),
442
+ },
443
+ },
444
+ }
445
+
446
+ rFeature := s .remoteDevice .FeatureByEntityTypeAndRole (s .monitoredEntity , model .FeatureTypeTypeLoadControl , model .RoleTypeServer )
447
+ fErr := rFeature .UpdateData (model .FunctionTypeLoadControlLimitDescriptionListData , descData , nil , nil )
448
+ assert .Nil (s .T (), fErr )
449
+
450
+ data , err = LoadControlLimits (s .localEntity , s .monitoredEntity , filter )
451
+ assert .Nil (s .T (), err )
452
+ assert .Equal (s .T (), 3 , len (data ))
453
+ assert .Equal (s .T (), 0.0 , data [0 ].Value )
454
+
455
+ paramData := & model.ElectricalConnectionParameterDescriptionListDataType {
456
+ ElectricalConnectionParameterDescriptionData : []model.ElectricalConnectionParameterDescriptionDataType {
457
+ {
458
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
459
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (0 )),
460
+ AcMeasuredPhases : util .Ptr (model .ElectricalConnectionPhaseNameTypeAbc ),
461
+ ScopeType : util .Ptr (model .ScopeTypeTypeACPowerTotal ),
462
+ },
463
+ {
464
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
465
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (1 )),
466
+ MeasurementId : util .Ptr (model .MeasurementIdType (0 )),
467
+ AcMeasuredPhases : util .Ptr (model .ElectricalConnectionPhaseNameTypeA ),
468
+ AcMeasurementVariant : util .Ptr (model .ElectricalConnectionMeasurandVariantTypeRms ),
469
+ },
470
+ {
471
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
472
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (2 )),
473
+ MeasurementId : util .Ptr (model .MeasurementIdType (1 )),
474
+ AcMeasuredPhases : util .Ptr (model .ElectricalConnectionPhaseNameTypeB ),
475
+ AcMeasurementVariant : util .Ptr (model .ElectricalConnectionMeasurandVariantTypeRms ),
476
+ },
477
+ {
478
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
479
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (3 )),
480
+ MeasurementId : util .Ptr (model .MeasurementIdType (2 )),
481
+ AcMeasuredPhases : util .Ptr (model .ElectricalConnectionPhaseNameTypeC ),
482
+ AcMeasurementVariant : util .Ptr (model .ElectricalConnectionMeasurandVariantTypeRms ),
483
+ },
484
+ {
485
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
486
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (4 )),
487
+ MeasurementId : util .Ptr (model .MeasurementIdType (3 )),
488
+ AcMeasuredPhases : util .Ptr (model .ElectricalConnectionPhaseNameTypeA ),
489
+ },
490
+ {
491
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
492
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (5 )),
493
+ MeasurementId : util .Ptr (model .MeasurementIdType (4 )),
494
+ AcMeasuredPhases : util .Ptr (model .ElectricalConnectionPhaseNameTypeB ),
495
+ },
496
+ {
497
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
498
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (6 )),
499
+ MeasurementId : util .Ptr (model .MeasurementIdType (5 )),
500
+ AcMeasuredPhases : util .Ptr (model .ElectricalConnectionPhaseNameTypeC ),
501
+ },
502
+ {
503
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
504
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (7 )),
505
+ MeasurementId : util .Ptr (model .MeasurementIdType (6 )),
506
+ VoltageType : util .Ptr (model .ElectricalConnectionVoltageTypeTypeAc ),
507
+ AcMeasuredPhases : util .Ptr (model .ElectricalConnectionPhaseNameTypeAbc ),
508
+ AcMeasurementType : util .Ptr (model .ElectricalConnectionAcMeasurementTypeTypeReal ),
509
+ },
510
+ },
511
+ }
512
+
513
+ rElFeature := s .remoteDevice .FeatureByEntityTypeAndRole (s .monitoredEntity , model .FeatureTypeTypeElectricalConnection , model .RoleTypeServer )
514
+ fErr = rElFeature .UpdateData (model .FunctionTypeElectricalConnectionParameterDescriptionListData , paramData , nil , nil )
515
+ assert .Nil (s .T (), fErr )
516
+
517
+ data , err = LoadControlLimits (s .localEntity , s .monitoredEntity , filter )
518
+ assert .NotNil (s .T (), err )
519
+ assert .Nil (s .T (), data )
520
+
521
+ limitData := & model.LoadControlLimitListDataType {
522
+ LoadControlLimitData : []model.LoadControlLimitDataType {
523
+ {
524
+ LimitId : util .Ptr (model .LoadControlLimitIdType (0 )),
525
+ },
526
+ {
527
+ LimitId : util .Ptr (model .LoadControlLimitIdType (1 )),
528
+ },
529
+ {
530
+ LimitId : util .Ptr (model .LoadControlLimitIdType (2 )),
531
+ },
532
+ {
533
+ LimitId : util .Ptr (model .LoadControlLimitIdType (3 )),
534
+ },
535
+ {
536
+ LimitId : util .Ptr (model .LoadControlLimitIdType (4 )),
537
+ },
538
+ {
539
+ LimitId : util .Ptr (model .LoadControlLimitIdType (5 )),
540
+ },
541
+ },
542
+ }
543
+
544
+ fErr = rFeature .UpdateData (model .FunctionTypeLoadControlLimitListData , limitData , nil , nil )
545
+ assert .Nil (s .T (), fErr )
546
+
547
+ data , err = LoadControlLimits (s .localEntity , s .monitoredEntity , filter )
548
+ assert .Nil (s .T (), err )
549
+ assert .Nil (s .T (), data )
550
+ assert .Equal (s .T (), 0 , len (data ))
551
+
552
+ // according to OpEV Spec 1.0.1b, page 30: "At least one set of permitted values SHALL be stated."
553
+ // which is not the case here for all elements
554
+ permData := & model.ElectricalConnectionPermittedValueSetListDataType {
555
+ ElectricalConnectionPermittedValueSetData : []model.ElectricalConnectionPermittedValueSetDataType {
556
+ {
557
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
558
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (0 )),
559
+ PermittedValueSet : []model.ScaledNumberSetType {},
560
+ },
561
+ {
562
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
563
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (1 )),
564
+ },
565
+ {
566
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
567
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (2 )),
568
+ },
569
+ {
570
+ ElectricalConnectionId : util .Ptr (model .ElectricalConnectionIdType (0 )),
571
+ ParameterId : util .Ptr (model .ElectricalConnectionParameterIdType (3 )),
572
+ },
573
+ },
574
+ }
575
+
576
+ fErr = rElFeature .UpdateData (model .FunctionTypeElectricalConnectionPermittedValueSetListData , permData , nil , nil )
577
+ assert .Nil (s .T (), fErr )
578
+
579
+ data , err = LoadControlLimits (s .localEntity , s .monitoredEntity , filter )
580
+ assert .Nil (s .T (), err )
581
+ assert .Equal (s .T (), 0 , len (data ))
582
+ }
583
+
367
584
func (s * InternalSuite ) Test_WriteLoadControlLimit () {
368
585
loadLimit := ucapi.LoadLimit {
369
586
Duration : time .Minute * 2 ,
0 commit comments