🏠 智能家居控制系统
欢迎来到您的个人智能家居自动化中心!此项目允许您通过简单的MCP(模型上下文协议)服务器控制所有智能设备。无论你是想调暗灯光、打开空调,还是疯狂观看你最喜欢的Netflix系列,这个系统都能满足你的需求。
这有什么作用
将其视为智能家居的大脑。这是一个MCP服务器,可以连接到你家周围的各种设备,让你通过自然语言命令来控制它们。你可以在一个地方控制灯、风扇、空调,甚至你的智能电视!
系统使用MQTT在设备之间进行实时通信,并持久存储所有设备状态,因此即使在重新启动后也会记住您的设置。
🚀 快速设置
先决条件
- Python 3.11或更高版本
- 安装ADB(安卓调试桥)用于电视控制
- 可选:MQTT代理在本地主机上运行
安装
- 克隆此存储库
- 安装依赖项:
uv sync- 创建一个
.env包含您的身份验证凭据的文件:
AUTH_TOKEN=your_secret_token_here
MY_NUMBER=your_validation_number- 运行服务器:
python smart_home_server.py服务器将于启动 http://0.0.0.0:8002 你准备好了!
🏡 支持设备
标准智能设备
- 光 -控制功率和亮度
- 粉丝 -调整速度设置
- 空调 -设定温度
- 烟囱 -更改操作模式
智能电视(安卓电视/谷歌电视)
- 通过ADB实现完全远程控制
- 应用程序发布(Netflix、YouTube)
- 内容搜索和播放
- 音量和导航控制
🛠️ 可用工具
以下是你可以用这个系统做的一切:
基本设备控制
turn_on_device(room, device_name)
打开智能家居中的任何设备。适用于灯光、风扇、空调,应有尽有!
turn_off_device(room, device_name)
关闭设备。非常简单——与打开它们相反。
set_device_value(room, device_name, key, value)
这就是魔法发生的地方!调整特定设置,如:
- 灯光亮度:
set_device_value("bedroom", "light1", "brightness", "80") - 风扇转速:
set_device_value("livingroom", "fan1", "speed", "3") - 空调温度:
set_device_value("bedroom", "ac1", "temperature", "22")
get_device_state(room, device_name)
检查特定设备的情况-它是否打开?当前的亮度是多少?温度?
get_all_states()
全面了解您家中的每台设备。非常适合一次检查一切。
电视控制-基本功能
tv_volume_up(room, device_name) & tv_volume_down(room, device_name)
调整电视音量。系统也会跟踪当前音量水平。
tv_mute(room, device_name)
在电视上切换静音。再次点击可取消静音。
tv_open_app(room, device_name, app)
在电视上启动应用程序。目前支持:
netflix-打开Netflixyoutube-打开YouTubehome-转到主屏幕
tv_navigate(room, device_name, direction)
浏览电视界面:
back-返回一个屏幕home-返回主屏幕
check_tv_connection(room, device_name)
测试您的电视是否已连接并响应。非常适合故障排除!
电视设置和管理
add_tv_device(room, device_name, ip_address, port=5555)
将新的智能电视添加到您的系统中。您需要电视的IP地址(在电视的网络设置中找到)。
例子: add_tv_device("livingroom", "main_tv", "192.168.1.100")
update_tv_config(room, device_name, ip_address, port=5555)
更新现有电视的网络设置。当您的电视获得新的IP地址时很有用。
remove_tv_device(room, device_name)
从系统中完全删除电视。
list_tv_devices()
查看所有已配置的电视、其IP地址和连接状态。
load_tv_configs_from_file()
从JSON文件加载电视配置。您可以手动编辑 device_states/tv_config.json 一次添加多台电视。
高级电视内容控制
tv_search_and_play(room, device_name, query, app="netflix")
皇冠上的宝石!搜索内容并自动开始播放。
示例:
tv_search_and_play("livingroom", "tv", "Breaking Bad", "netflix")tv_search_and_play("bedroom", "tv", "funny cat videos", "youtube")
tv_search_content(room, device_name, query, app="netflix")
搜索内容,但不自动播放。让您先浏览结果。
play_netflix_show(room, device_name, show_name)
专用的Netflix功能,具有增强的错误处理和故障排除提示。
play_youtube_video(room, device_name, search_query)
当界面棘手时,使用智能回退进行YouTube特定搜索。
youtube_voice_search_workaround(room, device_name, search_query)
使用语音搜索界面的替代YouTube搜索。有时比常规搜索效果更好。
电视遥控器
tv_send_text(room, device_name, text)
在电视搜索字段或任何文本输入中键入文本。
tv_press_key(room, device_name, key)
按下特定的遥控按钮:
- 导航:
up,down,left,right,enter,back,home - 媒体:
play,pause,search,menu
youtube_navigate_and_play(room, device_name, direction="down", steps=1)
手动浏览YouTube的界面。自动搜索失败时有用。
故障排除
diagnose_tv_connection(room, device_name)
对电视连接运行全面的诊断:
- 网络连接测试
- ADB连接状态
- 设备响应性检查
- 应用可用性验证
非常适合弄清楚为什么你的电视没有响应!
🏠 客房管理
该系统对房间名称很聪明。您可以使用自然变化:
- “客厅”、“起居室”、“休息室”、“大厅”→ 都变成了“客厅”
- “卧室”、“主卧室”→ 都变成了“卧室”
- “厨房”、“烹饪室”→ 两者都变成了“厨房”
📁 项目结构
hack/
├── smart_home_server.py # Main MCP server with all the tools
├── devices.py # Device classes (Light, Fan, AC, TV, etc.)
├── registry.py # Initial device registry
├── device_states/ # Persistent storage
│ ├── devices.json # Device states
│ └── tv_config.json # TV configurations
└── main.py # Entry point🔧 技术细节
- MCP服务器:在具有承载令牌身份验证的FastMCP上运行
- 电视控制:使用ADB(Android调试桥)进行智能电视交互
- MQTT支持:可选的MQTT代理集成,用于实时更新
- 永久存储:所有设备状态都会自动保存
- 错误处理:全面的错误消息和连接诊断
🤔 电视设置故障排除
如果您的android TV未连接:
- 启用开发人员选项:转到设置→ 关于→ 继续按“构建”,直到开发人员模式激活
- 启用USB调试:在“开发人员选项”中,启用“USB调试”
- 启用网络ADB:打开“网络ADB”(如果可用)
- 检查IP地址:确保您拥有正确的IP(设置→ 每次启动电视时,网络和IP都会发生变化
- 同一网络:确保您的电视和服务器位于同一WiFi网络上
- 使用诊断:运行
diagnose_tv_connection()详细故障排除
🎉 入门指南
- 从灯和风扇等基本设备开始
- 使用添加电视
add_tv_device() - 测试连接
check_tv_connection() - 尝试一些基本的电视控制,如音量或打开应用程序
- 尝试内容搜索和播放
- 使用
diagnose_tv_connection()如果你遇到问题
就是这样!你现在有一个完整的智能家居控制系统,可以处理从调暗灯光到寻找下一个狂欢手表系列的所有事情。享受您的自动化家居! 🏡✨
