Smart Home Skills
CLI-JAW에서 직접 물리적 환경을 제어하세요. Smart Home 스킬은 AI 어시스턴트와 IoT 기기 사이의 간극을 연결하여, 자연어 명령으로 Philips Hue 조명과 Spotify 재생을 관리할 수 있게 해줍니다.
개요
CLI-JAW에는 인기 있는 기기 생태계에 각각의 API를 통해 연결하는 두 가지 Smart Home 스킬이 기본 탑재되어 있습니다. 두 스킬 모두 MCP(Model Context Protocol) 서버로 구현되어 있으며, 에이전트가 관련 요청을 감지하면 필요 시 로드됩니다.
| 스킬 | 대상 | 프로토콜 | 인증 | 설명 |
|---|---|---|---|---|
openhue | Philips Hue Bridge | Hue API v2 (REST) | Bridge API 키 | Hue 네트워크의 조명, 방, 장면, 일정을 제어합니다 |
spotify-player | Spotify | Spotify Web API | OAuth 2.0 PKCE | Spotify 재생을 제어하고 검색, 대기열 관리, 재생/일시정지/건너뛰기를 수행합니다 |
openhue — Philips Hue 제어
openhue 스킬은 로컬 네트워크에 있는 Philips Hue Bridge와 통신합니다. 개별 조명, 방, 구역, 장면을 제어할 수 있는 MCP 도구를 제공합니다.
기능
| 도구 | 설명 | 예시 |
|---|---|---|
get_lights | 모든 조명과 현재 상태를 목록으로 표시 | 밝기, 색상, 켜짐/꺼짐 상태 조회 |
set_light | 단일 조명 제어 | 켜기, 밝기 설정, 색상 변경 |
get_rooms | Bridge에 정의된 방 목록 표시 | 거실, 침실, 사무실 |
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는 스킬 매칭 시스템을 통해 요청을 라우팅합니다:
- 에이전트가 해당 의도를 Smart Home 명령으로 인식합니다
openhueMCP 서버가 로드됩니다 (아직 실행 중이 아닌 경우)- 에이전트가 적절한 도구를 호출합니다 (예:
set_room에on: true) - Hue Bridge가 명령을 실행하고 업데이트된 상태를 반환합니다
- 에이전트가 자연어로 동작 완료를 확인해 줍니다
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 설정
- Spotify Developer Dashboard에 접속하세요
- 리다이렉트 URI를
http://localhost:8888/callback으로 설정하여 새 앱을 만드세요 - Client ID와 Client Secret을 설정 파일에 복사하세요
- 처음 사용할 때 CLI-JAW가 Spotify 인증을 위한 브라우저 창을 엽니다
- 승인 후 리프레시 토큰이 로컬에 캐시되어 이후 세션에서 사용됩니다
자연어 예시
"음악 틀어줘"— 재생 재개"재즈 음악 틀어줘"— 재즈 음악 검색 및 재생"다음 곡으로 넘겨줘"— 다음 트랙으로 건너뛰기"볼륨 좀 줄여줘"— 볼륨 낮추기"지금 뭐 듣고 있어?"— 현재 재생 정보 표시"이 노래 반복 재생해줘"— 현재 트랙 반복 재생"셔플 켜줘"— 셔플 모드 활성화"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_IP | openhue | 예 | Philips Hue Bridge의 로컬 IP 주소 |
OPENHUE_API_KEY | openhue | 예 | Bridge 링크 버튼을 통해 생성된 API 키 |
SPOTIFY_CLIENT_ID | spotify-player | 예 | Spotify Developer Dashboard의 OAuth Client ID |
SPOTIFY_CLIENT_SECRET | spotify-player | 예 | Spotify Developer Dashboard의 OAuth Client Secret |
SPOTIFY_REDIRECT_URI | spotify-player | 예 | OAuth 리다이렉트 URI (Dashboard 설정과 일치해야 함) |