blob: f969270426bf19430c3ad17886743d0021bef43b [file] [log] [blame]
# Copyright (c) 2023 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.
# !!!!!!!!!! TEST INFORMATION !!!!!!!!!!!!!!!!!!
# This test covers multi fabric support for scenes cluster attributes such as LastConfiguredBy and FabricSceneInfo
name: Scenes Multi-fabric testing
PICS:
- MCORE.ROLE.COMMISSIONEE
- APPDEVICE.S
- S.S
- S.S.F03
- S.S.A0007
config:
nodeId: 0x12344321
cluster: "Scenes Management"
endpoint: 1
payload:
type: char_string
defaultValue: "MT:-24J0AFN00KA0648G00"
discriminator:
type: int16u
defaultValue: 3840
waitAfterCommissioning:
type: int16u
defaultValue: 5000
PakeVerifier:
type: octet_string
defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf"
G1:
type: group_id
defaultValue: 0x0001
G2:
type: group_id
defaultValue: 0x0002
tests:
- label: "Commission DUT to TH1"
cluster: "DelayCommands"
command: "WaitForCommissionee"
arguments:
values:
- name: "nodeId"
value: nodeId
- label: "TH1 reads the fabric index"
cluster: "Operational Credentials"
endpoint: 0
command: "readAttribute"
attribute: "CurrentFabricIndex"
response:
saveAs: th1FabricIndex
- label: "Read the commissioner node ID from the alpha fabric"
identity: "alpha"
endpoint: 0
cluster: "CommissionerCommands"
command: "GetCommissionerNodeId"
response:
values:
- name: "nodeId"
saveAs: commissionerNodeIdAlpha
- label: "Open Commissioning Window from alpha"
endpoint: 0
cluster: "Administrator Commissioning"
command: "OpenCommissioningWindow"
timedInteractionTimeoutMs: 10000
arguments:
values:
- name: "CommissioningTimeout"
value: 180
- name: "PAKEPasscodeVerifier"
value: PakeVerifier
- name: "Discriminator"
value: discriminator
- name: "Iterations"
value: 1000
- name: "Salt"
value: "SPAKE2P Key Salt"
- label: "Waiting after opening commissioning window"
cluster: "DelayCommands"
command: "WaitForMs"
arguments:
values:
- name: "ms"
value: waitAfterCommissioning
- label: "Commission from TH2"
identity: "beta"
endpoint: 0
cluster: "CommissionerCommands"
command: "PairWithCode"
arguments:
values:
- name: "nodeId"
value: nodeId
- name: "payload"
value: payload
- label: "Wait for the commissioned device to be retrieved for TH2"
endpoint: 0
identity: beta
cluster: "DelayCommands"
command: "WaitForCommissionee"
arguments:
values:
- name: "nodeId"
value: nodeId
- label: "Step 4: TH2 reads the fabric index"
identity: "beta"
endpoint: 0
cluster: "Operational Credentials"
command: "readAttribute"
attribute: "CurrentFabricIndex"
response:
saveAs: th2FabricIndex
- label: "Read the commissioner node ID from the beta fabric"
identity: "beta"
endpoint: 0
cluster: "CommissionerCommands"
command: "GetCommissionerNodeId"
response:
values:
- name: "nodeId"
saveAs: commissionerNodeIdBeta
- label: "Read the FabricSceneInfo attribute (0x0007) "
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
constraints:
type: list
- label: "TH reads from the DUT the (0x0006) SceneTableSize attribute"
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: "Preparation step : TH 1 Add Group KeySet."
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: "Preparation step TH1 Map KeySets to GroupId."
cluster: "Group Key Management"
endpoint: 0
command: "writeAttribute"
attribute: "GroupKeyMap"
arguments:
value:
[
{ FabricIndex: 0, GroupId: G1, GroupKeySetID: 0x01a1 },
{ FabricIndex: 0, GroupId: G2, GroupKeySetID: 0x01a1 },
]
- label: "TH1 sends a RemoveAllGroups command to DUT."
cluster: "Groups"
command: "RemoveAllGroups"
- label: "TH1 sends a AddGroup command to DUT for G1."
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: "TH1 sends a AddGroup command to DUT for G2."
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: "Preparation step : TH 2 Add Group KeySet."
identity: "beta"
cluster: "Group Key Management"
endpoint: 0
command: "KeySetWrite"
arguments:
values:
- name: "GroupKeySet"
value:
{
GroupKeySetID: 0x01a2,
GroupKeySecurityPolicy: 0,
EpochKey0: "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf",
EpochStartTime0: 1120000,
EpochKey1: "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf",
EpochStartTime1: 1120001,
EpochKey2: "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
EpochStartTime2: 1120002,
}
- label: "Preparation step TH1 Map KeySets to GroupId."
identity: "beta"
cluster: "Group Key Management"
endpoint: 0
command: "writeAttribute"
attribute: "GroupKeyMap"
arguments:
value: [{ FabricIndex: 0, GroupId: G1, GroupKeySetID: 0x01a2 }]
- label: "TH2 sends a AddGroup command to DUT for G1."
identity: "beta"
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: "TH1 confirms the Fabric Capacity is Maximum"
command: "GetSceneMembership"
arguments:
values:
- name: "GroupID"
value: G1
response:
values:
- name: "Status"
value: 0x00
- name: "Capacity"
value: fabricCapacity
- name: "GroupID"
value: G1
- label: "TH1 Reads LastConfiguredBy attribute"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: null
- label: "TH2 reads LastConfiguredBy attribute"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: null
- label: "TH1 sends an AddScene command to DUT for Scene 1 G1"
command: "AddScene"
arguments:
values:
- name: "GroupID"
value: G1
- name: "SceneID"
value: 0x01
- name: "TransitionTime"
value: 1000
- 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:
"TH1 confirms the Scene was added to the Scene table by
GetSceneMembership"
command: "GetSceneMembership"
arguments:
values:
- name: "GroupID"
value: G1
response:
values:
- name: "Status"
value: 0x00
- name: "Capacity"
value: fabricCapacity -1
- name: "GroupID"
value: G1
- label: "TH2 confirms the Scene membership wasn't affected for fabric 2"
identity: "beta"
command: "GetSceneMembership"
arguments:
values:
- name: "GroupID"
value: G1
response:
values:
- name: "Status"
value: 0x00
- name: "Capacity"
value: fabricCapacity
- name: "GroupID"
value: G1
- label: "TH1 Read the FabricSceneInfo attribute (0x0007) "
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 1,
CurrentScene: 0x00,
CurrentGroup: 0x00,
FabricIndex: th1FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity - 1,
},
]
- label: "TH2 Read the FabricSceneInfo attribute (0x0007) "
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value: []
# TODO : Have FabricSceneInfo initialized on adding a new fabric
- label: "TH1 reads LastConfiguredBy attribute, should be TH1's nodeId"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 reads LastConfiguredBy attribute, should be TH1's nodeId"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 sends an AddScene command to DUT for Scene 1 G1"
identity: "beta"
command: "AddScene"
arguments:
values:
- name: "GroupID"
value: G1
- name: "SceneID"
value: 0x01
- name: "TransitionTime"
value: 1000
- 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: "TH1 reads LastConfiguredBy attribute, should be TH2's nodeId"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdBeta
- label: "TH2 reads LastConfiguredBy attribute, should be TH2's nodeId"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdBeta
- label: "TH2 sends a RecallScene command for Scene 1 Group 1"
identity: "beta"
command: "RecallScene"
arguments:
values:
- name: "GroupID"
value: G1
- name: "SceneID"
value: 0x01
- label: "TH2 confirms the FabricSceneInfo attribute was properly updated"
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 1,
CurrentScene: 0x01,
CurrentGroup: G1,
FabricIndex: th2FabricIndex,
SceneValid: true,
RemainingCapacity: fabricCapacity - 1,
},
]
- label:
"TH1 confirms there were no change to its FabricSceneInfo attribute"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 1,
CurrentScene: 0x00,
CurrentGroup: 0x00,
FabricIndex: th1FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity - 1,
},
]
- label: "TH1 copies Scene 1 from G1 to Scene 2 in G1"
command: "CopyScene"
arguments:
values:
- name: "Mode"
value: 0x00
- name: "GroupIdentifierFrom"
value: G1
- name: "SceneIdentifierFrom"
value: 0x01
- name: "GroupIdentifierTo"
value: G1
- name: "SceneIdentifierTo"
value: 0x02
response:
values:
- name: "Status"
value: 0x00
- name: "GroupIdentifierFrom"
value: G1
- name: "SceneIdentifierFrom"
value: 0x01
- label: "TH1 reads LastConfiguredBy attribute, should be TH1's nodeId"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 reads LastConfiguredBy attribute, should be TH1's nodeId"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 confirms the FabricSceneInfo didn't change"
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 1,
CurrentScene: 0x01,
CurrentGroup: G1,
FabricIndex: th2FabricIndex,
SceneValid: true,
RemainingCapacity: fabricCapacity - 1,
},
]
- label:
"TH1 confirms the update of FabricSceneInfo attribute with scene Valid
still false"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 2,
CurrentScene: 0x00,
CurrentGroup: 0x00,
FabricIndex: th1FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity - 2,
},
]
- label: "TH2 Remove Scene 1 from G1"
identity: "beta"
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: "TH1 reads LastConfiguredBy attribute, should be TH2's nodeId"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdBeta
- label: "TH2 reads LastConfiguredBy attribute, should be TH2's nodeId"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdBeta
- label: "TH2 confirms the FabricSceneInfo's update"
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 0,
CurrentScene: 0x01,
CurrentGroup: G1,
FabricIndex: th2FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity,
},
]
- label: "TH1 confirms its FabricSceneInfo remained unchanged"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 2,
CurrentScene: 0x00,
CurrentGroup: 0x00,
FabricIndex: th1FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity - 2,
},
]
- label: "TH1 copies all Scenes from G1 to G1"
command: "CopyScene"
arguments:
values:
- name: "Mode"
value: 0x01
- name: "GroupIdentifierFrom"
value: G1
- name: "SceneIdentifierFrom"
value: 0x00
- name: "GroupIdentifierTo"
value: G2
- name: "SceneIdentifierTo"
value: 0x00
response:
values:
- name: "Status"
value: 0x00
- name: "GroupIdentifierFrom"
value: G1
- name: "SceneIdentifierFrom"
value: 0x00
- label: "TH1 reads LastConfiguredBy attribute, should be TH1's nodeId"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 reads LastConfiguredBy attribute, should be TH1's nodeId"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 confirms its FabricSceneInfo remained unchanged"
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 0,
CurrentScene: 0x01,
CurrentGroup: G1,
FabricIndex: th2FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity,
},
]
- label: "TH1 confirms its FabricSceneInfo was updated"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 4,
CurrentScene: 0x00,
CurrentGroup: 0x00,
FabricIndex: th1FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity - 4,
},
]
- label: "TH1 sends a RecallScene command for Scene 1 Group 2"
command: "RecallScene"
arguments:
values:
- name: "GroupID"
value: G2
- name: "SceneID"
value: 0x01
- label: "TH2 confirms its FabricSceneInfo remained unchanged"
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 0,
CurrentScene: 0x01,
CurrentGroup: G1,
FabricIndex: th2FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity,
},
]
- label: "TH1 confirms its FabricSceneInfo was updated"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 4,
CurrentScene: 0x01,
CurrentGroup: G2,
FabricIndex: th1FabricIndex,
SceneValid: true,
RemainingCapacity: fabricCapacity - 4,
},
]
- label: "TH2 Store the current DUT state to a new scene"
identity: "beta"
command: "StoreScene"
arguments:
values:
- name: "GroupID"
value: G1
- name: "SceneID"
value: 0x02
response:
values:
- name: "Status"
value: 0x00
- name: "GroupID"
value: G1
- name: "SceneID"
value: 0x02
- label: "TH1 reads LastConfiguredBy attribute, should be TH2's nodeId"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdBeta
- label: "TH2 reads LastConfiguredBy attribute, should be TH2's nodeId"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdBeta
- label: "TH2 confirms its FabricSceneInfo was updated"
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 1,
CurrentScene: 0x02,
CurrentGroup: G1,
FabricIndex: th2FabricIndex,
SceneValid: true,
RemainingCapacity: fabricCapacity - 1,
},
]
- label:
"TH1 confirms its FabricSceneInfo's field SceneValid remains unchanged"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 4,
CurrentScene: 0x01,
CurrentGroup: G2,
FabricIndex: th1FabricIndex,
SceneValid: true,
RemainingCapacity: fabricCapacity - 4,
},
]
- label: "TH1 removes all scenes from G1"
command: "RemoveAllScenes"
arguments:
values:
- name: "GroupID"
value: G1
response:
values:
- name: "Status"
value: 0
- name: "GroupID"
value: G1
- label: "TH1 reads LastConfiguredBy attribute, should be TH1's nodeId"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 reads LastConfiguredBy attribute, should be TH1's nodeId"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 confirms its FabricSceneInfo remained unchanged"
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 1,
CurrentScene: 0x02,
CurrentGroup: G1,
FabricIndex: th2FabricIndex,
SceneValid: true,
RemainingCapacity: fabricCapacity - 1,
},
]
- label:
"TH1 confirms its FabricSceneInfo's field SceneCount and
RemainingCapacity were updated"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 2,
CurrentScene: 0x01,
CurrentGroup: G2,
FabricIndex: th1FabricIndex,
SceneValid: true,
RemainingCapacity: fabricCapacity - 2,
},
]
- label: "TH2 Remove Scene 2 from G1"
identity: "beta"
command: "RemoveScene"
arguments:
values:
- name: "GroupID"
value: G1
- name: "SceneID"
value: 0x02
response:
values:
- name: "Status"
value: 0x00
- name: "GroupID"
value: G1
- name: "SceneID"
value: 0x02
- label: "TH1 reads LastConfiguredBy attribute, should be TH2's nodeId"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdBeta
- label: "TH2 reads LastConfiguredBy attribute, should be TH2's nodeId"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdBeta
- label: "TH2 confirms its FabricSceneInfo was updated"
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 0,
CurrentScene: 0x02,
CurrentGroup: G1,
FabricIndex: th2FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity,
},
]
- label: "TH1 confirms its FabricSceneInfo remained unchanged"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 2,
CurrentScene: 0x01,
CurrentGroup: G2,
FabricIndex: th1FabricIndex,
SceneValid: true,
RemainingCapacity: fabricCapacity - 2,
},
]
- label: "TH1 removes all scenes from G2"
command: "RemoveAllScenes"
arguments:
values:
- name: "GroupID"
value: G2
response:
values:
- name: "Status"
value: 0
- name: "GroupID"
value: G2
- label: "TH1 reads LastConfiguredBy attribute, should be TH2's nodeId"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 reads LastConfiguredBy attribute, should be TH2's nodeId"
identity: "beta"
command: "readAttribute"
attribute: "LastConfiguredBy"
response:
value: commissionerNodeIdAlpha
- label: "TH2 confirms its FabricSceneInfo remained unchanged"
identity: "beta"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 0,
CurrentScene: 0x02,
CurrentGroup: G1,
FabricIndex: th2FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity,
},
]
- label: "TH1 confirms its FabricSceneInfo was updated"
command: "readAttribute"
attribute: "FabricSceneInfo"
response:
value:
[
{
SceneCount: 0,
CurrentScene: 0x01,
CurrentGroup: G2,
FabricIndex: th1FabricIndex,
SceneValid: false,
RemainingCapacity: fabricCapacity,
},
]