blob: c3df4a41e8221f72098551b98484b287c6d54d8e [file] [log] [blame]
# 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.
name: 42.2.2. [TC-TSTAT-2.2] Setpoint Test Cases with server as DUT
PICS:
- TSTAT.S
config:
nodeId: 0x12344321
cluster: "Thermostat"
endpoint: 1
tests:
- label: "Wait for the commissioned device to be retrieved"
cluster: "DelayCommands"
command: "WaitForCommissionee"
arguments:
values:
- name: "nodeId"
value: nodeId
- label: "Saving value for comparision in step 2a read MinCoolSetpointLimit"
PICS: TSTAT.S.A0017
command: "readAttribute"
attribute: "MinCoolSetpointLimit"
response:
saveAs: MinCoolSetpointLimit
- label: "Saving value for comparision in step 2a read MaxCoolSetpointLimit"
PICS: TSTAT.S.A0018
command: "readAttribute"
attribute: "MaxCoolSetpointLimit"
response:
saveAs: MaxCoolSetpointLimit
- label:
"Saving value for comparision in step 2c read attribute
MinSetpointDeadBand"
PICS: TSTAT.S.A0019
command: "readAttribute"
attribute: "MinSetpointDeadBand"
response:
saveAs: MinSetpointDeadBand
- label: "Saving value for comparision in step 3a read MinHeatSetpointLimit"
PICS: TSTAT.S.A0015
command: "readAttribute"
attribute: "MinHeatSetpointLimit"
response:
saveAs: MinHeatSetpointLimit
- label:
"Saving value for comparision in step 3 reads
UnoccupiedCoolingSetpoint attribute"
command: "readAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.A0013
response:
saveAs: UnoccupiedCoolingSetpoint
- label: "Saving value for comparision in step 3a read MaxHeatSetpointLimit"
PICS: TSTAT.S.A0016
command: "readAttribute"
attribute: "MaxHeatSetpointLimit"
response:
saveAs: MaxHeatSetpointLimit
- label:
"Saving value for comparision in step3c read attribute
OccupiedHeatingSetpoint"
PICS: TSTAT.S.A0012
command: "readAttribute"
attribute: "OccupiedHeatingSetpoint"
response:
saveAs: OccupiedHeatingSetpoint
- label:
"Saving value for comparision in step3c read attribute
OccupiedCoolingSetpoint"
PICS: TSTAT.S.A0011
command: "readAttribute"
attribute: "OccupiedCoolingSetpoint"
response:
saveAs: OccupiedCoolingSetpoint
- label:
"Saving value for comparision in step 6a read attribute
AbsMinHeatSetpointLimit"
command: "readAttribute"
attribute: "AbsMinHeatSetpointLimit"
PICS: TSTAT.S.A0003
response:
saveAs: AbsMinHeatSetpointLimitValue
- label:
"Saving value for comparision in step 7a read attribute
AbsMaxHeatSetpointLimit"
command: "readAttribute"
attribute: "AbsMaxHeatSetpointLimit"
PICS: TSTAT.S.A0004
response:
saveAs: AbsMaxHeatSetpointLimitValue
- label:
"Saving value for comparision in step 8a read attribute
AbsMinCoolSetpointLimit"
command: "readAttribute"
attribute: "AbsMinCoolSetpointLimit"
PICS: TSTAT.S.A0005
response:
saveAs: AbsMinCoolSetpointLimit
- label:
"Saving value for comparision in step9a read attribute
AbsMaxCoolSetpointLimit"
command: "readAttribute"
attribute: "AbsMaxCoolSetpointLimit"
PICS: TSTAT.S.A0006
response:
saveAs: AbsMaxCoolSetpointLimit
#Using saved values when optional attributes are available
- label: "Read attribute OccupiedCoolingSetpoint from the DUT"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018
command: "readAttribute"
attribute: "OccupiedCoolingSetpoint"
response:
constraints:
type: int16s
minValue: MinCoolSetpointLimit
maxValue: MaxCoolSetpointLimit
#Using hard coded values when optional attributes are not available
- label:
"Reads OccupiedCoolingSetpoint attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018
response:
constraints:
type: int16s
minValue: 1600
maxValue: 3200
- label:
"Writes a value back that is different but valid for
OccupiedCoolingSetpoint attribute"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
arguments:
value: 2500
- label:
"Reads it back again to confirm the successful write of
OccupiedCoolingSetpoint attribute"
command: "readAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
response:
value: 2500
- label:
"Writes OccupiedCoolingSetpoint to value below the
MinCoolSetpointLimit"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01 && !TSTAT.S.A0017
arguments:
value: 30
response:
error: CONSTRAINT_ERROR
#MinCoolSetPointLimit might be negative if not checked before decrement
- label:
"Writes OccupiedCoolingSetpoint to value below the
MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
#2 Test Harness Client attempts to write OccupiedCoolingSetpoint below the MinCoolSetpointLimit and confirms that the device does not accept the value.
./chip-tool thermostat write occupied-cooling-setpoint 1000 1 1
On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87) for the value which is below of the MinCoolSetpointLimit
[1676028984.901635][19375:19377] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676028984.901706][19375:19377] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
[1676028984.901895][19375:19377] CHIP:EM: <<< [E:18153i M:141749864 (Ack:137408936)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
[1676028984.901980][19375:19377] CHIP:IN: (S) Sending msg 141749864 on secure session with LSID: 58847
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes OccupiedCoolingSetpoint to value above the
MaxCoolSetpointLimit"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01 && !TSTAT.S.A0017
arguments:
value: 4000
response:
error: CONSTRAINT_ERROR
- label:
"Writes OccupiedCoolingSetpoint to value above the
MaxCoolSetpointLimit"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01 && TSTAT.S.A0017
arguments:
value: MaxCoolSetpointLimit + 1000
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint
attribute"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01 && !TSTAT.S.A0017
arguments:
value: 3200
- label:
"Writes the limit of MaxCoolSetpointLimit to OccupiedCoolingSetpoint
attribute"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01 && TSTAT.S.A0017
arguments:
value: MaxCoolSetpointLimit
- label:
"Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint
attribute"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01 && !TSTAT.S.F05 && !TSTAT.S.A0017
arguments:
value: 1600
- label:
"Writes the limit of MinCoolSetpointLimit to OccupiedCoolingSetpoint
attribute"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01 && !TSTAT.S.F05 && TSTAT.S.A0017
arguments:
value: MinCoolSetpointLimit
#LowerLimit = Max(MinCoolSetpointLimit,(OccupiedHeatingSetpoint + MinSetpointDeadBand)) not possible in YAML
- label:
"Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit,
(OccupiedHeatingSetpoint + MinSetpointDeadBand)) to
OccupiedCoolingSetpoint attribute when Auto is enabled"
PICS: TSTAT.S.F05 && TSTAT.S.A0011 && PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
Test Harness Client then attempts to write OccupiedCoolingSetpoint to both of the limits of LowerLimit(1600) & MaxCoolSetpointLimit(3200) and confirms that the device does accept the value. See also Note 5.
./chip-tool thermostat write occupied-cooling-setpoint 1600 1 1
On TH(chip-tool) verify that DUT sends a success response
[1676029009.026653][19381:19383] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676029009.026688][19381:19383] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
[1676029009.026776][19381:19383] CHIP:EM: <<< [E:29492i M:142792974 (Ack:241003612)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
#Using saved values when optional attributes are available
- label:
"Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016
response:
constraints:
type: int16s
minValue: MinHeatSetpointLimit
maxValue: MaxHeatSetpointLimit
#Using hard coded values when optional attributes are not available
- label:
"Reads OccupiedHeatingSetpoint attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00 && !TSTAT.S.A0015 && !TSTAT.S.A0016
response:
constraints:
type: int16s
minValue: 700
maxValue: 3000
- label:
"Writes a value back that is different but valid for
OccupiedHeatingSetpoint attribute"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
arguments:
value: 2100
- label:
"Reads it back again to confirm the successful write of
OccupiedHeatingSetpoint attribute"
command: "readAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
response:
value: 2100
- label:
"Writes OccupiedHeatingSetpoint to value below the
MinHeatSetpointLimit"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00 && !TSTAT.S.A0015
arguments:
value: 100
response:
error: CONSTRAINT_ERROR
#MinHeatSetpointLimit might be negative if not checked before decrement
- label:
"Writes OccupiedHeatingSetpoint to value below the
MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
#1. Test Harness Client attempts to write OccupiedHeatingSetpoint below the MinHeatSetpointLimit and confirms that the device does not accept the value
./chip-tool thermostat write occupied-heating-setpoint 500 1 1
On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87)
[1676029113.651245][19392:19394] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676029113.651285][19392:19394] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
[1676029113.651397][19392:19394] CHIP:EM: <<< [E:43315i M:59735604 (Ack:107613834)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes OccupiedHeatingSetpoint to value above the
MaxHeatSetpointLimit"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00 && !TSTAT.S.A0016
arguments:
value: 4010
response:
error: CONSTRAINT_ERROR
- label:
"Writes OccupiedHeatingSetpoint to value above the
MaxHeatSetpointLimit"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00 && TSTAT.S.A0016
arguments:
value: MaxHeatSetpointLimit + 1000
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00 && !TSTAT.S.F05 && !TSTAT.S.A0016
arguments:
value: 3000
- label:
"Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00 && !TSTAT.S.F05 && TSTAT.S.A0016
arguments:
value: MaxHeatSetpointLimit
- label:
"Writes the limit of MaxHeatSetpointLimit to OccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F05 && !TSTAT.S.A0015
arguments:
value: 3000
response:
error: CONSTRAINT_ERROR
#UpperLimit = Min(MaxHeatSetpointLimit,(OccupiedCoolingSetpoint - MinSetpointDeadBand)) not possible in YAML
- label:
"Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit,
(OccupiedCoolingSetpoint - MinSetpointDeadBand)) to
OccupiedHeatingSetpoint attribute when Auto is enabled"
PICS:
TSTAT.S.F05 && TSTAT.S.A0011 && TSTAT.S.A0012 && PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
Test Harness Client then attempts to write OccupiedHeatingSetpoint to both of the limits of MinHeatSetpointLimit(700) & UpperLimit(3000) and confirms that the device does accept the value.
./chip-tool thermostat write occupied-heating-setpoint 3000 1 1
On TH(chip-tool) verify that DUT sends a success response
1676029222.303920][19403:19405] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676029222.303955][19403:19405] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
[1676029222.304055][19403:19405] CHIP:EM: <<< [E:236i M:251820549 (Ack:138263425)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10
./chip-tool thermostat write occupied-heating-setpoint 700 1 1
On TH(chip-tool) verify that DUT sends a success response
[1678943387.942204][770598:770600] CHIP:DMG: StatusIB =
[1678943387.942212][770598:770600] CHIP:DMG: {
[1678943387.942220][770598:770600] CHIP:DMG: status = 0x00 (SUCCESS),
[1678943387.942228][770598:770600] CHIP:DMG: },
[1678943387.942236][770598:770600] CHIP:DMG:
[1678943387.942243][770598:770600] CHIP:DMG: },
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00 && !TSTAT.S.A0015
arguments:
value: 700
- label:
"Writes the limit of MinHeatSetpointLimit to OccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00 && TSTAT.S.A0015
arguments:
value: MinHeatSetpointLimit
- label:
"Reads UnoccupiedCoolingSetpoint attribute from Server DUT and
verifies that the value is within range"
command: "readAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018
response:
constraints:
type: int16s
minValue: MinCoolSetpointLimit
maxValue: MaxCoolSetpointLimit
- label:
"Reads UnoccupiedCoolingSetpoint attribute from Server DUT and
verifies that the value is within range"
command: "readAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.A0018
response:
constraints:
type: int16s
minValue: 1600
maxValue: 3200
- label:
"Writes a value back that is different but valid for
UnoccupiedCoolingSetpoint attribute"
command: "writeAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01
arguments:
value: 2500
- label:
"Reads it back again to confirm the successful write of
UnoccupiedCoolingSetpoint attribute"
command: "readAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01
response:
value: 2500
- label:
"Writes UnoccupiedCoolingSetpoint to value below the
MinCoolSetpointLimit"
command: "writeAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017
arguments:
value: 500
response:
error: CONSTRAINT_ERROR
#MinCoolSetpointLimit might be negative if not checked before decrement
- label:
"Writes UnoccupiedCoolingSetpoint to value below the
MinCoolSetpointLimit"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
#1. Test Harness Client attempts to write OccupiedHeatingSetpoint below the MinHeatSetpointLimit and confirms that the device does not accept the value
./chip-tool thermostat write unoccupied-cooling-setpoint 500 1 1
On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87)
[1676029263.842915][19409:19411] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676029263.842943][19409:19411] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
[1676029263.843052][19409:19411] CHIP:EM: <<< [E:47350i M:72320003 (Ack:188090912)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes UnoccupiedCoolingSetpoint to value above the
MaxCoolSetpointLimit"
command: "writeAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0018
arguments:
value: 4010
response:
error: CONSTRAINT_ERROR
- label:
"Writes UnoccupiedCoolingSetpoint to value above the
MaxCoolSetpointLimit"
command: "writeAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0018
arguments:
value: MaxCoolSetpointLimit + 1000
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0018 && !TSTAT.S.F05
arguments:
value: 3200
- label:
"Writes the limit of MaxCoolSetpointLimit to UnoccupiedCoolingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05
arguments:
value: MaxCoolSetpointLimit
#LowerLimit = Max(MinCoolSetpointLimit,(UnoccupiedCoolingSetpoint + MinSetpointDeadBand)) not possible in YAML
- label:
"Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit,
(UnoccupiedCoolingSetpoint + MinSetpointDeadBand)) to
UnoccupiedCoolingSetpoint attribute"
PICS:
TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0013 && TSTAT.S.F05 &&
PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
below mentioned the example command to verify
./chip-tool thermostat write unoccupied-cooling-setpoint 2000 1 1
On TH(chip-tool) verify that DUT sends a success response. As its an optional attribute, we are not getting expected result
[1676029365.250210][19420:19422] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676029365.250263][19420:19422] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE)
[1676029365.250403][19420:19422] CHIP:EM: <<< [E:16230i M:267641165 (Ack:117850882)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
[1676029365.250467][19420:19422] CHIP:IN: (S) Sending msg 267641165 on secure session with LSID: 45606
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && !TSTAT.S.F05
arguments:
value: 1600
- label:
"Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && !TSTAT.S.A0017 && TSTAT.S.F05
arguments:
value: 1600
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of MinCoolSetpointLimit to UnoccupiedCoolingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedCoolingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.F05
arguments:
value: MinCoolSetpointLimit
#Using saved values when optional attributes are available
- label:
"Reads UnoccupiedHeatingSetpoint attribute from Server DUT and
verifies that the value is within range"
command: "readAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016
response:
constraints:
type: int16s
minValue: MinHeatSetpointLimit
maxValue: MaxHeatSetpointLimit
#Using hardcoded values when optional attributes are not available
- label:
"Reads UnoccupiedHeatingSetpoint attribute from Server DUT and
verifies that the value is within range"
command: "readAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015 && !TSTAT.S.A0016
response:
constraints:
type: int16s
minValue: 700
maxValue: 3000
- label:
"Writes a value back that is different but valid for
UnoccupiedHeatingSetpoint attribute"
command: "writeAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00
arguments:
value: 2500
- label:
"Reads it back again to confirm the successful write of
UnoccupiedHeatingSetpoint attribute"
command: "readAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00
response:
value: 2500
- label:
"Writes UnoccupiedHeatingSetpoint to value below the
MinHeatSetpointLimit"
command: "writeAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015
arguments:
value: 100
response:
error: CONSTRAINT_ERROR
#MinHeatSetpointLimit might be negative if not checked before decrement
- label:
"Writes UnoccupiedHeatingSetpoint to value below the
MinHeatSetpointLimit"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
#1. Test Harness Client attempts to write UnoccupiedHeatingSetpoint below the MinHeatSetpointLimit and confirms that the device does not accept the value
./chip-tool thermostat write unoccupied-heating-setpoint 500 1 1
On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87). As its an optional attribute, we are not getting expected result
[1676029557.268065][19431:19433] CHIP:DMG: }
[1676029557.268220][19431:19433] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676029557.268290][19431:19433] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE)
[1676029557.268470][19431:19433] CHIP:EM: <<< [E:8458i M:31631638 (Ack:115187982)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes UnoccupiedHeatingSetpoint to value above the
MaxHeatSetpointLimit"
command: "writeAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016
arguments:
value: 4010
response:
error: CONSTRAINT_ERROR
- label:
"Writes UnoccupiedHeatingSetpoint to value above the
MaxHeatSetpointLimit"
command: "writeAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0016
arguments:
value: MaxHeatSetpointLimit + 1000
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016 && !TSTAT.S.F05
arguments:
value: 3000
- label:
"Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05
arguments:
value: MaxHeatSetpointLimit
- label:
"Writes the limit of MaxHeatSetpointLimit to UnoccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0016 && TSTAT.S.F05
arguments:
value: 3000
response:
error: CONSTRAINT_ERROR
#UpperLimit = Min(MaxHeatSetpointLimit,(UnoccupiedCoolingSetpoint - MinSetpointDeadBand)) not possible in YAML
- label:
"Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit,
(UnoccupiedCoolingSetpoint - MinSetpointDeadBand)) to
UnoccupiedHeatingSetpoint attribute when Auto is enabled."
PICS:
TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0013 && TSTAT.S.F05 &&
PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
below mentioned the example command to verify
./chip-tool thermostat write unoccupied-heating-setpoint 2000 1 1
On TH(chip-tool) verify that DUT sends a success response. As its an optional attribute, we are not getting expected result
[1676029629.242182][19437:19439] CHIP:DMG: }
[1676029629.242250][19437:19439] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676029629.242280][19437:19439] CHIP:TOO: Response Failure: IM Error 0x00000586: General error: 0x86 (UNSUPPORTED_ATTRIBUTE)
[1676029629.242366][19437:19439] CHIP:EM: <<< [E:51650i M:149591010 (Ack:214538556)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
[1676029629.242402][19437:19439] CHIP:IN: (S) Sending msg 149591010 on secure session with LSID: 6132
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && !TSTAT.S.A0015
arguments:
value: 700
- label:
"Writes the limit of MinHeatSetpointLimit to UnoccupiedHeatingSetpoint
attribute"
command: "writeAttribute"
attribute: "UnoccupiedHeatingSetpoint"
PICS: TSTAT.S.F02 && TSTAT.S.F00 && TSTAT.S.A0015
arguments:
value: MinHeatSetpointLimit
#Using saved values when optional attributes are available
- label:
"Reads MinHeatSetpointLimit attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016 && TSTAT.S.A0003
response:
constraints:
type: int16s
minValue: AbsMinHeatSetpointLimitValue
maxValue: MaxHeatSetpointLimit
#Using hard coded values when optional attributes are not available
- label:
"Reads MinHeatSetpointLimit attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0016 && !TSTAT.S.A0003
response:
constraints:
type: int16s
minValue: 700
maxValue: 3000
- label:
"Writes a value back that is different but valid for
MinHeatSetpointLimit attribute"
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015
arguments:
value: 800
- label:
"Reads it back again to confirm the successful write of
MinHeatSetpointLimit attribute"
command: "readAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015
response:
value: 800
- label: "Writes a value back that is different but violates the deadband"
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.A0015 && TSTAT.S.F05
arguments:
value: 2000
response:
error: CONSTRAINT_ERROR
- label:
"Writes MinHeatSetpointLimit to value below the
AbsMinHeatSetpointLimit "
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0003
arguments:
value: 100
response:
error: CONSTRAINT_ERROR
#AbsMinHeatSetpointLimit might be negative if not checked before decrement
- label:
"Writes MinHeatSetpointLimit to value below the
AbsMinHeatSetpointLimit "
PICS:
TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0003 && PICS_SKIP_SAMPLE_APP
verification: |
#1. Test Harness Client attempts to write MinHeatSetpointLimit below the AbsMinHeatSetpointLimit and confirms that the device does not accept the value.
./chip-tool thermostat write min-heat-setpoint-limit 300 1 1
On TH (chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87)
[1676029705.839179][19450:19452] CHIP:DMG: }
[1676029705.839253][19450:19452] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676029705.839287][19450:19452] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
[1676029705.839411][19450:19452] CHIP:EM: <<< [E:34538i M:185292291 (Ack:127655640)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
[1676029705.839456][19450:19452] CHIP:IN: (S) Sending msg 185292291 on secure session with LSID: 61694
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes MinHeatSetpointLimit to value above the
AbsMaxHeatSetpointLimit "
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0016
arguments:
value: 4050
response:
error: CONSTRAINT_ERROR
- label:
"Writes MinHeatSetpointLimit to value above the
AbsMaxHeatSetpointLimit "
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0016
arguments:
value: MaxHeatSetpointLimit + 1000
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of MaxHeatSetpointLimit to MinHeatSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05 && !TSTAT.S.A0016
arguments:
value: 3000
- label:
"Writes the limit of MaxHeatSetpointLimit to MinHeatSetpointimit
attribute"
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.F05 && TSTAT.S.A0016
arguments:
value: MaxHeatSetpointLimit
#UpperLimit = Min(MaxHeatSetpointLimit,(MinCoolSetpointLimit - MinSetpointDeadBand)) not possible in YAML
- label:
"Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(MaxHeatSetpointLimit,
(MinCoolSetpointLimit - MinSetpointDeadBand)) to MinHeatSetpointLimit
attribute when Auto is enabled"
PICS:
TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.F05 && TSTAT.S.A0005 &&
PICS_SKIP_SAMPLE_APP
verification: |
Test Harness Client then attempts to write MinHeatSetpointLimit to both of the limits of AbsMinHeatSetpointLimit & UpperLimit and confirms that the device does accept the value.
below is an exaple command.
./chip-tool thermostat write min-heat-setpoint-limit 1200 1 1
On TH(chip-tool) verify that DUT sends a success response
[1676029742.329801][19458:19460] CHIP:DMG: }
[1676029742.329846][19458:19460] CHIP:DMG:
[1676029742.329883][19458:19460] CHIP:DMG: StatusIB =
[1676029742.329922][19458:19460] CHIP:DMG: {
[1676029742.329962][19458:19460] CHIP:DMG: status = 0x00 (SUCCESS),
[1676029742.330001][19458:19460] CHIP:DMG: },
[1676029742.330040][19458:19460] CHIP:DMG:
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && !TSTAT.S.A0003
arguments:
value: 700
- label:
"Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.A0003
arguments:
value: AbsMinHeatSetpointLimitValue
#Using saved values when optional attributes are available
- label:
"Reads MaxHeatSetpointLimit attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "MaxHeatSetpointLimit"
PICS:
TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004 &&
TSTAT.S.A0016
response:
constraints:
type: int16s
minValue: MinHeatSetpointLimit
maxValue: AbsMaxHeatSetpointLimitValue
#Using hard coded values when optional attributes are not available
- label:
"Reads MaxHeatSetpointLimit attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "MaxHeatSetpointLimit"
PICS:
" TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && !TSTAT.S.A0004 &&
!TSTAT.S.A0016 "
response:
constraints:
type: int16s
minValue: 700
maxValue: 3000
- label:
"Writes the limit of AbsMinHeatSetpointLimit to MinHeatSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015
arguments:
value: 700
- label:
"Writes the limit of AbsMaxHeatSetpointLimit to MinHeatSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.A0015 && TSTAT.S.F05
arguments:
value: 3000
response:
error: CONSTRAINT_ERROR
- label:
"Writes a value back that is different but valid for
MaxHeatSetpointLimit attribute"
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05
arguments:
value: 2900
- label:
"Reads it back again to confirm the successful write of
MaxHeatSetpointLimit attribute"
command: "readAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05
response:
value: 2900
- label:
"Writes MaxHeatSetpointLimit to value below the
AbsMinHeatSetpointLimit "
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0015
arguments:
value: 100
response:
error: CONSTRAINT_ERROR
#MinHeatSetpointLimit might be negative if not checked before decrement
- label:
"Writes MaxHeatSetpointLimit to value below the MinHeatSetpointLimit"
PICS:
TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0015 && PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
#1. Test Harness Client attempts to write MaxHeatSetpointLimit below the MinHeatSetpointLimit and confirms that the device does not accept the value.
./chip-tool thermostat write max-heat-setpoint-limit 100 1 1
On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87)
[1676029976.380552][19475:19477] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676029976.380598][19475:19477] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
[1676029976.380705][19475:19477] CHIP:EM: <<< [E:10254i M:97110781 (Ack:264765613)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes MaxHeatSetpointLimit to value above the
AbsMaxHeatSetpointLimit "
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0004
arguments:
value: 4000
response:
error: CONSTRAINT_ERROR
- label:
"Writes MaxHeatSetpointLimit to value above the
AbsMaxHeatSetpointLimit "
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0004
arguments:
value: AbsMaxHeatSetpointLimitValue + 1000
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && !TSTAT.S.A0004
arguments:
value: 3000
- label:
"Writes the limit of AbsMaxHeatSetpointLimit to MaxHeatSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.F05 && TSTAT.S.A0004
arguments:
value: AbsMaxHeatSetpointLimitValue
#UpperLimit = Min(AbsMaxHeatSetpointLimit,(MaxCoolSetpointLimit - MinSetpointDeadBand)) not possible in YAML
- label:
"Writes If TSTAT.S.F05(AUTO) UpperLimit = Min(AbsMaxHeatSetpointLimit,
(MaxCoolSetpointLimit - MinSetpointDeadBand)) to MaxHeatSetpointLimit
attribute"
PICS:
TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.F05 && TSTAT.S.A0018 &&
PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation
Test Harness Client then attempts to write MaxHeatSetpointLimit to both of the limits of MinHeatSetpointLimit & UpperLimit and confirms that the device does accept the value.
below is an examble command
./chip-tool thermostat write max-heat-setpoint-limit 2000( Consider the different value but valid4) 1 1
On TH(chip-tool) verify that DUT sends a success response
[1676030018.852009][19481:19483] CHIP:DMG: Cluster = 0x201,
[1676030018.852054][19481:19483] CHIP:DMG: Attribute = 0x0000_0016,
[1676030018.852094][19481:19483] CHIP:DMG: }
[1676030018.852138][19481:19483] CHIP:DMG:
[1676030018.852178][19481:19483] CHIP:DMG: StatusIB =
[1676030018.852218][19481:19483] CHIP:DMG: {
[1676030018.852258][19481:19483] CHIP:DMG: status = 0x00 (SUCCESS),
[1676030018.852297][19481:19483] CHIP:DMG: },
[1676030018.852337][19481:19483] CHIP:DMG:
[1676030018.852370][19481:19483] CHIP:DMG: },
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes the limit of MinHeatSetpointLimit to MaxHeatSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0016 && !TSTAT.S.A0015
arguments:
value: 700
- label:
"Writes the limit of MinHeatSetpointLimit to MaxHeatSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0016 && TSTAT.S.A0015
arguments:
value: MinHeatSetpointLimit
#Using saved values when optional attributes are available
- label:
"Reads MinCoolSetpointLimit attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 && TSTAT.S.A0005
response:
constraints:
type: int16s
minValue: AbsMinCoolSetpointLimit
maxValue: MaxCoolSetpointLimit
#Using hard coded values when optional attributes are not available
- label:
"Reads MinCoolSetpointLimit attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018 && !TSTAT.S.A0005
response:
constraints:
type: int16s
minValue: 1600
maxValue: 3200
- label:
"Writes a value back that is different but valid for
MinCoolSetpointLimit attribute"
command: "writeAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017
arguments:
value: 2000
- label:
"Reads it back again to confirm the successful write of
MinCoolSetpointLimit attribute"
command: "readAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017
response:
value: 2000
- label:
"Writes MinCoolSetpointLimit to value below the
AbsMinCoolSetpointLimit "
command: "writeAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005
arguments:
value: 500
response:
error: CONSTRAINT_ERROR
#AbsMinCoolSetpointLimit might be negative if not checked before decrement
- label:
"Writes MinCoolSetpointLimit to value below the
AbsMinCoolSetpointLimit"
PICS:
TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 && PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
#1. Test Harness Client then attempts to write MinCoolSetpointLimit below the AbsMinCoolSetpointLimit and confirms that the device does not accept the value.
./chip-tool thermostat write min-cool-setpoint-limit 400 1 1
On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87)
[1676030095.274876][19495:19497] CHIP:DMG: }
[1676030095.274936][19495:19497] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676030095.274965][19495:19497] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
[1676030095.275097][19495:19497] CHIP:EM: <<< [E:51146i M:60043723 (Ack:28649429)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit "
command: "writeAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018
arguments:
value: 4000
response:
error: CONSTRAINT_ERROR
- label:
"Writes MinCoolSetpointLimit to value above the MaxCoolSetpointLimit "
command: "writeAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018
arguments:
value: MaxCoolSetpointLimit + 1000
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0018
arguments:
value: 3200
- label:
"Writes the limit of MaxCoolSetpointLimit to MinCoolSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018
arguments:
value: MaxCoolSetpointLimit
- label:
"Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && !TSTAT.S.A0005 && !TSTAT.S.F05
arguments:
value: 1600
- label:
"Writes the limit of AbsMinCoolSetpointLimit to MinCoolSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0005 && !TSTAT.S.F05
arguments:
value: AbsMinCoolSetpointLimit
#LowerLimit = Max(AbsMinCoolSetpointLimit,(MinHeatSetpointLimit + MinSetpointDeadBand)) not possible in YAML
- label:
"Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(AbsMinCoolSetpointLimit,
(MinHeatSetpointLimit + MinSetpointDeadBand)) to MinCoolSetpointLimit
attribute"
PICS:
TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0015 && TSTAT.S.F05 &&
PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
Test Harness Client then attempts to write MinCoolSetpointLimit to both of the limits of LowerLimit & MaxCoolSetpointLimit and confirms that the device does accept the value.
./chip-tool thermostat write min-cool-setpoint-limit 1600 1 1
On TH(chip-tool) verify that DUT sends a success response
[1678947233.814534][773656:773658] CHIP:DMG:
[1678947233.814541][773656:773658] CHIP:DMG: StatusIB =
[1678947233.814548][773656:773658] CHIP:DMG: {
[1678947233.814555][773656:773658] CHIP:DMG: status = 0x00 (SUCCESS),
[1678947233.814562][773656:773658] CHIP:DMG: },
[1678947233.814570][773656:773658] CHIP:DMG:
[1678947233.814576][773656:773658] CHIP:DMG: },
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
#Using saved values when optional attributes are available
- label:
"Reads MaxCoolSetpointLimit attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && TSTAT.S.A0006
response:
constraints:
type: int16s
minValue: MinCoolSetpointLimit
maxValue: AbsMaxCoolSetpointLimit
#Using hard coded values when optional attributes are not available
- label:
"Reads MaxCoolSetpointLimit attribute from Server DUT and verifies
that the value is within range"
command: "readAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && !TSTAT.S.A0006
response:
constraints:
type: int16s
minValue: 1600
maxValue: 3200
- label:
"Writes a value back that is different but valid for
MaxCoolSetpointLimit attribute"
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05
arguments:
value: 2000
- label:
"Reads it back again to confirm the successful write of
MaxCoolSetpointLimit attribute"
command: "readAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.F05
response:
value: 2000
- label:
"Writes MaxCoolSetpointLimit to value below the
AbsMinCoolSetpointLimit "
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017
arguments:
value: 500
response:
error: CONSTRAINT_ERROR
#AbsMinCoolSetpointLimit might be negative if not checked before decrement
- label:
"Writes MaxCoolSetpointLimit to value below the
AbsMinCoolSetpointLimit"
PICS:
TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
#1. Test Harness Client attempts to write MaxCoolSetpointLimit below the MinCoolSetpointLimit and confirms that the device does not accept the value.
./chip-tool thermostat write max-cool-setpoint-limit 100 1 1
On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87)
[1676030395.441963][19525:19527] CHIP:DMG: }
[1676030395.442028][19525:19527] CHIP:DMG: WriteClient moving to [AwaitingDe]
[1676030395.442059][19525:19527] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR)
[1676030395.442147][19525:19527] CHIP:EM: <<< [E:35527i M:176995637 (Ack:93643096)] (S) Msg TX to 1:0000000000000001 [E8D5] --- Type 0000:10 (SecureChannel:StandaloneAck)
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit "
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0006
arguments:
value: 4000
response:
error: CONSTRAINT_ERROR
- label:
"Writes MaxCoolSetpointLimit to value above the MaxCoolSetpointLimit "
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0006
arguments:
value: AbsMaxCoolSetpointLimit + 1000
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of AbsMaxCoolSetpointLimit to MaxCoolSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0006
arguments:
value: 3200
- label:
"Writes the limit of AbsMaxCoolSetpointLimit to MaxCoolSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0006
arguments:
value: AbsMaxCoolSetpointLimit
- label:
"Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && !TSTAT.S.F05
arguments:
value: 1600
- label:
"Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && !TSTAT.S.A0017 && TSTAT.S.F05
arguments:
value: 1600
response:
error: CONSTRAINT_ERROR
- label:
"Writes the limit of MinCoolSetpointLimit to MaxCoolSetpointLimit
attribute"
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0017 && !TSTAT.S.F05
arguments:
value: MinCoolSetpointLimit
#LowerLimit = Max(MinCoolSetpointLimit,(MaxHeatSetpointLimit + MinSetpointDeadBand)) not possible in YAML
- label:
"Writes If TSTAT.S.F05(AUTO) LowerLimit = Max(MinCoolSetpointLimit,
(MaxHeatSetpointLimit + MinSetpointDeadBand)) to MaxCoolSetpointLimit
attribute"
PICS:
TSTAT.S.F01 && TSTAT.S.A0018 && TSTAT.S.A0016 && TSTAT.S.F05 &&
PICS_SKIP_SAMPLE_APP
verification: |
Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation.
Test Harness Client then attempts to write MaxCoolSetpointLimit to both of the limits of LowerLimit & AbsMaxCoolSetpointLimit and confirms that the device does accept the value.
below is an example command
./chip-tool thermostat write max-cool-setpoint-limit 2000 1 1
On TH verify that DUT sends a success response
[1678947558.840324][773890:773892] CHIP:DMG:
[1678947558.840331][773890:773892] CHIP:DMG: StatusIB =
[1678947558.840339][773890:773892] CHIP:DMG: {
[1678947558.840347][773890:773892] CHIP:DMG: status = 0x00 (SUCCESS),
[1678947558.840354][773890:773892] CHIP:DMG: },
[1678947558.840362][773890:773892] CHIP:DMG:
[1678947558.840369][773890:773892] CHIP:DMG: },
cluster: "LogCommands"
command: "UserPrompt"
arguments:
values:
- name: "message"
value: "Please enter 'y' after success"
- name: "expectedValue"
value: "y"
- label: "Writes (sets back) default value of MinHeatSetpointLimit"
command: "writeAttribute"
attribute: "MinHeatSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0015
arguments:
value: 700
- label: "Writes (sets back)default value of MaxHeatSetpointLimit"
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05
arguments:
value: 3000
- label: "Writes MaxHeatSetpointLimit That meets the deadband of 2.5C"
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0016 && !TSTAT.S.F05
arguments:
value: 2950
- label: "Writes (sets back) default value of MinCoolSetpointLimit"
command: "writeAttribute"
attribute: "MinCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0017
arguments:
value: 1600
- label: "Writes (sets back) default value of MaxCoolSetpointLimit"
command: "writeAttribute"
attribute: "MaxCoolSetpointLimit"
PICS: TSTAT.S.F01 && TSTAT.S.A0018
arguments:
value: 3200
- label:
"Reads MinSetpointDeadBand attribute from Server DUT and verifies that
the value is within range"
command: "readAttribute"
attribute: "MinSetpointDeadBand"
PICS: TSTAT.S.F05
response:
constraints:
type: int8s
minValue: 0
maxValue: 25
- label:
"Writes a value back that is different but valid for
MinSetpointDeadBand attribute"
command: "writeAttribute"
attribute: "MinSetpointDeadBand"
PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
arguments:
value: 5
- label:
"Reads it back again to confirm the successful write of
MinSetpointDeadBand attribute"
command: "readAttribute"
attribute: "MinSetpointDeadBand"
PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
response:
value: 5
- label: "Writes the value below MinSetpointDeadBand"
command: "writeAttribute"
attribute: "MinSetpointDeadBand"
PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
arguments:
value: -1
response:
error: CONSTRAINT_ERROR
- label: "Writes the value above MinSetpointDeadBand "
command: "writeAttribute"
attribute: "MinSetpointDeadBand"
PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
arguments:
value: 30
response:
error: CONSTRAINT_ERROR
- label: "Writes the min limit of MinSetpointDeadBand"
command: "writeAttribute"
attribute: "MinSetpointDeadBand"
PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
arguments:
value: 0
- label: "Writes the max limit of MinSetpointDeadBand"
command: "writeAttribute"
attribute: "MinSetpointDeadBand"
PICS: TSTAT.S.F05 && TSTAT.S.M.MinSetpointDeadBandWritable
arguments:
value: 25
- label:
"Reads ControlSequenceOfOperation from Server DUT and verifies that
the value is valid"
command: "readAttribute"
attribute: "ControlSequenceOfOperation"
PICS: TSTAT.S.F00 || TSTAT.S.F01
response:
constraints:
type: enum8
minValue: 0
maxValue: 5
#Uncomment once anyOf is supported
#- label:
# "Reads ControlSequenceOfOperation from Server DUT, if TSTAT.S.F01 is
# true"
# command: "readAttribute"
# attribute: "ControlSequenceOfOperation"
# PICS: TSTAT.S.F01 && !TSTAT.S.F00
# response:
# constraints:
# anyOf: [0, 1]
#- label:
# "Reads ControlSequenceOfOperation from Server DUT, if TSTAT.S.F00 is
# true"
# command: "readAttribute"
# attribute: "ControlSequenceOfOperation"
# PICS: TSTAT.S.F00 && !TSTAT.S.F01
# response:
# constraints:
# anyOf: [2, 3]
#- label:
# "Reads ControlSequenceOfOperation from Server DUT, if both TSTAT.S.F01
# and TSTAT.S.F01 are true"
# command: "readAttribute"
# attribute: "ControlSequenceOfOperation"
# PICS: TSTAT.S.F00 && TSTAT.S.F01
# response:
# constraints:
# anyOf: [4, 5]
- label:
"Write Attribute command for ControlSequenceOfOperation with a new
valid value"
command: "writeAttribute"
attribute: "ControlSequenceOfOperation"
PICS: TSTAT.S.F00 || TSTAT.S.F01
arguments:
value: 2
- label: "Read it back again to confirm the successful write"
command: "readAttribute"
attribute: "ControlSequenceOfOperation"
PICS: TSTAT.S.F00 || TSTAT.S.F01
response:
value: 2
- label:
"Writes MaxHeatSetpointLimit attribute to default value of 2950 to
meet deadband constraint"
command: "writeAttribute"
attribute: "MaxHeatSetpointLimit"
PICS: TSTAT.S.F00 && TSTAT.S.A0015 && TSTAT.S.F05
arguments:
value: 2950
- label: "Sets OccupiedCoolingSetpoint to default value"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
arguments:
value: 2600
- label: "Sets OccupiedHeatingSetpoint to default value"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
arguments:
value: 2000
- label: "Sends SetpointRaise Command Heat Only"
PICS: TSTAT.S.F00
command: "SetpointRaiseLower"
arguments:
values:
- name: "Mode"
value: 0
- name: "Amount"
value: -30
- label:
"Reads back OccupiedHeatingSetpoint to confirm the success of the
write"
command: "readAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
response:
value: 1700
- label: "Sets OccupiedHeatingSetpoint to default value"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
arguments:
value: 2000
- label: "Sends SetpointRaise Command Heat Only"
PICS: TSTAT.S.F00
command: "SetpointRaiseLower"
arguments:
values:
- name: "Mode"
value: 0
- name: "Amount"
value: 30
- label:
"Reads back OccupiedHeatingSetpoint to confirm the success of the
write"
command: "readAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
response:
value: 2300
- label: "Sends SetpointRaise Command Cool Only"
PICS: TSTAT.S.F01
command: "SetpointRaiseLower"
arguments:
values:
- name: "Mode"
value: 1
- name: "Amount"
value: -30
- label:
"Reads back OccupiedCoolingSetpoint to confirm the success of the
write"
command: "readAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
response:
value: 2300
- label: "Sets OccupiedCoolingSetpoint to default value"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
arguments:
value: 2600
- label: "Sends SetpointRaise Command Cool Only"
PICS: TSTAT.S.F01
command: "SetpointRaiseLower"
arguments:
values:
- name: "Mode"
value: 1
- name: "Amount"
value: 30
- label:
"Reads back OccupiedCoolingSetpoint to confirm the success of the
write"
command: "readAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
response:
value: 2900
- label: "Sets OccupiedCoolingSetpoint to default value"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
arguments:
value: 2600
- label: "Sets OccupiedHeatingSetpoint to default value"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
arguments:
value: 2000
- label: "Sends SetpointRaise Command Heat & Cool"
PICS: TSTAT.S.F00 || TSTAT.S.F01
command: "SetpointRaiseLower"
arguments:
values:
- name: "Mode"
value: 2
- name: "Amount"
value: -30
- label:
"Reads back OccupiedCoolingSetpoint to confirm the success of the
write"
command: "readAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
response:
value: 2300
- label:
"Reads back OccupiedHeatingSetpoint to confirm the success of the
write"
command: "readAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
response:
value: 1700
- label: "Sets OccupiedCoolingSetpoint to default value"
command: "writeAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
arguments:
value: 2600
- label: "Sets OccupiedHeatingSetpoint to default value"
command: "writeAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
arguments:
value: 2000
- label: "Sends SetpointRaise Command Heat & Cool"
PICS: TSTAT.S.F00 || TSTAT.S.F01
command: "SetpointRaiseLower"
arguments:
values:
- name: "Mode"
value: 2
- name: "Amount"
value: 30
- label:
"Reads back OccupiedCoolingSetpoint to confirm the success of the
write"
command: "readAttribute"
attribute: "OccupiedCoolingSetpoint"
PICS: TSTAT.S.F01
response:
value: 2900
- label:
"Reads back OccupiedHeatingSetpoint to confirm the success of the
write"
command: "readAttribute"
attribute: "OccupiedHeatingSetpoint"
PICS: TSTAT.S.F00
response:
value: 2300