SwitchBot空调MCP服务器
  
使用模型上下文协议(MCP)通过SwitchBot Hub 2控制空调。在Claude Desktop和Cursor等AI助手中实现空调机组的自然语言控制。
特性
- 🔌 功率控制:打开/关闭空调
- 🌡️ 温度控制:设定温度(16-30°C)
- 🔄 模式选择:自动、冷却、干燥、风扇、加热
- 💨 风扇转速控制:自动、低、中、高
- 🎮 自定义命令:访问高级功能(摇摆、涡轮、睡眠等)
- 📊 房间监控:从Hub 2获取当前温度和湿度
- 🔍 设备发现:列出所有红外设备
夜间自动化
该项目包括一个通过GitHub Actions运行的自动夜间空调控制系统。它使用人工智能根据以下因素做出明智的决策:
- 当前室温和湿度
- 外部天气状况
- 睡眠科学研究
- 您的个人喜好
睡眠科学研究
该自动化基于同行评审的睡眠研究:
| 温度范围 | 带毯子 | 不带盖子 |
|---|---|---|
| 16-18°C(60-65°F) | 最佳 | 太冷 |
| 18-20°C(65-68°F) | 极佳 | 凉爽 |
| 20-24°C(68-75°F) | 温暖(浅色床单) | 舒适 |
| >24°C(>75°F) | 太热 | 太热 |
主要发现:
- 这 机构睡眠研究基金会 推荐 18.3摄氏度(65华氏度) 作为理想的睡眠温度
- 克利夫兰诊所 建议 15-19摄氏度(60-67华氏度) 为了获得最佳睡眠
- 研究表明,在凉爽的房间(16-18°C)里用毯子睡觉可以为深度睡眠创造最佳的“小气候”
- 太热的房间比太冷的房间更容易造成睡眠障碍
来源:
运作原理
- 克朗每小时跑一次 (以色列时间22:00-07:00)
- 收集数据:室温、湿度、室外天气
- AI决定:基于睡眠科学+您的偏好
- 执行操作:通过FastMCP Cloud上的MCP服务器
- 日志到Supabase:历史和学习
看 cron/config.yaml 自定义您的偏好。
快速开始
先决条件
- SwitchBot集线器2 已配置AC遥控器
- SwitchBot API凭据 (令牌和秘密)
- Python 3.8+
安装
- 克隆存储库:
git clone https://github.com/yourusername/AirConditionMcp.git
cd AirConditionMcp- 安装依赖项:
pip install -r requirements.txt- 配置环境变量:
cp env.example .env编辑 .env 并添加您的凭据:
SWITCHBOT_TOKEN=your_token_here
SWITCHBOT_SECRET=your_secret_here
SWITCHBOT_AC_DEVICE_ID=your_device_id_here- 测试连接:
python test_connection.pyMCP配置
添加到MCP设置文件中:
光标 (%APPDATA%\.cursor\mcp.json 在Windows上):
{
"mcpServers": {
"switchbot-ac": {
"command": "python",
"args": ["path/to/AirConditionMcp/server.py"],
"env": {
"SWITCHBOT_TOKEN": "your_token_here",
"SWITCHBOT_SECRET": "your_secret_here",
"SWITCHBOT_AC_DEVICE_ID": "your_device_id_here"
}
}
}
}克劳德桌面 (~/Library/Application Support/Claude/claude_desktop_config.json 在Mac上):
{
"mcpServers": {
"switchbot-ac": {
"command": "python",
"args": ["/path/to/AirConditionMcp/server.py"],
"env": {
"SWITCHBOT_TOKEN": "your_token_here",
"SWITCHBOT_SECRET": "your_secret_here",
"SWITCHBOT_AC_DEVICE_ID": "your_device_id_here"
}
}
}
}配置后重新启动AI助手。
用法
配置后,使用自然语言控制您的空调:
"Turn on the AC at 24 degrees"
"Set AC to 22 degrees in cool mode"
"What's the room temperature?"
"Turn off the air conditioner"
"Toggle AC swing mode"
"Activate turbo cooling"可用工具
基本控制
turn_ac_on(temperature, mode, fan_speed)-通过设置打开空调turn_ac_off()-关闭空调set_ac_temperature(temperature)-更改温度set_ac_mode(mode)-更改操作模式set_ac_fan_speed(fan_speed)-更改风扇速度set_ac_all_settings(power, temperature, mode, fan_speed)-一次设置所有内容
高级功能
send_custom_ac_command(command, parameter)-发送自定义命令(摆动、加速、睡眠等)list_common_ac_commands()-列出所有可用的自定义命令get_room_temperature()-获取当前室温和湿度get_ac_devices()-列出所有红外设备get_ac_status()-获取当前交流状态(如果支持)
获取SwitchBot凭据
- 打开 Switchbot应用程序 在你的手机上
- 首选 个人资料 → 偏好设置
- 轻按 “应用程序版本” 快10倍
- 返回并选择 开发人员选项
- 复制您的 代币 和 秘密
看 SETUP_GUIDE.md 详细说明。
查找您的交流设备ID
运行测试脚本:
python test_connection.py或者在设置后使用MCP工具:
"List my SwitchBot devices"自定义命令
访问基本控制之外的高级空调功能:
"Toggle AC swing mode" # Oscillate air direction
"Activate turbo mode" # Maximum cooling power
"Enable sleep mode" # Quiet night operation
"Toggle display light" # Turn off AC display看 CUSTOM_COMMANDS.md 查看完整列表。
部署
选项1:自托管
直接运行服务器:
python server.py选项2:Docker(即将推出)
docker build -t switchbot-ac-mcp .
docker run -e SWITCHBOT_TOKEN=xxx -e SWITCHBOT_SECRET=xxx -e SWITCHBOT_AC_DEVICE_ID=xxx switchbot-ac-mcp选项3:云主机
部署到您首选的云平台。在托管服务中设置环境变量:
SWITCHBOT_TOKENSWITCHBOT_SECRETSWITCHBOT_AC_DEVICE_ID
故障排除
“未找到红外设备”
- 首先通过应用程序将您的交流遥控器添加到SwitchBot Hub 2
“401未经授权”
- 检查您的令牌和密码是否正确
- 开头或结尾没有多余的空格
“AC没有响应”
- 验证设备ID是否正确
- 确保轮毂2与空调有清晰的视线(5-10米)
- 首先在SwitchBot应用程序中进行测试
“状态显示错误信息”
- 状态反映了最后发送的命令,而不是实际的交流状态
- 在SwitchBot应用程序中启用IR解码(如果支持)
看 故障排除.md 以获得更多帮助。
API费率限制
- 每天10000个请求 每个令牌
- 每分钟约7个请求
- 如果频繁查询,请考虑缓存状态
安全
⚠️ 重要提示:
- 永远不要承诺你的
.env文件到版本控制 - 安全地存储凭据
- 在生产中使用环境变量
- 定期轮换凭据
贡献
欢迎投稿!请随时提交拉取请求。
- 克隆该仓库
- 创建功能分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推到分支(
git push origin feature/AmazingFeature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
支持
- 问题:
- SwitchBot支持: https://support.switch-bot.com/
- SwitchBot API文档: https://github.com/OpenWonderLabs/SwitchBotAPI
______________________________________________________________________
由以下材料制成❄️ 智能家居自动化
