cactus-test-definitions 1.6.0__py3-none-any.whl → 1.8.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cactus-test-definitions might be problematic. Click here for more details.
- cactus_test_definitions/__init__.py +1 -1
- cactus_test_definitions/__pycache__/__init__.cpython-312.pyc +0 -0
- cactus_test_definitions/__pycache__/csipaus.cpython-312.pyc +0 -0
- cactus_test_definitions/client/__init__.py +4 -0
- cactus_test_definitions/client/__pycache__/__init__.cpython-312.pyc +0 -0
- cactus_test_definitions/client/__pycache__/actions.cpython-312.pyc +0 -0
- cactus_test_definitions/client/__pycache__/checks.cpython-312.pyc +0 -0
- cactus_test_definitions/client/actions.py +1 -0
- cactus_test_definitions/client/checks.py +1 -0
- cactus_test_definitions/client/procedures/ALL-09.yaml +18 -18
- cactus_test_definitions/client/procedures/ALL-12.yaml +34 -16
- cactus_test_definitions/client/procedures/ALL-18.yaml +6 -5
- cactus_test_definitions/client/procedures/ALL-28.yaml +0 -1
- cactus_test_definitions/client/procedures/GEN-10.yaml +58 -4
- cactus_test_definitions/client/procedures/GEN-11.yaml +32 -8
- cactus_test_definitions/client/procedures/GEN-12.yaml +33 -9
- cactus_test_definitions/client/procedures/LOA-03.yaml +1 -1
- cactus_test_definitions/client/procedures/LOA-04.yaml +1 -1
- cactus_test_definitions/client/procedures/LOA-10.yaml +61 -9
- cactus_test_definitions/client/procedures/LOA-11.yaml +32 -8
- cactus_test_definitions/client/procedures/LOA-12.yaml +32 -8
- cactus_test_definitions/csipaus.py +2 -0
- cactus_test_definitions/server/README.md +8 -6
- cactus_test_definitions/server/__init__.py +4 -0
- cactus_test_definitions/server/__pycache__/__init__.cpython-312.pyc +0 -0
- cactus_test_definitions/server/__pycache__/actions.cpython-312.pyc +0 -0
- cactus_test_definitions/server/__pycache__/checks.cpython-312.pyc +0 -0
- cactus_test_definitions/server/__pycache__/test_procedures.cpython-312-pytest-8.3.5.pyc +0 -0
- cactus_test_definitions/server/actions.py +2 -1
- cactus_test_definitions/server/checks.py +35 -0
- cactus_test_definitions/server/procedures/S-ALL-01.yaml +3 -0
- cactus_test_definitions/server/procedures/S-ALL-06.yaml +111 -0
- cactus_test_definitions/server/procedures/S-ALL-07.yaml +100 -0
- cactus_test_definitions/server/procedures/S-ALL-08.yaml +77 -0
- cactus_test_definitions/server/procedures/S-ALL-09.yaml +43 -0
- cactus_test_definitions/server/procedures/S-ALL-10.yaml +68 -0
- cactus_test_definitions/server/procedures/S-ALL-11.yaml +36 -0
- cactus_test_definitions/server/procedures/S-ALL-12.yaml +36 -0
- cactus_test_definitions/server/procedures/S-ALL-13.yaml +36 -0
- cactus_test_definitions/server/procedures/S-ALL-14.yaml +36 -0
- cactus_test_definitions/server/procedures/S-ALL-15.yaml +79 -0
- cactus_test_definitions/server/procedures/S-ALL-16.yaml +79 -0
- cactus_test_definitions/server/procedures/S-ALL-17.yaml +39 -0
- cactus_test_definitions/server/procedures/S-ALL-18.yaml +35 -0
- cactus_test_definitions/server/procedures/S-ALL-19.yaml +34 -0
- cactus_test_definitions/server/procedures/S-ALL-20.yaml +34 -0
- cactus_test_definitions/server/procedures/S-ALL-21.yaml +34 -0
- cactus_test_definitions/server/procedures/S-ALL-22.yaml +34 -0
- cactus_test_definitions/server/procedures/S-ALL-23.yaml +34 -0
- cactus_test_definitions/server/procedures/S-ALL-24.yaml +37 -0
- cactus_test_definitions/server/procedures/S-ALL-25.yaml +151 -0
- cactus_test_definitions/server/procedures/S-ALL-41.yaml +343 -0
- cactus_test_definitions/server/procedures/S-ALL-42.yaml +81 -0
- cactus_test_definitions/server/procedures/S-ALL-43.yaml +146 -0
- cactus_test_definitions/server/procedures/S-ALL-44.yaml +51 -0
- cactus_test_definitions/server/procedures/S-ALL-45.yaml +34 -0
- cactus_test_definitions/server/procedures/S-ALL-48.yaml +29 -0
- cactus_test_definitions/server/procedures/S-ALL-49.yaml +56 -0
- cactus_test_definitions/server/procedures/S-ALL-51.yaml +35 -0
- cactus_test_definitions/server/procedures/S-ALL-52.yaml +35 -0
- cactus_test_definitions/server/procedures/S-ALL-53.yaml +42 -0
- cactus_test_definitions/server/procedures/S-ALL-55.yaml +45 -0
- cactus_test_definitions/server/procedures/S-ALL-56.yaml +36 -0
- cactus_test_definitions/server/procedures/S-ALL-57.yaml +62 -0
- cactus_test_definitions/server/procedures/S-OPT-03.yaml +9 -6
- cactus_test_definitions/server/procedures/S-OPT-05.yaml +33 -0
- cactus_test_definitions/server/test_procedures.py +34 -0
- {cactus_test_definitions-1.6.0.dist-info → cactus_test_definitions-1.8.1.dist-info}/METADATA +1 -1
- {cactus_test_definitions-1.6.0.dist-info → cactus_test_definitions-1.8.1.dist-info}/RECORD +74 -40
- tests/unit/client/test_validate.py +47 -0
- tests/unit/server/test_validate.py +17 -4
- {cactus_test_definitions-1.6.0.dist-info → cactus_test_definitions-1.8.1.dist-info}/WHEEL +0 -0
- {cactus_test_definitions-1.6.0.dist-info → cactus_test_definitions-1.8.1.dist-info}/licenses/LICENSE.txt +0 -0
- {cactus_test_definitions-1.6.0.dist-info → cactus_test_definitions-1.8.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Description: Active Control - Load Limit
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure an active control with opModLoadLimW = 0W and no rampTms attribute.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
- DERControlList
|
|
26
|
+
- DER
|
|
27
|
+
- DERControl
|
|
28
|
+
checks:
|
|
29
|
+
- type: end-device
|
|
30
|
+
parameters:
|
|
31
|
+
matches_client: true
|
|
32
|
+
- type: der-control
|
|
33
|
+
parameters:
|
|
34
|
+
minimum_count: 1
|
|
35
|
+
opModLoadLimW: 0
|
|
36
|
+
rampTms: null
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
Description: Active Control - Energise / De-energise
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure an active control with opModEnergize = true and without including the rampTms attribute.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
checks:
|
|
26
|
+
- type: end-device
|
|
27
|
+
parameters:
|
|
28
|
+
matches_client: true
|
|
29
|
+
- type: der-control
|
|
30
|
+
parameters:
|
|
31
|
+
minimum_count: 1
|
|
32
|
+
opModEnergize: True
|
|
33
|
+
rampTms: null
|
|
34
|
+
|
|
35
|
+
- id: (1) De-energize
|
|
36
|
+
repeat_until_pass: true
|
|
37
|
+
client: client
|
|
38
|
+
instructions:
|
|
39
|
+
- Configure an active control with opModEnergize = false and without including the rampTms attribute.
|
|
40
|
+
action:
|
|
41
|
+
type: discovery
|
|
42
|
+
parameters:
|
|
43
|
+
resources:
|
|
44
|
+
- EndDevice
|
|
45
|
+
- DERControlList
|
|
46
|
+
- DER
|
|
47
|
+
- DERControl
|
|
48
|
+
checks:
|
|
49
|
+
- type: end-device
|
|
50
|
+
parameters:
|
|
51
|
+
matches_client: true
|
|
52
|
+
- type: der-control
|
|
53
|
+
parameters:
|
|
54
|
+
minimum_count: 1
|
|
55
|
+
opModEnergize: False
|
|
56
|
+
rampTms: null
|
|
57
|
+
|
|
58
|
+
- id: (2) Energize
|
|
59
|
+
repeat_until_pass: true
|
|
60
|
+
client: client
|
|
61
|
+
instructions:
|
|
62
|
+
- Configure an active control with opModEnergize = true and without including the rampTms attribute.
|
|
63
|
+
action:
|
|
64
|
+
type: discovery
|
|
65
|
+
parameters:
|
|
66
|
+
resources:
|
|
67
|
+
- EndDevice
|
|
68
|
+
- DERControlList
|
|
69
|
+
- DER
|
|
70
|
+
- DERControl
|
|
71
|
+
checks:
|
|
72
|
+
- type: end-device
|
|
73
|
+
parameters:
|
|
74
|
+
matches_client: true
|
|
75
|
+
- type: der-control
|
|
76
|
+
parameters:
|
|
77
|
+
minimum_count: 1
|
|
78
|
+
opModEnergize: True
|
|
79
|
+
rampTms: null
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
Description: Active Control - Disconnect
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure an active control with opModConnect = true and without including the rampTms attribute.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
checks:
|
|
26
|
+
- type: end-device
|
|
27
|
+
parameters:
|
|
28
|
+
matches_client: true
|
|
29
|
+
- type: der-control
|
|
30
|
+
parameters:
|
|
31
|
+
minimum_count: 1
|
|
32
|
+
opModConnect: True
|
|
33
|
+
rampTms: null
|
|
34
|
+
|
|
35
|
+
- id: (1) De-energize
|
|
36
|
+
repeat_until_pass: true
|
|
37
|
+
client: client
|
|
38
|
+
instructions:
|
|
39
|
+
- Configure an active control with opModConnect = false and without including the rampTms attribute.
|
|
40
|
+
action:
|
|
41
|
+
type: discovery
|
|
42
|
+
parameters:
|
|
43
|
+
resources:
|
|
44
|
+
- EndDevice
|
|
45
|
+
- DERControlList
|
|
46
|
+
- DER
|
|
47
|
+
- DERControl
|
|
48
|
+
checks:
|
|
49
|
+
- type: end-device
|
|
50
|
+
parameters:
|
|
51
|
+
matches_client: true
|
|
52
|
+
- type: der-control
|
|
53
|
+
parameters:
|
|
54
|
+
minimum_count: 1
|
|
55
|
+
opModConnect: False
|
|
56
|
+
rampTms: null
|
|
57
|
+
|
|
58
|
+
- id: (2) Energize
|
|
59
|
+
repeat_until_pass: true
|
|
60
|
+
client: client
|
|
61
|
+
instructions:
|
|
62
|
+
- Configure an active control with opModConnect = true and without including the rampTms attribute.
|
|
63
|
+
action:
|
|
64
|
+
type: discovery
|
|
65
|
+
parameters:
|
|
66
|
+
resources:
|
|
67
|
+
- EndDevice
|
|
68
|
+
- DERControlList
|
|
69
|
+
- DER
|
|
70
|
+
- DERControl
|
|
71
|
+
checks:
|
|
72
|
+
- type: end-device
|
|
73
|
+
parameters:
|
|
74
|
+
matches_client: true
|
|
75
|
+
- type: der-control
|
|
76
|
+
parameters:
|
|
77
|
+
minimum_count: 1
|
|
78
|
+
opModConnect: True
|
|
79
|
+
rampTms: null
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Description: Active Control - Control Combinations
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure an active control with opModExpLimW = 50% of the DER active power rating, opModGenLimW = 0W, opModImpLimW = 50% the DER active power rating, opModLoadLimW = 0W, opModEnergize = false, opModConnect = false, and without including the rampTms attribute.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
checks:
|
|
26
|
+
- type: end-device
|
|
27
|
+
parameters:
|
|
28
|
+
matches_client: true
|
|
29
|
+
- type: der-control
|
|
30
|
+
parameters:
|
|
31
|
+
minimum_count: 1
|
|
32
|
+
opModExpLimW: $(setMaxW * 0.5)
|
|
33
|
+
opModGenLimW: 0
|
|
34
|
+
opModImpLimW: $(setMaxW * 0.5)
|
|
35
|
+
opModLoadLimW: 0
|
|
36
|
+
opModEnergize: False
|
|
37
|
+
opModConnect: False
|
|
38
|
+
rampTms: null
|
|
39
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Description: Active Control - Ramp Rates
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure an active control with opModExpLimW = 0, opModImpLimW = 0, rampTms=30 seconds.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
checks:
|
|
26
|
+
- type: end-device
|
|
27
|
+
parameters:
|
|
28
|
+
matches_client: true
|
|
29
|
+
- type: der-control
|
|
30
|
+
parameters:
|
|
31
|
+
minimum_count: 1
|
|
32
|
+
opModExpLimW: 0
|
|
33
|
+
opModImpLimW: 0
|
|
34
|
+
rampTms: 30
|
|
35
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Description: Default Control - Export Limit
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure a default control with opModExpLimW = 30 % of DER max rated active power.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
- DERControlList
|
|
26
|
+
- DER
|
|
27
|
+
- DefaultDERControl
|
|
28
|
+
checks:
|
|
29
|
+
- type: end-device
|
|
30
|
+
parameters:
|
|
31
|
+
matches_client: true
|
|
32
|
+
- type: default-der-control
|
|
33
|
+
parameters:
|
|
34
|
+
opModExpLimW: $(setMaxW * 0.3)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Description: Default Control - Generation Limit
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure a default control with opModGenLimW = 30 % of DER max rated active power.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
- DERControlList
|
|
26
|
+
- DER
|
|
27
|
+
- DefaultDERControl
|
|
28
|
+
checks:
|
|
29
|
+
- type: end-device
|
|
30
|
+
parameters:
|
|
31
|
+
matches_client: true
|
|
32
|
+
- type: default-der-control
|
|
33
|
+
parameters:
|
|
34
|
+
opModGenLimW: $(setMaxW * 0.3)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Description: Default Control - Import Limit
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure a default control with opModImpLimW = 30 % of DER max rated active power.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
- DERControlList
|
|
26
|
+
- DER
|
|
27
|
+
- DefaultDERControl
|
|
28
|
+
checks:
|
|
29
|
+
- type: end-device
|
|
30
|
+
parameters:
|
|
31
|
+
matches_client: true
|
|
32
|
+
- type: default-der-control
|
|
33
|
+
parameters:
|
|
34
|
+
opModImpLimW: $(setMaxW * 0.3)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Description: Default Control - Load Limit
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure a default control with opModLoadLimW = 30 % of DER max rated active power.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
- DERControlList
|
|
26
|
+
- DER
|
|
27
|
+
- DefaultDERControl
|
|
28
|
+
checks:
|
|
29
|
+
- type: end-device
|
|
30
|
+
parameters:
|
|
31
|
+
matches_client: true
|
|
32
|
+
- type: default-der-control
|
|
33
|
+
parameters:
|
|
34
|
+
opModLoadLimW: $(setMaxW * 0.3)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Description: Default Control - Ramp Rate
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure a default control with setGradW = 1 % per second.
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
- DERControlList
|
|
26
|
+
- DER
|
|
27
|
+
- DefaultDERControl
|
|
28
|
+
checks:
|
|
29
|
+
- type: end-device
|
|
30
|
+
parameters:
|
|
31
|
+
matches_client: true
|
|
32
|
+
- type: default-der-control
|
|
33
|
+
parameters:
|
|
34
|
+
setGradW: 1
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Description: Default Control - Control Combinations
|
|
2
|
+
Category: Control
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: (A) PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
client: client
|
|
17
|
+
instructions:
|
|
18
|
+
- Create an EndDevice registration.
|
|
19
|
+
- Configure a default control with - opModExpLimW = 50% of the DER active power rating, opModGenLimW = 0W, opModImpLimW = 50% of the DER active power rating, opModLoadLimW = 0W
|
|
20
|
+
action:
|
|
21
|
+
type: discovery
|
|
22
|
+
parameters:
|
|
23
|
+
resources:
|
|
24
|
+
- EndDevice
|
|
25
|
+
- DERControlList
|
|
26
|
+
- DER
|
|
27
|
+
- DefaultDERControl
|
|
28
|
+
checks:
|
|
29
|
+
- type: end-device
|
|
30
|
+
parameters:
|
|
31
|
+
matches_client: true
|
|
32
|
+
- type: default-der-control
|
|
33
|
+
parameters:
|
|
34
|
+
opModExpLimW: $(setMaxW * 0.5)
|
|
35
|
+
opModGenLimW: 0
|
|
36
|
+
opModImpLimW: $(setMaxW * 0.5)
|
|
37
|
+
opModLoadLimW: 0
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
Description: Subscribe
|
|
2
|
+
Category: Subscription / Notification
|
|
3
|
+
Classes:
|
|
4
|
+
- A
|
|
5
|
+
|
|
6
|
+
TargetVersions:
|
|
7
|
+
- v1.2
|
|
8
|
+
|
|
9
|
+
Preconditions:
|
|
10
|
+
required_clients:
|
|
11
|
+
- id: client
|
|
12
|
+
|
|
13
|
+
Steps:
|
|
14
|
+
- id: PRECONDITION
|
|
15
|
+
repeat_until_pass: true
|
|
16
|
+
instructions:
|
|
17
|
+
- Create an EndDevice registration for client.
|
|
18
|
+
action:
|
|
19
|
+
type: discovery
|
|
20
|
+
parameters:
|
|
21
|
+
resources:
|
|
22
|
+
- EndDevice
|
|
23
|
+
- FunctionSetAssignments
|
|
24
|
+
- DERProgram
|
|
25
|
+
- SubscriptionList
|
|
26
|
+
checks:
|
|
27
|
+
- type: end-device
|
|
28
|
+
parameters:
|
|
29
|
+
matches_client: true
|
|
30
|
+
|
|
31
|
+
- id: EDEV LIST SUBSCRIBE
|
|
32
|
+
action:
|
|
33
|
+
type: create-subscription
|
|
34
|
+
parameters:
|
|
35
|
+
sub_id: edev_list_sub
|
|
36
|
+
resource: EndDeviceList
|
|
37
|
+
|
|
38
|
+
- id: AWAIT EDEV LIST NOTIFICATION
|
|
39
|
+
repeat_until_pass: true
|
|
40
|
+
instructions:
|
|
41
|
+
- Change the EndDeviceList to have a pollRate of 30 seconds. Ensure it sends a Notification.
|
|
42
|
+
action:
|
|
43
|
+
type: notifications
|
|
44
|
+
parameters:
|
|
45
|
+
sub_id: edev_list_sub
|
|
46
|
+
collect: true
|
|
47
|
+
checks:
|
|
48
|
+
- type: end-device-list
|
|
49
|
+
parameters:
|
|
50
|
+
minimum_count: 1
|
|
51
|
+
maximum_count: 1
|
|
52
|
+
poll_rate: 30
|
|
53
|
+
sub_id: edev_list_sub
|
|
54
|
+
|
|
55
|
+
- id: FSA LIST SUBSCRIBE
|
|
56
|
+
action:
|
|
57
|
+
type: create-subscription
|
|
58
|
+
parameters:
|
|
59
|
+
sub_id: fsa_list_sub
|
|
60
|
+
resource: FunctionSetAssignmentsList
|
|
61
|
+
|
|
62
|
+
- id: AWAIT FSA LIST NOTIFICATION
|
|
63
|
+
repeat_until_pass: true
|
|
64
|
+
instructions:
|
|
65
|
+
- Add a new FunctionSetAssignment to client EndDevice. Ensure it sends a Notification.
|
|
66
|
+
action:
|
|
67
|
+
type: notifications
|
|
68
|
+
parameters:
|
|
69
|
+
sub_id: fsa_list_sub
|
|
70
|
+
collect: true
|
|
71
|
+
checks:
|
|
72
|
+
- type: function-set-assignment
|
|
73
|
+
parameters:
|
|
74
|
+
minimum_count: 1
|
|
75
|
+
maximum_count: 1
|
|
76
|
+
matches_client_edev: true
|
|
77
|
+
sub_id: fsa_list_sub
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
# At this point the client will have a FunctionSetAssignment with a LINK to a DERProgramList but NO
|
|
81
|
+
# physical record of that DERProgramList - we can't just subscribe to a ListLink.href as the actual underlying
|
|
82
|
+
# record might NOT be subscribable (we can only discover that by resolving the record)
|
|
83
|
+
#
|
|
84
|
+
# For these reasons - we are forced to actually resolve the DERProgramList via discovery.
|
|
85
|
+
- id: DISCOVER NEW DERP LIST
|
|
86
|
+
action:
|
|
87
|
+
type: discovery
|
|
88
|
+
parameters:
|
|
89
|
+
resources:
|
|
90
|
+
- DERProgramList
|
|
91
|
+
|
|
92
|
+
- id: DERP LIST SUBSCRIBE
|
|
93
|
+
action:
|
|
94
|
+
type: create-subscription
|
|
95
|
+
parameters:
|
|
96
|
+
sub_id: derp_list_sub
|
|
97
|
+
resource: DERProgramList
|
|
98
|
+
|
|
99
|
+
- id: AWAIT DERP LIST NOTIFICATION
|
|
100
|
+
repeat_until_pass: true
|
|
101
|
+
instructions:
|
|
102
|
+
- Add a new DERProgram to the newly created FunctionSetAssignment. Ensure it sends a Notification.
|
|
103
|
+
action:
|
|
104
|
+
type: notifications
|
|
105
|
+
parameters:
|
|
106
|
+
sub_id: derp_list_sub
|
|
107
|
+
collect: true
|
|
108
|
+
checks:
|
|
109
|
+
- type: der-program
|
|
110
|
+
parameters:
|
|
111
|
+
minimum_count: 1
|
|
112
|
+
maximum_count: 1
|
|
113
|
+
fsa_index: -1 # Must belong to the latest FunctionSetAssignment
|
|
114
|
+
sub_id: derp_list_sub
|
|
115
|
+
|
|
116
|
+
# Same as above - we don't have the DefaultDERControl (only a link) - we need to resolve it
|
|
117
|
+
- id: DISCOVER NEW DERC
|
|
118
|
+
repeat_until_pass: true
|
|
119
|
+
instructions:
|
|
120
|
+
- Add a DefaultDERControl to the recently created DERProgram. Ensure it's subscribable.
|
|
121
|
+
action:
|
|
122
|
+
type: discovery
|
|
123
|
+
parameters:
|
|
124
|
+
resources:
|
|
125
|
+
- DefaultDERControl
|
|
126
|
+
checks:
|
|
127
|
+
- type: default-der-control
|
|
128
|
+
parameters:
|
|
129
|
+
minimum_count: 1
|
|
130
|
+
|
|
131
|
+
- id: DEFAULT DERC SUBSCRIBE
|
|
132
|
+
action:
|
|
133
|
+
type: create-subscription
|
|
134
|
+
parameters:
|
|
135
|
+
sub_id: dderc_sub
|
|
136
|
+
resource: DefaultDERControl
|
|
137
|
+
|
|
138
|
+
- id: AWAIT DEFAULT DERC NOTIFICATION
|
|
139
|
+
repeat_until_pass: true
|
|
140
|
+
instructions:
|
|
141
|
+
- Adjust the DefaultDERControl to have opModeExpLimW 2000 W. Ensure it sends a Notification.
|
|
142
|
+
action:
|
|
143
|
+
type: notifications
|
|
144
|
+
parameters:
|
|
145
|
+
sub_id: dderc_sub
|
|
146
|
+
collect: true
|
|
147
|
+
checks:
|
|
148
|
+
- type: default-der-control
|
|
149
|
+
parameters:
|
|
150
|
+
opModExpLimW: 2000
|
|
151
|
+
sub_id: dderc_sub
|