| # Copyright (c) 2021 Project CHIP Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default |
| |
| name: 123.2.2. [TC-S-2.2] Primary functionality with DUT as Server |
| |
| PICS: |
| - S.S |
| |
| config: |
| nodeId: 0x12344321 |
| cluster: "Scenes Management" |
| endpoint: 1 |
| G1: |
| type: group_id |
| defaultValue: 0x0001 |
| G2: |
| type: group_id |
| defaultValue: 0x0002 |
| GI: |
| type: group_id |
| defaultValue: 0x0099 |
| |
| tests: |
| - label: "Wait for the commissioned device to be retrieved" |
| cluster: "DelayCommands" |
| command: "WaitForCommissionee" |
| arguments: |
| values: |
| - name: "nodeId" |
| value: nodeId |
| |
| - label: "TH reads from the DUT the (0x0006) SceneTableSize attribute" |
| PICS: S.S.A0001 |
| command: "readAttribute" |
| attribute: "SceneTableSize" |
| response: |
| values: |
| - name: "SceneTableSize" |
| saveAs: maxScenes |
| |
| - label: "Arithmetic operation to get the maxScenes - 1" |
| cluster: "Unit Testing" |
| command: "TestAddArguments" |
| arguments: |
| values: |
| - name: "arg1" |
| value: maxScenes - 1 |
| - name: "arg2" |
| value: 0 |
| response: |
| values: |
| - name: "returnValue" |
| saveAs: maxScenesMinusOne |
| value: maxScenes - 1 |
| |
| - label: "Arithmetic operation to get the fabric Capacity" |
| cluster: "Unit Testing" |
| command: "TestAddArguments" |
| arguments: |
| values: |
| - name: "arg1" |
| value: maxScenesMinusOne / 2 |
| - name: "arg2" |
| value: 0 |
| response: |
| values: |
| - name: "returnValue" |
| saveAs: fabricCapacity |
| value: maxScenesMinusOne / 2 |
| |
| - label: |
| "Step 0a :TH sends KeySetWrite command in the GroupKeyManagement |
| cluster to DUT using a key that is pre-installed on the TH. |
| GroupKeySet fields are as follows:" |
| cluster: "Group Key Management" |
| endpoint: 0 |
| command: "KeySetWrite" |
| arguments: |
| values: |
| - name: "GroupKeySet" |
| value: |
| { |
| GroupKeySetID: 0x01a1, |
| GroupKeySecurityPolicy: 0, |
| EpochKey0: "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf", |
| EpochStartTime0: 1110000, |
| EpochKey1: "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf", |
| EpochStartTime1: 1110001, |
| EpochKey2: "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf", |
| EpochStartTime2: 1110002, |
| } |
| |
| - label: |
| "Step 0b: TH binds GroupIds 0x0001 and 0x0002 with GroupKeySetID |
| 0x01a1 in the GroupKeyMap attribute list on GroupKeyManagement cluster |
| by writing the GroupKeyMap attribute with two entries as follows:" |
| cluster: "Group Key Management" |
| endpoint: 0 |
| command: "writeAttribute" |
| attribute: "GroupKeyMap" |
| arguments: |
| value: |
| [ |
| { FabricIndex: 1, GroupId: G1, GroupKeySetID: 0x01a1 }, |
| { FabricIndex: 1, GroupId: G2, GroupKeySetID: 0x01a1 }, |
| ] |
| |
| - label: "Step 0c: TH sends a RemoveAllGroups command to DUT." |
| PICS: G.S.C04.Rsp |
| cluster: "Groups" |
| endpoint: endpoint |
| command: "RemoveAllGroups" |
| |
| - label: |
| "Step 1a: TH sends a AddGroup command to DUT with the GroupID field |
| set to G1." |
| PICS: G.S.C00.Rsp |
| cluster: "Groups" |
| command: "AddGroup" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "GroupName" |
| value: "Group1" |
| response: |
| values: |
| - name: "Status" |
| value: 0 |
| - name: "GroupID" |
| value: G1 |
| |
| - label: |
| "Step 1b: TH sends a RemoveAllScenes command to DUT with the GroupID |
| field set to G1." |
| PICS: S.S.C03.Rsp |
| command: "RemoveAllScenes" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "GroupID" |
| value: G1 |
| |
| - label: |
| "Step 1c: TH sends a RemoveAllScenes command to DUT with the GroupID |
| field set to GI (Where GI is a group currently absent from the group |
| table)." |
| PICS: S.S.C03.Rsp |
| command: "RemoveAllScenes" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: GI |
| response: |
| values: |
| - name: "Status" |
| value: 0x85 |
| - name: "GroupID" |
| value: GI |
| |
| - label: |
| "Step 1d: TH sends a GetSceneMembership command to DUT with the |
| GroupID field set to G1." |
| PICS: S.S.C06.Rsp |
| command: "GetSceneMembership" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "Capacity" |
| value: fabricCapacity |
| - name: "GroupID" |
| value: G1 |
| |
| - label: |
| "Step 1e: TH sends a GetSceneMembership command to DUT with the |
| GroupID field set to GI (Where GI is a group currently absent from the |
| group table)." |
| PICS: S.S.C06.Rsp |
| command: "GetSceneMembership" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: GI |
| response: |
| values: |
| - name: "Status" |
| value: 0x85 |
| - name: "Capacity" |
| constraints: |
| anyOf: [fabricCapacity, 0xfe, null] |
| value: null |
| - name: "GroupID" |
| value: GI |
| |
| - label: |
| "Step 2a: TH configures AC1 on DUT for all implemented application |
| clusters supporting scenes." |
| PICS: PICS_SDK_CI_ONLY |
| cluster: "Level Control" |
| command: "MoveToLevelWithOnOff" |
| arguments: |
| values: |
| - name: "Level" |
| value: 100 |
| - name: "TransitionTime" |
| value: 0 |
| - name: "OptionsMask" |
| value: 0 |
| - name: "OptionsOverride" |
| value: 0 |
| |
| - label: |
| "Step 2a: TH configures AC1 on DUT for all implemented application |
| clusters supporting scenes." |
| verification: | |
| Is DUT configured with AC1? |
| cluster: "LogCommands" |
| command: "UserPrompt" |
| PICS: PICS_SKIP_SAMPLE_APP |
| arguments: |
| values: |
| - name: "message" |
| value: |
| "Please configure AC1 on DUT and enter 'y' after the |
| configuration is complete" |
| - name: "expectedValue" |
| value: "y" |
| |
| - label: |
| "Step 2b: TH sends a StoreScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0x01." |
| PICS: S.S.C04.Rsp |
| command: "StoreScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 2c: TH sends a StoreScene command to DUT with the GroupID field |
| set to GI (Where GI is a group currently absent from the group table) |
| and the SceneID field set to 0x01." |
| PICS: S.S.C04.Rsp |
| command: "StoreScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: GI |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| values: |
| - name: "Status" |
| value: 0x85 |
| - name: "GroupID" |
| value: GI |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 3a: TH configures AC2 on DUT for all implemented application |
| clusters supporting scenes." |
| cluster: "Level Control" |
| PICS: PICS_SDK_CI_ONLY |
| command: "MoveToLevelWithOnOff" |
| arguments: |
| values: |
| - name: "Level" |
| value: 200 |
| - name: "TransitionTime" |
| value: 0 |
| - name: "OptionsMask" |
| value: 0 |
| - name: "OptionsOverride" |
| value: 0 |
| |
| - label: |
| "Step 3a: TH configures AC2 on DUT for all implemented application |
| clusters supporting scenes." |
| verification: | |
| Is DUT configured with AC2? |
| cluster: "LogCommands" |
| command: "UserPrompt" |
| PICS: PICS_SKIP_SAMPLE_APP |
| arguments: |
| values: |
| - name: "message" |
| value: |
| "Please configure AC2 on DUT and enter 'y' after the |
| configuration is complete" |
| - name: "expectedValue" |
| value: "y" |
| |
| - label: |
| "Step 3b: TH sends a RecallScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0x01." |
| PICS: S.S.C05.Rsp |
| command: "RecallScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: "Step 3c: TH reads attribute SceneTableSize from DUT." |
| command: "readAttribute" |
| attribute: "SceneTableSize" |
| response: |
| saveAs: SceneTableSizeValue |
| constraints: |
| type: int16u |
| |
| - label: "Step 3d: TH reads attribute FabricSceneInfo from DUT" |
| command: "readAttribute" |
| attribute: "FabricSceneInfo" |
| response: |
| value: |
| [ |
| { |
| SceneCount: 1, |
| CurrentScene: 0x01, |
| CurrentGroup: G1, |
| SceneValid: true, |
| RemainingCapacity: fabricCapacity - 1, |
| }, |
| ] |
| |
| - label: "Step 4a: Reboot target device" |
| PICS: PICS_SDK_CI_ONLY |
| cluster: "SystemCommands" |
| endpoint: 0 |
| command: "Reboot" |
| |
| - label: "Step 4a: Reboot target device(DUT)" |
| verification: | |
| Did the DUT successfully reboot? |
| cluster: "LogCommands" |
| command: "UserPrompt" |
| PICS: PICS_SKIP_SAMPLE_APP |
| arguments: |
| values: |
| - name: "message" |
| value: "Please reboot the DUT and enter 'y' after DUT starts" |
| - name: "expectedValue" |
| value: "y" |
| |
| - label: "Wait for the commissioned device to be retrieved" |
| cluster: "DelayCommands" |
| command: "WaitForCommissionee" |
| arguments: |
| values: |
| - name: "nodeId" |
| value: nodeId |
| |
| - label: |
| "Step 4c: TH configures AC2 on DUT for all implemented application |
| clusters supporting scenes." |
| cluster: "Level Control" |
| PICS: PICS_SDK_CI_ONLY |
| command: "MoveToLevelWithOnOff" |
| arguments: |
| values: |
| - name: "Level" |
| value: 200 |
| - name: "TransitionTime" |
| value: 0 |
| - name: "OptionsMask" |
| value: 0 |
| - name: "OptionsOverride" |
| value: 0 |
| |
| - label: |
| "Step 4c: TH configures AC2 on DUT for all implemented application |
| clusters supporting scenes." |
| verification: | |
| Is DUT configured with AC2? |
| cluster: "LogCommands" |
| command: "UserPrompt" |
| PICS: PICS_SKIP_SAMPLE_APP |
| arguments: |
| values: |
| - name: "message" |
| value: |
| "Please configure AC2 on DUT and enter 'y' after the |
| configuration is complete" |
| - name: "expectedValue" |
| value: "y" |
| |
| - label: |
| "Step 4d: TH sends a RecallScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0x01." |
| PICS: S.S.C05.Rsp |
| command: "RecallScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 5a: TH sends a ViewScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0x01." |
| PICS: S.S.C01.Rsp && PICS_SDK_CI_ONLY |
| command: "ViewScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| - name: "TransitionTime" |
| value: 0x0000 |
| - name: "ExtensionFieldSets" |
| constraints: |
| type: list |
| contains: |
| [ |
| { |
| ClusterID: 0x0006, |
| AttributeValueList: |
| [ |
| { |
| AttributeID: 0x0000, |
| AttributeValue: 0x01, |
| }, |
| ], |
| }, |
| { |
| ClusterID: 0x0008, |
| AttributeValueList: |
| [ |
| { |
| AttributeID: 0x0000, |
| AttributeValue: 0x64, |
| }, |
| ], |
| }, |
| ] |
| |
| - label: |
| "Step 5a: TH sends a ViewScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0x01." |
| PICS: S.S.C01.Rsp && PICS_SKIP_SAMPLE_APP |
| command: "ViewScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| - name: "TransitionTime" |
| value: 0x0000 |
| |
| - label: |
| "Step 5b: TH sends a ViewScene command to DUT with the GroupID field |
| set to GI (Where GI is a group currently absent from the group table) |
| and the SceneID field set to 0x01." |
| PICS: S.S.C01.Rsp |
| command: "ViewScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: GI |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| values: |
| - name: "Status" |
| value: 0x85 |
| - name: "GroupID" |
| value: GI |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 5c: TH sends a ViewScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0xFE." |
| PICS: S.S.C01.Rsp |
| command: "ViewScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0xFE |
| response: |
| values: |
| - name: "Status" |
| value: 0x8b |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0xFE |
| |
| - label: |
| "Step 6: TH sends a GetSceneMembership command to DUT with the GroupID |
| field set to G1." |
| PICS: S.S.C06.Rsp |
| command: "GetSceneMembership" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "Capacity" |
| value: fabricCapacity - 1 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneList" |
| value: [0x01] |
| |
| - label: |
| "Step 7a: TH sends a RemoveAllScenes command to DUT with the GroupID |
| field set to G1." |
| PICS: S.S.C03.Rsp |
| command: "RemoveAllScenes" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| response: |
| values: |
| - name: "Status" |
| value: 0 |
| - name: "GroupID" |
| value: G1 |
| |
| - label: |
| "Step 7b: TH sends a GetSceneMembership command to DUT with the |
| GroupID field set to G1." |
| PICS: S.S.C06.Rsp |
| command: "GetSceneMembership" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "Capacity" |
| constraints: |
| anyOf: [fabricCapacity, 0xfe, null] |
| - name: "GroupID" |
| value: G1 |
| |
| - label: |
| "Step 8a: TH sends a AddScene command to DUT with the GroupID field |
| set to G1, the SceneID field set to 0x01, the TransitionTime field set |
| to 60 000 000 (60 000s) and a set of extension fields appropriate to |
| AC1." |
| PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY |
| command: "AddScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| - name: "TransitionTime" |
| value: 60000000 |
| - name: "SceneName" |
| value: "Scene1" |
| - name: "ExtensionFieldSets" |
| value: |
| [ |
| { |
| ClusterID: 0x0006, |
| AttributeValueList: |
| [{ AttributeID: 0x0000, AttributeValue: 0x01 }], |
| }, |
| { |
| ClusterID: 0x0008, |
| AttributeValueList: |
| [{ AttributeID: 0x0000, AttributeValue: 0x64 }], |
| }, |
| ] |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 8a: TH sends a AddScene command to DUT with the GroupID field |
| set to G1, the SceneID field set to 0x01, the TransitionTime field set |
| to 60 000 000 (60 000s) and a set of extension fields appropriate to |
| AC1." |
| verification: | |
| ./chip-tool scenesmanagement add-scene 0x0001 0x01 60000000 "scene name" '[{"clusterID": "0x0300", "attributeValueList":[{"attributeID": "0x4001", "attributeValue": "0x01"}]}]' 1 1 |
| |
| Verify DUT sends a AddSceneResponse command to TH with the Status field set to 0x00 (SUCCESS), the GroupID field set to G1 and the SceneID field set to 0x01 on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: |
| |
| [1706763610.675038][4232:4234] CHIP:DMG: }, |
| [1706763610.675108][4232:4234] CHIP:DMG: Received Command Response Data, Endpoint=1 Cluster=0x0000_0062 Command=0x0000_0000 |
| [1706763610.675134][4232:4234] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Command 0x0000_0000 |
| [1706763610.675187][4232:4234] CHIP:TOO: AddSceneResponse: { |
| [1706763610.675215][4232:4234] CHIP:TOO: status: 0 |
| [1706763610.675229][4232:4234] CHIP:TOO: groupID: 1 |
| [1706763610.675244][4232:4234] CHIP:TOO: sceneID: 1 |
| [1706763610.675258][4232:4234] CHIP:TOO: } |
| cluster: "LogCommands" |
| command: "UserPrompt" |
| PICS: PICS_SKIP_SAMPLE_APP |
| arguments: |
| values: |
| - name: "message" |
| value: |
| "Please execute the add scene command with |
| extensionfieldsets in accordance with AC1 on DUT and enter |
| 'y' if the command is successful" |
| - name: "expectedValue" |
| value: "y" |
| |
| - label: |
| "Step 8b: TH sends a AddScene command to DUT with the GroupID field |
| set to GI (Where GI is a group currently absent from the group table), |
| the SceneID field set to 0x01, the TransitionTime field set to 1000 |
| (1s) and a set of extension fields appropriate to AC1." |
| PICS: S.S.C00.Rsp |
| command: "AddScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: GI |
| - name: "SceneID" |
| value: 0x01 |
| - name: "TransitionTime" |
| value: 1000 |
| - name: "SceneName" |
| value: "Scene1" |
| - name: "ExtensionFieldSets" |
| value: [] |
| response: |
| values: |
| - name: "Status" |
| value: 0x85 |
| - name: "GroupID" |
| value: GI |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 8c: TH sends a GetSceneMembership command to DUT with the |
| GroupID field set to G1." |
| PICS: S.S.C06.Rsp |
| command: "GetSceneMembership" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "Capacity" |
| constraints: |
| anyOf: [fabricCapacity - 1, 0xfe, 0x89] |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneList" |
| value: [0x01] |
| |
| - label: |
| "Step 8d: TH sends a AddScene command to DUT with the GroupID field |
| set to G1, the SceneID field set to 0x01, the TransitionTime field set |
| to 70 000 000 (70 000s) and no extension field sets. This should fail |
| and return a status of 0x85 (INVALID_COMMAND)." |
| PICS: S.S.C00.Rsp |
| command: "AddScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| - name: "TransitionTime" |
| value: 70000000 |
| - name: "SceneName" |
| value: "Scene1" |
| - name: "ExtensionFieldSets" |
| value: [] |
| response: |
| values: |
| - name: "Status" |
| value: 0x85 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 8e: TH sends a AddScene command to DUT with the GroupID field |
| set to G1, the SceneID field set to 0x01, the TransitionTime field set |
| to 60 000 001 (60 000.001s) and no extension field sets. This should |
| fail and return a status of 0x85 (INVALID_COMMAND)." |
| PICS: S.S.C00.Rsp |
| command: "AddScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| - name: "TransitionTime" |
| value: 60000001 |
| - name: "SceneName" |
| value: "Scene1" |
| - name: "ExtensionFieldSets" |
| value: [] |
| response: |
| values: |
| - name: "Status" |
| value: 0x85 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 9a: TH sends a RemoveScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0x01." |
| PICS: S.S.C02.Rsp |
| command: "RemoveScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 9b: TH sends a RemoveScene command to DUT with the GroupID field |
| set to GI (Where GI is a group currently absent from the group table) |
| and the SceneID field set to 0x01." |
| PICS: S.S.C02.Rsp |
| command: "RemoveScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: GI |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| values: |
| - name: "Status" |
| value: 0x85 |
| - name: "GroupID" |
| value: GI |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 9c: TH sends a RemoveScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0x01." |
| PICS: S.S.C02.Rsp |
| command: "RemoveScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| values: |
| - name: "Status" |
| value: 0x8b |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 9d: TH sends a GetSceneMembership command to DUT with the |
| GroupID field set to G1." |
| PICS: S.S.C06.Rsp |
| command: "GetSceneMembership" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "Capacity" |
| constraints: |
| anyOf: [fabricCapacity, 0xfe, 0x89] |
| - name: "GroupID" |
| value: G1 |
| |
| - label: |
| "Step 10a: TH configures AC2 on DUT for all implemented application |
| clusters supporting scenes." |
| cluster: "Level Control" |
| PICS: PICS_SDK_CI_ONLY |
| command: "MoveToLevelWithOnOff" |
| arguments: |
| values: |
| - name: "Level" |
| value: 200 |
| - name: "TransitionTime" |
| value: 0 |
| - name: "OptionsMask" |
| value: 0 |
| - name: "OptionsOverride" |
| value: 0 |
| |
| - label: |
| "Step 10a: TH configures AC2 on DUT for all implemented application |
| clusters supporting scenes." |
| verification: | |
| Is DUT configured with AC2? |
| cluster: "LogCommands" |
| command: "UserPrompt" |
| PICS: PICS_SKIP_SAMPLE_APP |
| arguments: |
| values: |
| - name: "message" |
| value: |
| "Please configure AC2 on DUT and enter 'y' after the |
| configuration is complete" |
| - name: "expectedValue" |
| value: "y" |
| |
| - label: |
| "Step 10b: TH sends a RecallScene command to DUT with the GroupID |
| field set to G1 and the SceneID field set to 0x01." |
| PICS: S.S.C05.Rsp |
| command: "RecallScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| error: NOT_FOUND |
| |
| - label: |
| "Step 11a: TH configures AC1 on DUT for all implemented application |
| clusters supporting scenes." |
| cluster: "Level Control" |
| PICS: PICS_SDK_CI_ONLY |
| command: "MoveToLevelWithOnOff" |
| arguments: |
| values: |
| - name: "Level" |
| value: 100 |
| - name: "TransitionTime" |
| value: 0 |
| - name: "OptionsMask" |
| value: 0 |
| - name: "OptionsOverride" |
| value: 0 |
| |
| - label: |
| "Step 11a: TH configures AC1 on DUT for all implemented application |
| clusters supporting scenes." |
| verification: | |
| Is DUT configured with AC1? |
| cluster: "LogCommands" |
| command: "UserPrompt" |
| PICS: PICS_SKIP_SAMPLE_APP |
| arguments: |
| values: |
| - name: "message" |
| value: |
| "Please configure AC1 on DUT and enter 'y' after the |
| configuration is complete" |
| - name: "expectedValue" |
| value: "y" |
| |
| - label: |
| "Step 11b: TH sends a StoreScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0x01." |
| PICS: S.S.C04.Rsp |
| command: "StoreScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x01 |
| |
| - label: |
| "Step 12a: TH configures AC2 on DUT for all implemented application |
| clusters supporting scenes." |
| cluster: "Level Control" |
| PICS: PICS_SDK_CI_ONLY |
| command: "MoveToLevelWithOnOff" |
| arguments: |
| values: |
| - name: "Level" |
| value: 200 |
| - name: "TransitionTime" |
| value: 0 |
| - name: "OptionsMask" |
| value: 0 |
| - name: "OptionsOverride" |
| value: 0 |
| |
| - label: |
| "Step 12a: TH configures AC2 on DUT for all implemented application |
| clusters supporting scenes." |
| verification: | |
| Is DUT configured with AC2? |
| cluster: "LogCommands" |
| command: "UserPrompt" |
| PICS: PICS_SKIP_SAMPLE_APP |
| arguments: |
| values: |
| - name: "message" |
| value: |
| "Please configure AC2 on DUT and enter 'y' after the |
| configuration is complete" |
| - name: "expectedValue" |
| value: "y" |
| |
| - label: |
| "Step 12b: TH sends a StoreScene command to DUT with the GroupID field |
| set to G1 and the SceneID field set to 0x02." |
| PICS: S.S.C04.Rsp |
| command: "StoreScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x02 |
| response: |
| values: |
| - name: "Status" |
| saveAs: StoreStatus |
| constraints: |
| anyOf: [0x00, 0x89] |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneID" |
| value: 0x02 |
| |
| - label: |
| "Verify that the status of previous command was either 0x00 (SUCCESS) |
| or 0x89 (INSUFFICIENT_SPACE)" |
| cluster: "EqualityCommands" |
| command: "UnsignedNumberEquals" |
| arguments: |
| values: |
| - name: "Value1" |
| value: 0x00 |
| - name: "Value2" |
| value: StoreStatus |
| response: |
| - values: |
| - name: "Equals" |
| saveAs: ContinueTest |
| |
| - label: |
| "Step 12c: TH sends a GetSceneMembership command to DUT with the |
| GroupID field set to G1." |
| runIf: ContinueTest |
| PICS: S.S.C06.Rsp |
| command: "GetSceneMembership" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G1 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "Capacity" |
| value: fabricCapacity - 2 |
| - name: "GroupID" |
| value: G1 |
| - name: "SceneList" |
| value: [0x01, 0x02] |
| |
| - label: |
| "Step 13a: If capacity allows, TH sends a AddGroup command to DUT with |
| the GroupID field set to G2." |
| runIf: ContinueTest |
| PICS: G.S.C00.Rsp |
| cluster: "Groups" |
| command: "AddGroup" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G2 |
| - name: "GroupName" |
| value: "Group2" |
| response: |
| values: |
| - name: "Status" |
| value: 0 |
| - name: "GroupID" |
| value: G2 |
| |
| - label: |
| "Step 13b: TH sends a RemoveAllScenes command to DUT with the GroupID |
| field set to G2." |
| runIf: ContinueTest |
| PICS: S.S.C03.Rsp |
| command: "RemoveAllScenes" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G2 |
| response: |
| values: |
| - name: "Status" |
| value: 0 |
| - name: "GroupID" |
| value: G2 |
| |
| - label: |
| "Step 13c: TH sends a GetSceneMembership command to DUT with the |
| GroupID field set to G2." |
| runIf: ContinueTest |
| PICS: S.S.C06.Rsp |
| command: "GetSceneMembership" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G2 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "Capacity" |
| value: fabricCapacity - 2 |
| - name: "GroupID" |
| value: G2 |
| |
| - label: |
| "Step 14a: TH configures AC3 on DUT for all implemented application |
| clusters supporting scenes." |
| runIf: ContinueTest |
| cluster: "Level Control" |
| PICS: PICS_SDK_CI_ONLY |
| command: "MoveToLevelWithOnOff" |
| arguments: |
| values: |
| - name: "Level" |
| value: 1 |
| - name: "TransitionTime" |
| value: 0 |
| - name: "OptionsMask" |
| value: 0 |
| - name: "OptionsOverride" |
| value: 0 |
| |
| - label: |
| "Step 14a: TH configures AC3 on DUT for all implemented application |
| clusters supporting scenes." |
| runIf: ContinueTest |
| verification: | |
| Is DUT configured with AC3? |
| cluster: "LogCommands" |
| command: "UserPrompt" |
| PICS: PICS_SKIP_SAMPLE_APP |
| arguments: |
| values: |
| - name: "message" |
| value: |
| "Please configure AC3 on DUT and enter 'y' after the |
| configuration is complete" |
| - name: "expectedValue" |
| value: "y" |
| |
| - label: |
| "Step 14b: TH sends a StoreScene command to DUT with the GroupID field |
| set to G2 and the SceneID field set to 0x03." |
| runIf: ContinueTest |
| PICS: S.S.C04.Rsp |
| command: "StoreScene" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G2 |
| - name: "SceneID" |
| value: 0x03 |
| response: |
| values: |
| - name: "Status" |
| saveAs: StoredStatus |
| constraints: |
| anyOf: [0x00, 0x89] |
| - name: "GroupID" |
| value: G2 |
| - name: "SceneID" |
| value: 0x03 |
| |
| - label: |
| "Verify that the status of previous command was either 0x00 (SUCCESS) |
| or 0x89 (INSUFFICIENT_SPACE)" |
| runIf: ContinueTest |
| cluster: "EqualityCommands" |
| command: "UnsignedNumberEquals" |
| arguments: |
| values: |
| - name: "Value1" |
| value: 0x00 |
| - name: "Value2" |
| value: StoredStatus |
| response: |
| - values: |
| - name: "Equals" |
| saveAs: ContinueStep14 |
| |
| - label: |
| "Step 14c: TH sends a GetSceneMembership command to DUT with the |
| GroupID field set to G2." |
| runIf: ContinueStep14 |
| PICS: S.S.C06.Rsp |
| command: "GetSceneMembership" |
| arguments: |
| values: |
| - name: "GroupID" |
| value: G2 |
| response: |
| values: |
| - name: "Status" |
| value: 0x00 |
| - name: "Capacity" |
| value: fabricCapacity - 3 |
| - name: "GroupID" |
| value: G2 |
| - name: "SceneList" |
| value: [0x03] |
| |
| - label: |
| "Step 15: TH removes the Group key set that was added by sending a |
| KeySetRemove command to the GroupKeyManagement cluster with the |
| GroupKeySetID field set to 0x01a1" |
| cluster: "Group Key Management" |
| endpoint: 0 |
| command: "KeySetRemove" |
| arguments: |
| values: |
| - name: GroupKeySetID |
| value: 0x01a1 |