mijiaAPI 1.3.5__tar.gz → 1.3.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mijiaapi-1.3.7/PKG-INFO +98 -0
- mijiaapi-1.3.7/README.md +73 -0
- {mijiaapi-1.3.5 → mijiaapi-1.3.7}/mijiaAPI/devices.py +24 -3
- {mijiaapi-1.3.5 → mijiaapi-1.3.7}/pyproject.toml +13 -1
- mijiaapi-1.3.5/PKG-INFO +0 -76
- mijiaapi-1.3.5/README.md +0 -51
- {mijiaapi-1.3.5 → mijiaapi-1.3.7}/LICENSE +0 -0
- {mijiaapi-1.3.5 → mijiaapi-1.3.7}/mijiaAPI/__init__.py +0 -0
- {mijiaapi-1.3.5 → mijiaapi-1.3.7}/mijiaAPI/apis.py +0 -0
- {mijiaapi-1.3.5 → mijiaapi-1.3.7}/mijiaAPI/login.py +0 -0
- {mijiaapi-1.3.5 → mijiaapi-1.3.7}/mijiaAPI/urls.py +0 -0
- {mijiaapi-1.3.5 → mijiaapi-1.3.7}/mijiaAPI/utils.py +0 -0
mijiaapi-1.3.7/PKG-INFO
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: mijiaAPI
|
|
3
|
+
Version: 1.3.7
|
|
4
|
+
Summary: A Python API for Xiaomi Mijia
|
|
5
|
+
License: GPLv3
|
|
6
|
+
Author: Do1e
|
|
7
|
+
Author-email: dpj.email@qq.com
|
|
8
|
+
Requires-Python: >=3.9,<4.0
|
|
9
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
10
|
+
Classifier: License :: Other/Proprietary License
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Requires-Dist: pillow (>=11.0.0,<12.0.0)
|
|
19
|
+
Requires-Dist: qrcode (>=8.0,<9.0)
|
|
20
|
+
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
|
21
|
+
Project-URL: Homepage, https://github.com/Do1e/mijia-api
|
|
22
|
+
Project-URL: Repository, https://github.com/Do1e/mijia-api
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# mijiaAPI
|
|
26
|
+
小米米家设备的api,可以使用代码直接控制米家设备的功能,[Github link](https://github.com/Do1e/mijia-api),[PyPI link](https://pypi.org/project/mijiaAPI/)。
|
|
27
|
+
|
|
28
|
+
## 安装
|
|
29
|
+
```bash
|
|
30
|
+
poetry install
|
|
31
|
+
```
|
|
32
|
+
或者
|
|
33
|
+
```bash
|
|
34
|
+
pip install mijiaAPI
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 使用
|
|
38
|
+
使用实例可以参考`demos`文件夹下的示例代码,以下是简单的使用说明
|
|
39
|
+
|
|
40
|
+
### 登录
|
|
41
|
+
|
|
42
|
+
`mijiaLogin`:登录小米账号,获取控制设备必须的`userId`, `ssecurity`, `deviceId`, `serviceToken`,方法列表:
|
|
43
|
+
* `login(username: str, password: str) -> dict`:账号密码登录,返回上述信息。**注意,目前这一方法大概率遇到手机验证码,请尽可能使用`QRlogin`。**
|
|
44
|
+
* `QRlogin() -> dict`:扫描二维码登录,返回上述信息(会在支持tty的终端打印二维码,若打印识别可查看当前文件夹下的`qr.png`)
|
|
45
|
+
|
|
46
|
+
**手动登录方法**
|
|
47
|
+
|
|
48
|
+
可以使用浏览器,手动获取`userId`, `ssecurity`, `deviceId`, `serviceToken`。当然我还是更推荐大家使用扫码登录,但大家也可以根据下述步骤了解如何获取这些信息。
|
|
49
|
+
|
|
50
|
+
打开浏览器访问 https://account.xiaomi.com/pass/serviceLogin?sid=xiaomiio&_json=true ,会得到下述信息,复制location中的url到新的界面打开:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
&&&START&&&{"serviceParam":"{\"checkSafePhone\":false,\"checkSafeAddress\":false,\"lsrp_score\":0.0}","qs":"%3Fsid%3Dxiaomiio%26_json%3Dtrue","code":70016,"description":"登录验证失败","securityStatus":0,"_sign":"0psXfr43eNI0IX6q9Suk3qWbRqU=","sid":"xiaomiio","result":"error","captchaUrl":null,"callback":"https://sts.api.io.mi.com/sts","location":"https://account.xiaomi.com/fe/service/login?_json=true&sid=xiaomiio&qs=%253Fsid%253Dxiaomiio%2526_json%253Dtrue&callback=.........","pwd":0,"child":0,"desc":"登录验证失败"}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
打开后会进入小米的登录界面(如果直接显示了`ok`,是因为保存了之前的cookie,建议使用无痕窗口重新开始上述步骤),此时需要先按下 `F12` 打开开发者工具,切换到`Network`选项卡,之后可以输入账号密码或者扫码登录。完成后页面会显示一个`ok`。
|
|
57
|
+
|
|
58
|
+
此时在网络选项卡中按下`Ctrl+F`,搜索上述所需的`userId`, `ssecurity`, `deviceId`, `serviceToken`即可。
|
|
59
|
+
|
|
60
|
+
或者筛选请求:
|
|
61
|
+
1. `https://sts.api.io.mi.com/sts`,其中的`set-cookie`中包含`userId`和`serviceToken`(`=`到`;`前止)。
|
|
62
|
+
2. `https://account.xiaomi.com/pass/serviceLoginAuth2/end`,其中的`extension-pragma`中包含`ssecurity`(`:"`到`"`前止)。
|
|
63
|
+
3. `https://account.xiaomi.com/identity/authStart`,其中的`cookie`中包含`deviceId`(`=`到`;`前止)。
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
### API
|
|
67
|
+
|
|
68
|
+
`mijiaAPI`:API的实现,使用`mijiaLogin`登录后返回的信息进行初始化
|
|
69
|
+
* `__init__(auth_data: dict)`:初始化
|
|
70
|
+
* `available -> bool`:传入的`auth_data`是否有效
|
|
71
|
+
* `get_devices_list() -> list`:获取设备列表
|
|
72
|
+
* `get_homes_list() -> list`:获取家庭列表,家庭字典中包含房间列表
|
|
73
|
+
* `get_scenes_list(home_id: str) -> list`:获取手动场景列表,在 *米家->添加->手动控制* 中设置
|
|
74
|
+
* `run_scene(scene_id: str) -> bool`:运行手动场景
|
|
75
|
+
* `get_consumable_items(home_id: str) -> list`:获取设备的耗材信息
|
|
76
|
+
* `get_devices_prop(data: list) -> list`:获取设备的属性
|
|
77
|
+
* `set_devices_prop(data: list) -> list`:设置设备的属性
|
|
78
|
+
* `data`为一个字典的列表,字典需要包含`did`, `siid`, `piid`,后面两个键可从 *https://home.miot-spec.com/spec/{model}* 中获取,其中`model`为设备的model,在设备列表中获取,如[米家台灯 1S](https://home.miot-spec.com/spec/yeelink.light.lamp4)。
|
|
79
|
+
* 网站上的方法并非全部可用,需要自行测试
|
|
80
|
+
* `run_action(data: dict) -> dict`:执行设备的action
|
|
81
|
+
* `data`为一个字典,需要包含`did`, `siid`, `aiid`,获取方法同上
|
|
82
|
+
|
|
83
|
+
### 针对设备的封装
|
|
84
|
+
|
|
85
|
+
`mijiaDevices`:使用`mijiaAPI`和设备属性字典初始化,以便更方便地调用设备属性
|
|
86
|
+
* `__init__(api: mijiaAPI, dev_info: dict. did: str = None, sleep_time: float = 0.5)`:初始化,`dev_info`为设备属性,参考[demos/dev_info_example](demos/dev_info_example),`sleep_time`为每次调用设备属性的间隔时间(注:设置属性后立刻获取属性会不符合预期,需要延迟一段时间)
|
|
87
|
+
* `set(name: str, did: str, value: Union[bool, int]) -> Union[bool, int]`:设置设备属性
|
|
88
|
+
* `get(name: str, did: str) -> Union[bool, int]`:获取设备属性
|
|
89
|
+
* v1.2.0 新增直接通过名称设置/获取属性,需要在初始化时传入`did`,详见[demos/test_devices_v2_light.py](demos/test_devices_v2_light.py)。名称中包含`-`的属性需要替换为`_`。
|
|
90
|
+
* 可以调用`get_device_info(device_model: str) -> dict`函数从[米家设备列表](https://home.miot-spec.com/)在线获取设备属性字典,详见[demos/test_get_device_info.py](demos/test_get_device_info.py)
|
|
91
|
+
|
|
92
|
+
## 致谢
|
|
93
|
+
* [janzlan/mijia-api](https://gitee.com/janzlan/mijia-api/tree/master)
|
|
94
|
+
|
|
95
|
+
## 声明
|
|
96
|
+
* 本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除。
|
|
97
|
+
* 本项目作者不对使用本项目产生的任何后果负责,请用户自行承担使用本项目的风险。
|
|
98
|
+
|
mijiaapi-1.3.7/README.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# mijiaAPI
|
|
2
|
+
小米米家设备的api,可以使用代码直接控制米家设备的功能,[Github link](https://github.com/Do1e/mijia-api),[PyPI link](https://pypi.org/project/mijiaAPI/)。
|
|
3
|
+
|
|
4
|
+
## 安装
|
|
5
|
+
```bash
|
|
6
|
+
poetry install
|
|
7
|
+
```
|
|
8
|
+
或者
|
|
9
|
+
```bash
|
|
10
|
+
pip install mijiaAPI
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 使用
|
|
14
|
+
使用实例可以参考`demos`文件夹下的示例代码,以下是简单的使用说明
|
|
15
|
+
|
|
16
|
+
### 登录
|
|
17
|
+
|
|
18
|
+
`mijiaLogin`:登录小米账号,获取控制设备必须的`userId`, `ssecurity`, `deviceId`, `serviceToken`,方法列表:
|
|
19
|
+
* `login(username: str, password: str) -> dict`:账号密码登录,返回上述信息。**注意,目前这一方法大概率遇到手机验证码,请尽可能使用`QRlogin`。**
|
|
20
|
+
* `QRlogin() -> dict`:扫描二维码登录,返回上述信息(会在支持tty的终端打印二维码,若打印识别可查看当前文件夹下的`qr.png`)
|
|
21
|
+
|
|
22
|
+
**手动登录方法**
|
|
23
|
+
|
|
24
|
+
可以使用浏览器,手动获取`userId`, `ssecurity`, `deviceId`, `serviceToken`。当然我还是更推荐大家使用扫码登录,但大家也可以根据下述步骤了解如何获取这些信息。
|
|
25
|
+
|
|
26
|
+
打开浏览器访问 https://account.xiaomi.com/pass/serviceLogin?sid=xiaomiio&_json=true ,会得到下述信息,复制location中的url到新的界面打开:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
&&&START&&&{"serviceParam":"{\"checkSafePhone\":false,\"checkSafeAddress\":false,\"lsrp_score\":0.0}","qs":"%3Fsid%3Dxiaomiio%26_json%3Dtrue","code":70016,"description":"登录验证失败","securityStatus":0,"_sign":"0psXfr43eNI0IX6q9Suk3qWbRqU=","sid":"xiaomiio","result":"error","captchaUrl":null,"callback":"https://sts.api.io.mi.com/sts","location":"https://account.xiaomi.com/fe/service/login?_json=true&sid=xiaomiio&qs=%253Fsid%253Dxiaomiio%2526_json%253Dtrue&callback=.........","pwd":0,"child":0,"desc":"登录验证失败"}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
打开后会进入小米的登录界面(如果直接显示了`ok`,是因为保存了之前的cookie,建议使用无痕窗口重新开始上述步骤),此时需要先按下 `F12` 打开开发者工具,切换到`Network`选项卡,之后可以输入账号密码或者扫码登录。完成后页面会显示一个`ok`。
|
|
33
|
+
|
|
34
|
+
此时在网络选项卡中按下`Ctrl+F`,搜索上述所需的`userId`, `ssecurity`, `deviceId`, `serviceToken`即可。
|
|
35
|
+
|
|
36
|
+
或者筛选请求:
|
|
37
|
+
1. `https://sts.api.io.mi.com/sts`,其中的`set-cookie`中包含`userId`和`serviceToken`(`=`到`;`前止)。
|
|
38
|
+
2. `https://account.xiaomi.com/pass/serviceLoginAuth2/end`,其中的`extension-pragma`中包含`ssecurity`(`:"`到`"`前止)。
|
|
39
|
+
3. `https://account.xiaomi.com/identity/authStart`,其中的`cookie`中包含`deviceId`(`=`到`;`前止)。
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### API
|
|
43
|
+
|
|
44
|
+
`mijiaAPI`:API的实现,使用`mijiaLogin`登录后返回的信息进行初始化
|
|
45
|
+
* `__init__(auth_data: dict)`:初始化
|
|
46
|
+
* `available -> bool`:传入的`auth_data`是否有效
|
|
47
|
+
* `get_devices_list() -> list`:获取设备列表
|
|
48
|
+
* `get_homes_list() -> list`:获取家庭列表,家庭字典中包含房间列表
|
|
49
|
+
* `get_scenes_list(home_id: str) -> list`:获取手动场景列表,在 *米家->添加->手动控制* 中设置
|
|
50
|
+
* `run_scene(scene_id: str) -> bool`:运行手动场景
|
|
51
|
+
* `get_consumable_items(home_id: str) -> list`:获取设备的耗材信息
|
|
52
|
+
* `get_devices_prop(data: list) -> list`:获取设备的属性
|
|
53
|
+
* `set_devices_prop(data: list) -> list`:设置设备的属性
|
|
54
|
+
* `data`为一个字典的列表,字典需要包含`did`, `siid`, `piid`,后面两个键可从 *https://home.miot-spec.com/spec/{model}* 中获取,其中`model`为设备的model,在设备列表中获取,如[米家台灯 1S](https://home.miot-spec.com/spec/yeelink.light.lamp4)。
|
|
55
|
+
* 网站上的方法并非全部可用,需要自行测试
|
|
56
|
+
* `run_action(data: dict) -> dict`:执行设备的action
|
|
57
|
+
* `data`为一个字典,需要包含`did`, `siid`, `aiid`,获取方法同上
|
|
58
|
+
|
|
59
|
+
### 针对设备的封装
|
|
60
|
+
|
|
61
|
+
`mijiaDevices`:使用`mijiaAPI`和设备属性字典初始化,以便更方便地调用设备属性
|
|
62
|
+
* `__init__(api: mijiaAPI, dev_info: dict. did: str = None, sleep_time: float = 0.5)`:初始化,`dev_info`为设备属性,参考[demos/dev_info_example](demos/dev_info_example),`sleep_time`为每次调用设备属性的间隔时间(注:设置属性后立刻获取属性会不符合预期,需要延迟一段时间)
|
|
63
|
+
* `set(name: str, did: str, value: Union[bool, int]) -> Union[bool, int]`:设置设备属性
|
|
64
|
+
* `get(name: str, did: str) -> Union[bool, int]`:获取设备属性
|
|
65
|
+
* v1.2.0 新增直接通过名称设置/获取属性,需要在初始化时传入`did`,详见[demos/test_devices_v2_light.py](demos/test_devices_v2_light.py)。名称中包含`-`的属性需要替换为`_`。
|
|
66
|
+
* 可以调用`get_device_info(device_model: str) -> dict`函数从[米家设备列表](https://home.miot-spec.com/)在线获取设备属性字典,详见[demos/test_get_device_info.py](demos/test_get_device_info.py)
|
|
67
|
+
|
|
68
|
+
## 致谢
|
|
69
|
+
* [janzlan/mijia-api](https://gitee.com/janzlan/mijia-api/tree/master)
|
|
70
|
+
|
|
71
|
+
## 声明
|
|
72
|
+
* 本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除。
|
|
73
|
+
* 本项目作者不对使用本项目产生的任何后果负责,请用户自行承担使用本项目的风险。
|
|
@@ -34,10 +34,24 @@ class DevAction(object):
|
|
|
34
34
|
return f' {self.name}: {self.desc}'
|
|
35
35
|
|
|
36
36
|
class mijiaDevices(object):
|
|
37
|
-
def __init__(self, api: mijiaAPI,
|
|
37
|
+
def __init__(self, api: mijiaAPI,
|
|
38
|
+
dev_info: Optional[dict] = None,
|
|
39
|
+
dev_name: Optional[str] = None,
|
|
38
40
|
did: Optional[str] = None,
|
|
39
41
|
sleep_time: Optional[Union[int, float]] = 0.5):
|
|
40
42
|
self.api = api
|
|
43
|
+
if dev_info is None:
|
|
44
|
+
if dev_name is None:
|
|
45
|
+
raise ValueError('Please specify the device name or device info')
|
|
46
|
+
devices_list = self.api.get_devices_list()
|
|
47
|
+
matches = [device for device in devices_list['list'] if device['name'] == dev_name]
|
|
48
|
+
if not matches:
|
|
49
|
+
raise ValueError(f"Device {dev_name} not found")
|
|
50
|
+
elif len(matches) > 1:
|
|
51
|
+
raise ValueError(f"Multiple devices named {dev_name} found")
|
|
52
|
+
else:
|
|
53
|
+
dev_info = get_device_info(matches[0]['model'])
|
|
54
|
+
did = matches[0]['did']
|
|
41
55
|
self.name = dev_info['name']
|
|
42
56
|
self.model = dev_info['model']
|
|
43
57
|
self.prop_list = {prop['name']: DevProp(prop) for prop in dev_info['properties']}
|
|
@@ -133,7 +147,7 @@ class mijiaDevices(object):
|
|
|
133
147
|
else:
|
|
134
148
|
return super().__getattr__(name)
|
|
135
149
|
|
|
136
|
-
def run_action(self, name: str, did: Optional[str] = None, value: Optional[Union[list, tuple]] = None) -> bool:
|
|
150
|
+
def run_action(self, name: str, did: Optional[str] = None, value: Optional[Union[list, tuple]] = None, **kwargs) -> bool:
|
|
137
151
|
if did is None:
|
|
138
152
|
did = self.did
|
|
139
153
|
if did is None:
|
|
@@ -145,6 +159,13 @@ class mijiaDevices(object):
|
|
|
145
159
|
method['did'] = did
|
|
146
160
|
if value is not None:
|
|
147
161
|
method['value'] = value
|
|
162
|
+
if kwargs:
|
|
163
|
+
for k, v in kwargs.items():
|
|
164
|
+
if k.startswith("_"):
|
|
165
|
+
k = k[1:]
|
|
166
|
+
if k in method:
|
|
167
|
+
raise ValueError(f'Invalid argument: {k}. Do not use arguments in ({", ".join(method.keys())})')
|
|
168
|
+
method[k] = v
|
|
148
169
|
ret = self.api.run_action(method)['code'] == 0
|
|
149
170
|
sleep(self.sleep_time)
|
|
150
171
|
return ret
|
|
@@ -197,7 +218,7 @@ def get_device_info(device_model: str) -> dict:
|
|
|
197
218
|
if item['range'] is not None:
|
|
198
219
|
item['range'] = item['range']
|
|
199
220
|
if item['name'] in properties_name:
|
|
200
|
-
item["name"] = f'{services[siid][
|
|
221
|
+
item["name"] = f'{services[siid]["name"]}-{item["name"]}'
|
|
201
222
|
properties_name.append(item['name'])
|
|
202
223
|
result['properties'].append({k: None if v == 'none' else v for k, v in item.items()})
|
|
203
224
|
if 'actions' in services[siid]:
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "mijiaAPI"
|
|
3
|
+
version = "1.3.7"
|
|
4
|
+
description = "A Python API for Xiaomi Mijia"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.9,<4.0"
|
|
7
|
+
dependencies = [
|
|
8
|
+
"pillow>=11.0.0,<12.0.0",
|
|
9
|
+
"qrcode>=8.0,<9.0",
|
|
10
|
+
"requests>=2.32.3,<3.0.0",
|
|
11
|
+
]
|
|
12
|
+
|
|
1
13
|
[tool.poetry]
|
|
2
14
|
name = "mijiaAPI"
|
|
3
|
-
version = "1.3.
|
|
15
|
+
version = "1.3.7"
|
|
4
16
|
description = "A Python API for Xiaomi Mijia"
|
|
5
17
|
authors = ["Do1e <dpj.email@qq.com>"]
|
|
6
18
|
license = "GPLv3"
|
mijiaapi-1.3.5/PKG-INFO
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.3
|
|
2
|
-
Name: mijiaAPI
|
|
3
|
-
Version: 1.3.5
|
|
4
|
-
Summary: A Python API for Xiaomi Mijia
|
|
5
|
-
License: GPLv3
|
|
6
|
-
Author: Do1e
|
|
7
|
-
Author-email: dpj.email@qq.com
|
|
8
|
-
Requires-Python: >=3.9,<4.0
|
|
9
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
10
|
-
Classifier: License :: Other/Proprietary License
|
|
11
|
-
Classifier: Operating System :: OS Independent
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
-
Requires-Dist: pillow (>=11.0.0,<12.0.0)
|
|
19
|
-
Requires-Dist: qrcode (>=8.0,<9.0)
|
|
20
|
-
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
|
21
|
-
Project-URL: Homepage, https://github.com/Do1e/mijia-api
|
|
22
|
-
Project-URL: Repository, https://github.com/Do1e/mijia-api
|
|
23
|
-
Description-Content-Type: text/markdown
|
|
24
|
-
|
|
25
|
-
# mijiaAPI
|
|
26
|
-
小米米家设备的api,可以使用代码直接控制米家设备的功能,[Github link](https://github.com/Do1e/mijia-api),[PyPI link](https://pypi.org/project/mijiaAPI/)。
|
|
27
|
-
|
|
28
|
-
## 安装
|
|
29
|
-
```bash
|
|
30
|
-
poetry install
|
|
31
|
-
```
|
|
32
|
-
或者
|
|
33
|
-
```bash
|
|
34
|
-
pip install mijiaAPI
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## 使用
|
|
38
|
-
使用实例可以参考`demos`文件夹下的示例代码,以下是简单的使用说明
|
|
39
|
-
|
|
40
|
-
有三个类分别用于登录和API调用
|
|
41
|
-
|
|
42
|
-
* `mijiaLogin`:登录小米账号,获取控制设备必须的`userId`, `ssecurity`, `deviceId`, `serviceToken`,方法列表
|
|
43
|
-
* `login(username: str, password: str) -> dict`:账号密码登录,返回上述信息
|
|
44
|
-
* `QRlogin() -> dict`:扫描二维码登录,返回上述信息(会在支持tty的终端打印二维码,若打印识别可查看当前文件夹下的`qr.png`)
|
|
45
|
-
|
|
46
|
-
* `mijiaAPI`:API的实现,使用`mijiaLogin`登录后返回的信息进行初始化
|
|
47
|
-
* `__init__(auth_data: dict)`:初始化
|
|
48
|
-
* `available -> bool`:传入的`auth_data`是否有效
|
|
49
|
-
* `get_devices_list() -> list`:获取设备列表
|
|
50
|
-
* `get_homes_list() -> list`:获取家庭列表,家庭字典中包含房间列表
|
|
51
|
-
* `get_scenes_list(home_id: str) -> list`:获取手动场景列表,在 *米家->添加->手动控制* 中设置
|
|
52
|
-
* `run_scene(scene_id: str) -> bool`:运行手动场景
|
|
53
|
-
* `get_consumable_items(home_id: str) -> list`:获取设备的耗材信息
|
|
54
|
-
* `get_devices_prop(data: list) -> list`:获取设备的属性
|
|
55
|
-
* `set_devices_prop(data: list) -> list`:设置设备的属性
|
|
56
|
-
* `data`为一个字典的列表,字典需要包含`did`, `siid`, `piid`,后面两个键可从 *https://home.miot-spec.com/spec/{model}* 中获取,其中`model`为设备的model,在设备列表中获取,如[米家台灯 1S](https://home.miot-spec.com/spec/yeelink.light.lamp4)。
|
|
57
|
-
* 网站上的方法并非全部可用,需要自行测试
|
|
58
|
-
* `run_action(data: dict) -> dict`:执行设备的action
|
|
59
|
-
* `data`为一个字典,需要包含`did`, `siid`, `aiid`,获取方法同上
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
* `mijiaDevices`:使用`mijiaAPI`和设备属性字典初始化,以便更方便地调用设备属性
|
|
63
|
-
* `__init__(api: mijiaAPI, dev_info: dict. did: str = None, sleep_time: float = 0.5)`:初始化,`dev_info`为设备属性,参考[demos/dev_info_example](demos/dev_info_example),`sleep_time`为每次调用设备属性的间隔时间(注:设置属性后立刻获取属性会不符合预期,需要延迟一段时间)
|
|
64
|
-
* `set(name: str, did: str, value: Union[bool, int]) -> Union[bool, int]`:设置设备属性
|
|
65
|
-
* `get(name: str, did: str) -> Union[bool, int]`:获取设备属性
|
|
66
|
-
* v1.2.0 新增直接通过名称设置/获取属性,需要在初始化时传入`did`,详见[demos/test_devices_v2_light.py](demos/test_devices_v2_light.py)。名称中包含`-`的属性需要替换为`_`。
|
|
67
|
-
* **欢迎大家把自己编写的设备属性字典分享到Issues中,方便大家使用**
|
|
68
|
-
* 也可以调用`get_device_info(device_model: str) -> dict`函数从[米家设备列表](https://home.miot-spec.com/)在线获取设备属性字典,详见[demos/test_get_device_info.py](demos/test_get_device_info.py)
|
|
69
|
-
|
|
70
|
-
## 致谢
|
|
71
|
-
* [janzlan/mijia-api](https://gitee.com/janzlan/mijia-api/tree/master)
|
|
72
|
-
|
|
73
|
-
## 声明
|
|
74
|
-
* 本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除。
|
|
75
|
-
* 本项目作者不对使用本项目产生的任何后果负责,请用户自行承担使用本项目的风险。
|
|
76
|
-
|
mijiaapi-1.3.5/README.md
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# mijiaAPI
|
|
2
|
-
小米米家设备的api,可以使用代码直接控制米家设备的功能,[Github link](https://github.com/Do1e/mijia-api),[PyPI link](https://pypi.org/project/mijiaAPI/)。
|
|
3
|
-
|
|
4
|
-
## 安装
|
|
5
|
-
```bash
|
|
6
|
-
poetry install
|
|
7
|
-
```
|
|
8
|
-
或者
|
|
9
|
-
```bash
|
|
10
|
-
pip install mijiaAPI
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## 使用
|
|
14
|
-
使用实例可以参考`demos`文件夹下的示例代码,以下是简单的使用说明
|
|
15
|
-
|
|
16
|
-
有三个类分别用于登录和API调用
|
|
17
|
-
|
|
18
|
-
* `mijiaLogin`:登录小米账号,获取控制设备必须的`userId`, `ssecurity`, `deviceId`, `serviceToken`,方法列表
|
|
19
|
-
* `login(username: str, password: str) -> dict`:账号密码登录,返回上述信息
|
|
20
|
-
* `QRlogin() -> dict`:扫描二维码登录,返回上述信息(会在支持tty的终端打印二维码,若打印识别可查看当前文件夹下的`qr.png`)
|
|
21
|
-
|
|
22
|
-
* `mijiaAPI`:API的实现,使用`mijiaLogin`登录后返回的信息进行初始化
|
|
23
|
-
* `__init__(auth_data: dict)`:初始化
|
|
24
|
-
* `available -> bool`:传入的`auth_data`是否有效
|
|
25
|
-
* `get_devices_list() -> list`:获取设备列表
|
|
26
|
-
* `get_homes_list() -> list`:获取家庭列表,家庭字典中包含房间列表
|
|
27
|
-
* `get_scenes_list(home_id: str) -> list`:获取手动场景列表,在 *米家->添加->手动控制* 中设置
|
|
28
|
-
* `run_scene(scene_id: str) -> bool`:运行手动场景
|
|
29
|
-
* `get_consumable_items(home_id: str) -> list`:获取设备的耗材信息
|
|
30
|
-
* `get_devices_prop(data: list) -> list`:获取设备的属性
|
|
31
|
-
* `set_devices_prop(data: list) -> list`:设置设备的属性
|
|
32
|
-
* `data`为一个字典的列表,字典需要包含`did`, `siid`, `piid`,后面两个键可从 *https://home.miot-spec.com/spec/{model}* 中获取,其中`model`为设备的model,在设备列表中获取,如[米家台灯 1S](https://home.miot-spec.com/spec/yeelink.light.lamp4)。
|
|
33
|
-
* 网站上的方法并非全部可用,需要自行测试
|
|
34
|
-
* `run_action(data: dict) -> dict`:执行设备的action
|
|
35
|
-
* `data`为一个字典,需要包含`did`, `siid`, `aiid`,获取方法同上
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
* `mijiaDevices`:使用`mijiaAPI`和设备属性字典初始化,以便更方便地调用设备属性
|
|
39
|
-
* `__init__(api: mijiaAPI, dev_info: dict. did: str = None, sleep_time: float = 0.5)`:初始化,`dev_info`为设备属性,参考[demos/dev_info_example](demos/dev_info_example),`sleep_time`为每次调用设备属性的间隔时间(注:设置属性后立刻获取属性会不符合预期,需要延迟一段时间)
|
|
40
|
-
* `set(name: str, did: str, value: Union[bool, int]) -> Union[bool, int]`:设置设备属性
|
|
41
|
-
* `get(name: str, did: str) -> Union[bool, int]`:获取设备属性
|
|
42
|
-
* v1.2.0 新增直接通过名称设置/获取属性,需要在初始化时传入`did`,详见[demos/test_devices_v2_light.py](demos/test_devices_v2_light.py)。名称中包含`-`的属性需要替换为`_`。
|
|
43
|
-
* **欢迎大家把自己编写的设备属性字典分享到Issues中,方便大家使用**
|
|
44
|
-
* 也可以调用`get_device_info(device_model: str) -> dict`函数从[米家设备列表](https://home.miot-spec.com/)在线获取设备属性字典,详见[demos/test_get_device_info.py](demos/test_get_device_info.py)
|
|
45
|
-
|
|
46
|
-
## 致谢
|
|
47
|
-
* [janzlan/mijia-api](https://gitee.com/janzlan/mijia-api/tree/master)
|
|
48
|
-
|
|
49
|
-
## 声明
|
|
50
|
-
* 本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除。
|
|
51
|
-
* 本项目作者不对使用本项目产生的任何后果负责,请用户自行承担使用本项目的风险。
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|