智能家居技能
直接从 CLI-JAW 控制您的物理环境。智能家居技能在您的 AI 助手与物联网设备之间架起桥梁,让您可以使用自然语言命令管理 Philips Hue 照明和 Spotify 音乐播放。
概述
CLI-JAW 内置了两个智能家居技能,通过各自的 API 连接到主流设备生态系统。两个技能均以 MCP(Model Context Protocol)服务器的形式实现,当代理检测到相关请求时按需加载。
| 技能 | 目标设备 | 协议 | 认证方式 | 说明 |
|---|---|---|---|---|
openhue | Philips Hue Bridge | Hue API v2 (REST) | Bridge API key | 控制 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"场景应用到客厅 |
配置
将 openhue MCP 服务器添加到您的 CLI-JAW 设置中。需要提供 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 会通过其技能匹配系统路由请求:
- 代理识别出该意图是一个智能家居命令
- 加载
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-player MCP 服务器,并填入您的 Spotify OAuth 凭据。
{
"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"
组合工作流
当智能家居技能彼此结合使用,或与其他 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 配置匹配) |