如何用MiService实现小米设备智能控制?
MiService是一个基于Python的开源项目,专门用于与小米云服务交互,从而实现对小米智能设备的远程控制。它的核心优势在于提供了简单易用的命令行接口,让用户无需深入了解复杂的小米云协议就能轻松操作设备。无论是查询设备状态、调整设备参数,还是执行特定动作,MiService都能高效完成。该项目特别适合智能家居爱好者、开发者以及需要对小米设备进行自动化控制的用户,是实现智能家居控制的得力工具。
揭示MiService的核心价值
MiService作为一款小米设备控制工具,其核心价值体现在以下几个方面。首先,它打破了小米设备控制的技术壁垒,让普通用户也能通过简单的命令实现对设备的掌控。其次,它提供了丰富的设备操作功能,涵盖了查询、设置、执行动作等多个维度。再者,它支持自动化场景配置,能够根据用户需求定制设备的响应规则,让智能家居更加智能化。
场景化指南:掌控小米设备的实用步骤
获取设备控制权
场景描述:刚入手小米智能设备,想要通过MiService进行控制,第一步就是获取设备的控制权,将设备与MiService建立连接。
需求分析:要控制设备,必须先让MiService能够识别并连接到设备,这就需要进行账号配置和设备发现。
解决方案:
- 首先获取项目源码并安装依赖,打开终端,执行以下命令:
git clone https://gitcode.com/gh_mirrors/mi/MiService
cd MiService
pip3 install aiohttp aiofiles
该命令的功能是从指定仓库克隆MiService项目到本地,并安装项目所需的aiohttp和aiofiles依赖包,为后续操作做好准备。
- 配置小米账号信息,在终端中输入:
export MI_USER=您的小米账号用户名
export MI_PASS=您的小米账号密码
这里的“MI_USER”和“MI_PASS”是环境变量,分别用于存储小米账号的用户名和密码,MiService会通过这些信息进行小米云服务的认证。
- 发现并获取设备列表,执行命令:
python3 micli.py list
此命令会向小米云服务查询当前账号下绑定的所有设备,并以列表形式展示设备名称、设备ID(DID)和设备类型等信息,方便用户选择要操作的设备。
查询设备运行状态
场景描述:想知道家中智能灯的当前亮度、智能空调的运行模式等设备状态信息,以便根据实际情况进行调整。
需求分析:需要一种方式能够快速获取设备的各项属性状态,了解设备当前的运行情况。
解决方案: 设置要查询的设备ID,在终端输入:
export MI_DID=您的设备ID
然后执行查询命令:
python3 micli.py 2-1
这里的“2”代表服务标识,用于指定要查询的设备服务类型;“1”代表属性编号,对应具体的设备属性。通过这个命令,用户可以获取到设备对应属性的当前值,如下表所示:
| 设备属性 | 属性值 |
|---|---|
| 亮度 | 80% |
| 运行模式 | 自动 |
调整设备运行参数
场景描述:晚上看电视时,觉得智能灯亮度太高,想要将其调暗一些。
需求分析:需要能够对设备的属性参数进行设置,以改变设备的运行状态。
解决方案: 执行设置命令:
python3 micli.py 2=#60
此命令中“2”是服务标识,“#60”表示将对应属性的值设置为60。执行后,智能灯的亮度就会调整到60%,满足用户在特定场景下的需求。
执行设备特定动作
场景描述:早上起床时,希望小爱音箱能够播报当天的天气情况。
需求分析:需要让设备执行特定的动作,以实现个性化的功能。
解决方案: 执行动作命令:
python3 micli.py 5 今天天气晴朗,气温25度。
这里的“5”是动作对应的服务标识,后面的文本是要让小爱音箱播报的内容。执行后,小爱音箱就会按照指定内容进行播报。
常见场景模板库
离家模式
场景描述:用户准备出门,希望一键关闭家中所有灯光、关闭空调,并启动扫地机器人进行清扫。
需求分析:需要同时对多个设备执行不同的操作,实现一键式的场景切换。
解决方案:
- 关闭灯光,执行命令:
python3 micli.py 灯光设备ID 2=#0(假设“2”是灯光亮度的服务标识,“0”表示关闭)。 - 关闭空调,执行命令:
python3 micli.py 空调设备ID 3=#0(假设“3”是空调开关的服务标识,“0”表示关闭)。 - 启动扫地机器人,执行命令:
python3 micli.py 扫地机器人设备ID 4=1(假设“4”是扫地机器人启动的服务标识,“1”表示启动)。
影院模式
场景描述:晚上想看电影,希望自动调暗灯光、关闭窗帘、打开投影仪。
需求分析:需要协调多个设备的状态,营造适合观影的环境。
解决方案:
- 调暗灯光,执行命令:
python3 micli.py 灯光设备ID 2=#30(将灯光亮度设为30%)。 - 关闭窗帘,执行命令:
python3 micli.py 窗帘设备ID 5=1(假设“5”是窗帘关闭的服务标识,“1”表示关闭)。 - 打开投影仪,执行命令:
python3 micli.py 投影仪设备ID 6=1(假设“6”是投影仪开关的服务标识,“1”表示打开)。
睡眠模式
场景描述:准备睡觉,希望关闭除床头灯外的所有灯光,将空调温度调至26度,并开启空气净化器。
需求分析:需要对不同设备进行选择性操作,满足睡眠时的舒适需求。
解决方案:
- 关闭主灯,执行命令:
python3 micli.py 主灯设备ID 2=#0。 - 保留床头灯并调暗,执行命令:
python3 micli.py 床头灯设备ID 2=#20(将亮度设为20%)。 - 调整空调温度,执行命令:
python3 micli.py 空调设备ID 7=#26(假设“7”是空调温度的服务标识)。 - 开启空气净化器,执行命令:
python3 micli.py 空气净化器设备ID 8=1(假设“8”是空气净化器开关的服务标识,“1”表示开启)。
进阶技巧:提升小米设备控制效率
环境变量持久化
场景描述:每次使用MiService都需要重新设置小米账号信息,非常繁琐。
需求分析:希望账号信息能够持久保存,避免重复设置。
解决方案:将账号信息添加到系统的环境配置文件中,如.bashrc或.zshrc。打开配置文件,添加以下内容:
export MI_USER=您的小米账号用户名
export MI_PASS=您的小米账号密码
保存后执行source .bashrc(或对应的配置文件)使设置生效,之后每次打开终端都会自动加载账号信息。
设备名称替代设备ID
场景描述:设备ID一串数字难以记忆,使用起来不方便。
需求分析:希望能够通过设备名称来指定要操作的设备。
解决方案:在执行命令时,使用设备名称代替设备ID,例如:python3 micli.py "客厅灯" 2=#50,这样就可以直接通过设备的名称来进行操作,更加直观便捷。
批量查询设备属性
场景描述:需要同时了解多个设备的多项属性状态,逐个查询效率太低。
需求分析:实现一次查询多个设备的多个属性,提高操作效率。
解决方案:使用特定的命令格式进行批量查询,例如:python3 micli.py 设备ID1,设备ID2 2-1,3-2,其中“设备ID1,设备ID2”表示要查询的设备,“2-1,3-2”表示要查询的属性(服务标识-属性编号),执行后会同时返回多个设备的多个属性信息。
社区贡献指南
MiService的发展离不开社区用户的积极贡献。如果您在使用过程中发现了bug、有新的功能需求或者想要优化现有功能,欢迎参与到项目的优化中来。
项目仓库地址:https://gitcode.com/gh_mirrors/mi/MiService
PR提交路径:首先fork项目到自己的仓库,进行修改后,通过仓库的Pull Request功能提交您的代码,项目维护者会对您的贡献进行审核。我们期待您的参与,共同让MiService变得更加完善。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0150- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111