# 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
