스마트 홈 온도 조절기 가이드

action.devices.types.THERMOSTAT - 온도 조절기는 설정값 및 모드로 온도를 관리하는 기기입니다. 이렇게 하면 온도 타겟과 모드 및 설정 (예: 높은/낮음)만 있을 수 있는 난방기 및 AC 장치와는 구분됩니다.

이 유형은 기기에 온도 조절기 아이콘과 일부 관련 동의어 및 별칭을 가져오고 있음을 나타냅니다.

이 유형의 기기는 온도를 제어하지만 일부 냉난방 장치에는 다른 제어 기능과 고온/저온 모드가 있지만 온도 제어는 없습니다.

기기 기능

서비스에서 지원해야 하는 속성 및 상태, EXECUTE 및 QUERY 응답을 빌드하는 방법과 같은 구현 세부정보는 해당하는 trait 문서를 참고하세요.

필수 trait

기기에 적용되는 경우 이러한 특성과 명령어가 필요합니다. 기기가 이러한 특성을 지원하지 않으면 QUERY 또는 EXECUTE 응답에 functionNotSupported 오류 코드를 입력합니다. 자세한 내용은 오류 및 예외를 참고하세요.

온도 조절기 명령어는 EXECUTE 인텐트에서 자주 체이닝됩니다. 사용자가 *난방을 22도로 설정해 줘* 라고 말하면 모드 명령어 다음에 온도 설정이 표시됩니다.

품질 요구사항

  • 지연 시간: 700ms 이하여야 합니다.
  • 신뢰성: 97% 이상이어야 합니다.

기기 예: 간단한 온도 조절기

이 섹션에는 위의 기기 유형과 특성에 따라 일반적인 '온도 조절기'를 나타내는 인텐트 페이로드 예시가 포함되어 있습니다. 구현에 특성을 추가하거나 삭제하는 경우 이러한 변경사항을 반영하도록 응답을 적절하게 수정하세요.

샘플 SYNC 응답

요청
{
  "requestId": "6894439706274654512",
  "inputs": [
    {
      "intent": "action.devices.SYNC"
    }
  ]
}
응답
{
  "requestId": "6894439706274654512",
  "payload": {
    "agentUserId": "user123",
    "devices": [
      {
        "id": "123",
        "type": "action.devices.types.THERMOSTAT",
        "traits": [
          "action.devices.traits.TemperatureSetting"
        ],
        "name": {
          "name": "Simple thermostat"
        },
        "willReportState": true,
        "attributes": {
          "availableThermostatModes": [
            "off",
            "heat",
            "cool",
            "heatcool",
            "on"
          ],
          "thermostatTemperatureRange": {
            "minThresholdCelsius": 15,
            "maxThresholdCelsius": 30
          },
          "thermostatTemperatureUnit": "F"
        },
        "deviceInfo": {
          "manufacturer": "smart-home-inc",
          "model": "hs1234",
          "hwVersion": "3.2",
          "swVersion": "11.4"
        }
      }
    ]
  }
}

샘플 쿼리 응답

요청
{
  "requestId": "6894439706274654514",
  "inputs": [
    {
      "intent": "action.devices.QUERY",
      "payload": {
        "devices": [
          {
            "id": "123"
          }
        ]
      }
    }
  ]
}
응답
{
  "requestId": "6894439706274654514",
  "payload": {
    "devices": {
      "123": {
        "status": "SUCCESS",
        "online": true,
        "thermostatMode": "cool",
        "thermostatTemperatureSetpoint": 23,
        "thermostatTemperatureAmbient": 25.1,
        "thermostatHumidityAmbient": 45.3
      }
    }
  }
}

샘플 EXECUTE 명령어

ThermostatTemperatureSetpoint

명령어 매개변수에 관한 자세한 내용은 action.devices.traits.TemperatureSetting 참조를 확인하세요.

요청
{
  "requestId": "6894439706274654516",
  "inputs": [
    {
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [
          {
            "devices": [
              {
                "id": "123"
              }
            ],
            "execution": [
              {
                "command": "action.devices.commands.ThermostatTemperatureSetpoint",
                "params": {
                  "thermostatTemperatureSetpoint": 22
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
응답
{
  "requestId": "6894439706274654516",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "thermostatMode": "cool",
          "thermostatTemperatureSetpoint": 22,
          "thermostatTemperatureAmbient": 25.1
        }
      }
    ]
  }
}

ThermostatTemperatureSetRange

명령어 매개변수에 관한 자세한 내용은 action.devices.traits.TemperatureSetting 참조를 확인하세요.

요청
{
  "requestId": "6894439706274654518",
  "inputs": [
    {
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [
          {
            "devices": [
              {
                "id": "123"
              }
            ],
            "execution": [
              {
                "command": "action.devices.commands.ThermostatTemperatureSetRange",
                "params": {
                  "thermostatTemperatureSetpointHigh": 26,
                  "thermostatTemperatureSetpointLow": 22
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
응답
{
  "requestId": "6894439706274654518",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "thermostatMode": "heatcool",
          "thermostatTemperatureSetpointHigh": 26,
          "thermostatTemperatureSetpointLow": 22,
          "thermostatTemperatureAmbient": 25.1
        }
      }
    ]
  }
}

ThermostatSetMode

명령어 매개변수에 관한 자세한 내용은 action.devices.traits.TemperatureSetting 참조를 확인하세요.

요청
{
  "requestId": "6894439706274654520",
  "inputs": [
    {
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [
          {
            "devices": [
              {
                "id": "123"
              }
            ],
            "execution": [
              {
                "command": "action.devices.commands.ThermostatSetMode",
                "params": {
                  "thermostatMode": "heatcool"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
응답
{
  "requestId": "6894439706274654520",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "thermostatMode": "heatcool",
          "thermostatTemperatureSetpointHigh": 26,
          "thermostatTemperatureSetpointLow": 22,
          "thermostatTemperatureAmbient": 25.1
        }
      }
    ]
  }
}

기기 오류

오류 및 예외의 전체 목록을 참조하세요.
  • inHeatOrCool - 기기가 명시적인 난방 또는 냉방 모드이므로 난방/냉방/범위 명령어가 실패했습니다.
  • inHeatCool - 기기가 난방 또는 냉방 상태이므로 난방 또는 냉방 명령에 실패했습니다.
  • lockedToRange - 기기가 온도 범위 또는 모드로 잠겨 있으며, 요청한 변경을 수행할 수 없습니다.
  • rangeTooClose - 냉난방 범위의 온도 지점이 서로 너무 가깝습니다.