Smart Home Skills

CLI-JAW에서 직접 물리적 환경을 제어하세요. Smart Home 스킬은 AI 어시스턴트와 IoT 기기 사이의 간극을 연결하여, 자연어 명령으로 Philips Hue 조명과 Spotify 재생을 관리할 수 있게 해줍니다.

개요

CLI-JAW에는 인기 있는 기기 생태계에 각각의 API를 통해 연결하는 두 가지 Smart Home 스킬이 기본 탑재되어 있습니다. 두 스킬 모두 MCP(Model Context Protocol) 서버로 구현되어 있으며, 에이전트가 관련 요청을 감지하면 필요 시 로드됩니다.

스킬대상프로토콜인증설명
openhuePhilips Hue BridgeHue API v2 (REST)Bridge API 키Hue 네트워크의 조명, 방, 장면, 일정을 제어합니다
spotify-playerSpotifySpotify Web APIOAuth 2.0 PKCESpotify 재생을 제어하고 검색, 대기열 관리, 재생/일시정지/건너뛰기를 수행합니다

openhue — Philips Hue 제어

openhue 스킬은 로컬 네트워크에 있는 Philips Hue Bridge와 통신합니다. 개별 조명, 방, 구역, 장면을 제어할 수 있는 MCP 도구를 제공합니다.

기능

도구설명예시
get_lights모든 조명과 현재 상태를 목록으로 표시밝기, 색상, 켜짐/꺼짐 상태 조회
set_light단일 조명 제어켜기, 밝기 설정, 색상 변경
get_roomsBridge에 정의된 방 목록 표시거실, 침실, 사무실
set_room방 전체의 조명 제어방 전체 끄기, 30%로 어둡게
get_scenes사용 가능한 Hue 장면 목록 표시Energize, Relax, Concentrate
set_scene사전 정의된 장면 활성화거실에 "Relax" 장면 적용

설정

CLI-JAW 설정에 openhue MCP 서버를 추가하세요. Bridge IP와 API 키가 필요합니다.

{
  "mcpServers": {
    "openhue": {
      "command": "npx",
      "args": ["-y", "@openhue/mcp-server"],
      "env": {
        "OPENHUE_BRIDGE_IP": "192.168.1.100",
        "OPENHUE_API_KEY": "your-hue-api-key"
      }
    }
  }
}

Hue API 키를 얻으려면 Hue Bridge의 물리적 링크 버튼을 누른 다음 아래 명령을 실행하세요:

curl -X POST http://192.168.1.100/api \
  -d '{"devicetype":"cli-jaw#instance"}'

자연어 예시

한국어 (자연어 프롬프트)
  • "거실 불 켜줘" — 거실 조명 켜기
  • "방 불 다 꺼줘" — 침실 조명 전부 끄기
  • "불 밝기 50%로 해줘" — 밝기를 50%로 설정
  • "불 따뜻한 색으로 바꿔줘" — 조명을 따뜻한 백색으로 변경
  • "집중 모드로 불 바꿔줘" — Concentrate 장면 활성화
  • "릴렉스 씬 틀어줘" — Relax 장면 활성화
영어 예시
  • "Turn on the office lights"
  • "Dim the living room to 30%"
  • "Set all lights to warm white"
  • "Activate the Relax scene in the bedroom"
  • "Turn off all the lights"

동작 원리

"불 켜줘"와 같이 말하면, CLI-JAW는 스킬 매칭 시스템을 통해 요청을 라우팅합니다:

  1. 에이전트가 해당 의도를 Smart Home 명령으로 인식합니다
  2. openhue MCP 서버가 로드됩니다 (아직 실행 중이 아닌 경우)
  3. 에이전트가 적절한 도구를 호출합니다 (예: set_roomon: true)
  4. Hue Bridge가 명령을 실행하고 업데이트된 상태를 반환합니다
  5. 에이전트가 자연어로 동작 완료를 확인해 줍니다

spotify-player — Spotify 제어

spotify-player 스킬은 Spotify Web API에 연결하여 CLI-JAW가 음악 재생을 완전히 제어할 수 있게 합니다. 트랙 검색, 대기열 관리, 재생 제어, 플레이리스트 탐색을 지원합니다.

기능

도구설명예시
play재생 시작 또는 재개트랙, 앨범, 플레이리스트 재생
pause현재 재생 일시정지음악 일시정지
next다음 트랙으로 건너뛰기현재 곡 건너뛰기
previous이전 트랙으로 돌아가기이전 곡 다시 재생
search트랙, 앨범, 아티스트 검색"Bohemian Rhapsody" 검색
queue재생 대기열에 트랙 추가다음에 재생할 곡 추가
get_playback현재 재생 상태 조회지금 재생 중인 곡 확인
set_volume재생 볼륨 조절볼륨을 60%로 설정
get_playlists사용자 플레이리스트 목록 표시저장된 플레이리스트 탐색
set_shuffle셔플 모드 전환셔플 활성화 또는 비활성화
set_repeat반복 모드 설정트랙 반복, 컨텍스트 반복, 끄기

설정

Spotify OAuth 자격 증명과 함께 spotify-player MCP 서버를 추가하세요.

{
  "mcpServers": {
    "spotify-player": {
      "command": "npx",
      "args": ["-y", "spotify-player-mcp"],
      "env": {
        "SPOTIFY_CLIENT_ID": "your-client-id",
        "SPOTIFY_CLIENT_SECRET": "your-client-secret",
        "SPOTIFY_REDIRECT_URI": "http://localhost:8888/callback"
      }
    }
  }
}

OAuth 설정

  1. Spotify Developer Dashboard에 접속하세요
  2. 리다이렉트 URI를 http://localhost:8888/callback으로 설정하여 새 앱을 만드세요
  3. Client ID와 Client Secret을 설정 파일에 복사하세요
  4. 처음 사용할 때 CLI-JAW가 Spotify 인증을 위한 브라우저 창을 엽니다
  5. 승인 후 리프레시 토큰이 로컬에 캐시되어 이후 세션에서 사용됩니다

자연어 예시

한국어 (자연어 프롬프트)
  • "음악 틀어줘" — 재생 재개
  • "재즈 음악 틀어줘" — 재즈 음악 검색 및 재생
  • "다음 곡으로 넘겨줘" — 다음 트랙으로 건너뛰기
  • "볼륨 좀 줄여줘" — 볼륨 낮추기
  • "지금 뭐 듣고 있어?" — 현재 재생 정보 표시
  • "이 노래 반복 재생해줘" — 현재 트랙 반복 재생
  • "셔플 켜줘" — 셔플 모드 활성화
  • "BTS 노래 틀어줘" — BTS 검색 및 재생
영어 예시
  • "Play some lo-fi beats"
  • "What song is playing right now?"
  • "Skip this track"
  • "Add Blinding Lights to the queue"
  • "Set volume to 40%"
  • "Show my playlists"

복합 워크플로우

Smart Home 스킬은 서로 결합하거나 다른 CLI-JAW 기능과 함께 사용할 때 더욱 강력해집니다. 에이전트가 맥락을 이해하기 때문에 복합 명령을 자연스럽게 내릴 수 있습니다.

다중 스킬 예시
  • "영화 볼 준비 해줘" — 조명을 20%로 어둡게, Relax 장면 활성화, Spotify 일시정지
  • "작업 모드로 바꿔줘" — 조명을 Concentrate 장면으로 설정, lo-fi 플레이리스트를 낮은 볼륨으로 재생
  • "잘 준비 해줘" — 모든 조명 끄기, 음악 정지
  • "Set up movie night" — 조명과 오디오 조정을 결합
# Example: the agent interprets "영화 볼 준비 해줘" as:
1. openhue → set_room(room="Living Room", brightness=20)
2. openhue → set_scene(scene="Relax", room="Living Room")
3. spotify-player → pause()

문제 해결

문제원인해결 방법
Hue Bridge를 찾을 수 없음잘못된 IP 또는 Bridge 오프라인OPENHUE_BRIDGE_IP를 확인하고 Bridge가 동일 네트워크에 있는지 확인하세요
API 키 거부됨키 만료 또는 미생성Bridge 링크 버튼을 누르고 키를 재생성하세요
Spotify 인증 실패잘못된 자격 증명 또는 리다이렉트 URI 불일치Client ID/Secret을 확인하고 리다이렉트 URI가 정확히 일치하는지 확인하세요
활성 기기 없음Spotify에 활성 재생 기기가 없음먼저 기기에서 Spotify를 열고 명령을 다시 시도하세요
MCP 서버 시작 불가npx를 찾을 수 없거나 네트워크 문제Node.js가 설치되어 있고 npx가 PATH에 있는지 확인하세요
조명 반응이 느림Bridge까지의 네트워크 지연가능하면 Hue Bridge에 유선 연결을 사용하세요

환경 변수 참조

변수스킬필수설명
OPENHUE_BRIDGE_IPopenhuePhilips Hue Bridge의 로컬 IP 주소
OPENHUE_API_KEYopenhueBridge 링크 버튼을 통해 생성된 API 키
SPOTIFY_CLIENT_IDspotify-playerSpotify Developer Dashboard의 OAuth Client ID
SPOTIFY_CLIENT_SECRETspotify-playerSpotify Developer Dashboard의 OAuth Client Secret
SPOTIFY_REDIRECT_URIspotify-playerOAuth 리다이렉트 URI (Dashboard 설정과 일치해야 함)