1. 获取设备Token
- 使用
Xiaomi-cloud-tokens-extractor
获取设备token
Xiaomi-cloud-tokens-extractor
开源地址:https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor
- 下载代码以及运行
这步可以在当前的电脑上运行,也可以在Termux上运行。
$ startalpine
$ git clone https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor.git
$ cd Xiaomi-cloud-tokens-extractor
$ python3 token_extractor.py
执行到这步时会跳出需要输入小米ID和密码,Server选cn。
如果账号密码正确的话就能获取到设备对应的token以及其它重要信息了。
Username (email or user ID):
xxxx
Password:
xxxx
Server (one of: cn, de, us, ru, tw, sg, in, i2) Leave empty to check all available:
cn
Logging in...
Logged in.
Devices found for server "cn":
---------
NAME: Mijia Smart Rice Cooker Mini 2
ID: xxx
MAC: xxxxx
IP: xxxx
TOKEN: xxx
MODEL: xxx
---------
Press ENTER to finish
2. 通过python-miio 操控设备
- 打开米家,找到自己的设备,并且进入网络信息查看设备的IP地址。
- 第一章节拿到了设备的
token
,使用miiocli
命令查看设备基本信息(这步执行有点慢,需要等一会,不要着急…)
$ miiocli device --ip <ip> --token <token> info
Model: chunmi.cooker.eh3
Hardware version: esp32
Firmware version: 2.2.0_0010
可以看到,米家智能小饭煲2的设备基本信息打印出来了。
- 试一下python脚本
import miio
dev=miio.device.Device("192.168.2.103","5de109637c4cb89a65edee621612ed1b")
dev.info()
正常会返回设备信息
- 试着获取它的状态
d = miio.cooker.Cooker(<ip>,<token>)
d.status()
Found an unsupported model 'chunmi.cooker.eh3' for class 'Cooker'. If this is working for you, please open an issue at https://github.com/rytilahti/python-miio/
好吧,发现还不支持,于是乎我提交了issue:https://github.com/rytilahti/python-miio/issues/1670
希望有用到这个设备的朋友,进去支持一下
- 既然小饭煲不行,那就试下小米智能插座2 蓝牙网关版,结果可行
import miio
ip = "192.168.101.30"
token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
dev = miio.device.Device(ip, token)
dev.info()
# 关闭智能插座
dev.send("set_properties", [{'did': '<device id>', 'siid': 2, 'piid': 1, 'value': False}])
# 开启智能插座
dev.send("set_properties", [{'did': '<device id>', 'siid': 2, 'piid': 1, 'value': True}])
# 获取智能插座状态
status=dev.send("get_properties", [{'did': '<device id >', 'siid': 2, 'piid': 1}])
print(status)
- 在网上找了一些资料,发现不一定要python-miio 支持也能通过发送源数据控制设备。