【笔记】通过命令行控制所有连接米家的智能家居

前言

通过命令行控制所有连接米家的智能家居

下载项目

1
2
git clone [email protected]:Yonsm/MiService.git
cd MiService

下载依赖

1
2
pip3 install MiService
pip3 install .

进入生成的脚本目录

  • 目录名为scripts开头,具体以实际为准

我用的是Python3.11版本,所以目录是scripts-3.11

1
cd build/scripts-3.11

通过环境变量登录小米账号

<username>:小米账号
<password>:密码

1
2
export MI_USER=<username>
export MI_PASS=<password>

查看当前绑定的所有智能家居

1
python3 micli.py list
1
2
3
4
5
6
7
8
[
{
"name": "",
"model": "",
"did": "",
"token": ""
}
]

通过环境变量配置小爱音响的did

<did>:刚刚获取的小爱音箱did

1
export MI_DID=<did>

查看文档

<model>:刚刚获取的想要操作的智能家居model

1
python3 micli.py spec <model>

对智能家具进行操作

  • xiaomi.wifispeaker.lx06为例

通过action参数发送JSON字符串请求

<did>:刚刚获取的小爱音箱did
<text>:语音输出的内容

1
2
3
4
5
6
7
8
9
10
# 播放
python3 micli.py action '{"did":"<did>","siid":3,"aiid":1}'
# 暂停
python3 micli.py action '{"did":"<did>","siid":3,"aiid":2}'
# 上一首
python3 micli.py action '{"did":"<did>","siid":3,"aiid":3}'
# 下一首
python3 micli.py action '{"did":"<did>","siid":3,"aiid":4}'
# 说指定文本
python3 micli.py action '{"did":"<did>","siid":5,"aiid":1,"in":["<text>"]}'

通过指令编号发送请求

<num>:音量,范围[0,100]
<text>:语音输出的内容
<command>:一个命令

1
2
3
4
5
6
7
8
9
10
11
# 查看音量
python3 micli.py 2-1
# 设置音量
python3 micli.py 2=<num>
# 说指定文本
python3 micli.py 5 <text>
python3 micli.py 5-1 <text>
# 执行一个命令
micli.py 5-5 <command> false
# 执行一个命令(静默)
micli.py 5-5 <command> true

完成

参考文献

Yonsm/MiService
知乎——飞鸿踏雪