{
  "pluginAlias": "SmartThingsAC-KM81",
  "pluginType": "platform",
  "singular": true,
  "schema": {
    "type": "object",
    "properties": {
      "name": { "title": "플랫폼 이름", "type": "string", "default": "SmartThings AC" },
      "clientId": { "title": "Client ID", "type": "string" },
      "clientSecret": { "title": "Client Secret", "type": "string" },
      "redirectUri": { "title": "Redirect URI", "type": "string", "default": "http://localhost:8999/oauth/callback" },

      "temperatureMin": {
        "title": "기본 목표온도 최소값(℃)",
        "type": "number",
        "default": 18,
        "description": "플랫폼 전체 기본값. 각 디바이스에서 별도로 지정하면 해당 값이 우선합니다."
      },
      "temperatureMax": {
        "title": "기본 목표온도 최대값(℃)",
        "type": "number",
        "default": 30,
        "description": "플랫폼 전체 기본값. 각 디바이스에서 별도로 지정하면 해당 값이 우선합니다."
      },
      "temperatureStep": {
        "title": "기본 목표온도 스텝(℃)",
        "type": "number",
        "default": 1,
        "description": "플랫폼 전체 기본값. 각 디바이스에서 별도로 지정하면 해당 값이 우선합니다."
      },

      "devices": {
        "title": "에어컨 목록",
        "type": "array",
        "default": [],
        "items": {
          "type": "object",
          "properties": {
            "deviceLabel":  { "title": "에어컨 이름 (SmartThings 레이블)", "type": "string", "default": "" },
            "model":        { "title": "모델명 (선택)",                  "type": "string", "default": "" },
            "serialNumber": { "title": "일련번호 (선택)",                "type": "string", "default": "" },

            "coolModeCommand": {
              "title": "HomeKit '냉방(COOL)' 전송 모드",
              "type": "string",
              "enum": ["dry", "cool"],
              "enumNames": ["제습(Dry)로 명령", "냉방(Cool)로 명령"],
              "default": "dry",
              "description": "Home에서 '냉방'을 선택했을 때 실제 에어컨에 보낼 모드"
            },
            "swingBinding": {
              "title": "스윙(Swing) 토글 ↔ 기능",
              "type": "string",
              "enum": ["windFree", "none"],
              "enumNames": ["무풍(WindFree)", "사용 안 함"],
              "default": "windFree"
            },
            "lockBinding": {
              "title": "어린이 보호용 잠금장치(Lock) 토글 ↔ 기능",
              "type": "string",
              "enum": ["autoClean", "none"],
              "enumNames": ["자동건조(Auto Clean)", "사용 안 함"],
              "default": "autoClean"
            },

            "exposeWindFreeSwitch":  { "title": "무풍 별도 스위치 노출",   "type": "boolean", "default": false },
            "exposeAutoCleanSwitch": { "title": "자동건조 별도 스위치 노출","type": "boolean", "default": false },

            "temperatureMin": {
              "title": "목표온도 최소값(℃) *개별 장치",
              "type": "number",
              "description": "비워두면 플랫폼 기본값을 사용"
            },
            "temperatureMax": {
              "title": "목표온도 최대값(℃) *개별 장치",
              "type": "number",
              "description": "비워두면 플랫폼 기본값을 사용"
            },
            "temperatureStep": {
              "title": "목표온도 스텝(℃) *개별 장치",
              "type": "number",
              "description": "비워두면 플랫폼 기본값을 사용"
            }
          },
          "required": ["deviceLabel", "coolModeCommand", "swingBinding", "lockBinding"]
        }
      }
    },
    "required": ["name", "clientId", "clientSecret", "redirectUri", "devices"]
  },

  "layout": [
    "name",
    { "type": "help", "help": "<b>인증 설정</b><br>1) Client ID, Client Secret, Redirect URI 입력 후 Homebridge 재시작<br>2) 로그에 출력되는 인증 URL로 접속해 권한 허용" },
    "clientId",
    "clientSecret",
    "redirectUri",

    { "type": "help", "help": "<b>기본 목표온도 범위/스텝 (플랫폼 전체 기본값)</b>" },
    "temperatureMin",
    "temperatureMax",
    "temperatureStep",
    { "type": "help", "help": "각 디바이스 카드에서 개별 값 지정 시, 플랫폼 기본값 대신 해당 값이 적용됩니다." },

    {
      "key": "devices",
      "type": "array",
      "title": "에어컨 목록",
      "startEmpty": true,
      "orderable": true,
      "addButtonText": "에어컨 추가",
      "arrayItemCardTitle": "deviceLabel",
      "items": [
        "devices[].deviceLabel",
        "devices[].model",
        "devices[].serialNumber",

        { "key": "devices[].coolModeCommand", "type": "select",
          "title": "HomeKit '냉방(COOL)' 전송 모드",
          "titleMap": [
            { "value": "dry",  "name": "제습(Dry)로 명령" },
            { "value": "cool", "name": "냉방(Cool)로 명령" }
          ]
        },
        { "key": "devices[].swingBinding", "type": "select",
          "title": "스윙(Swing) 토글 ↔ 기능",
          "titleMap": [
            { "value": "windFree", "name": "무풍(WindFree)" },
            { "value": "none",      "name": "사용 안 함" }
          ]
        },
        { "key": "devices[].lockBinding", "type": "select",
          "title": "어린이 보호용 잠금장치(Lock) 토글 ↔ 기능",
          "titleMap": [
            { "value": "autoClean", "name": "자동건조(Auto Clean)" },
            { "value": "none",      "name": "사용 안 함" }
          ]
        },

        { "key": "devices[].exposeWindFreeSwitch",  "type": "checkbox", "title": "무풍 별도 스위치 노출" },
        { "key": "devices[].exposeAutoCleanSwitch", "type": "checkbox", "title": "자동건조 별도 스위치 노출" },

        "devices[].temperatureMin",
        "devices[].temperatureMax",
        "devices[].temperatureStep"
      ]
    }
  ]
}

