mijiaAPI 3.0.1__tar.gz → 3.0.3__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-3.0.1 → mijiaapi-3.0.3}/CHANGELOG.md +14 -2
- {mijiaapi-3.0.1/mijiaAPI.egg-info → mijiaapi-3.0.3}/PKG-INFO +24 -3
- mijiaapi-3.0.1/PKG-INFO → mijiaapi-3.0.3/README.md +22 -21
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/__main__.py +6 -1
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/apis.py +14 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/errors.py +1 -1
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/logger.py +1 -1
- mijiaapi-3.0.3/mijiaAPI/version.py +1 -0
- mijiaapi-3.0.1/README.md → mijiaapi-3.0.3/mijiaAPI.egg-info/PKG-INFO +42 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/pyproject.toml +2 -2
- mijiaapi-3.0.1/mijiaAPI/version.py +0 -1
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/.gitignore +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/FAQ.md +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/LICENSE +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/demos/test_apis.py +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/demos/test_get_statistics.py +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/demos/test_login.py +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/__init__.py +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/devices.py +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/miutils.py +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/SOURCES.txt +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/dependency_links.txt +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/entry_points.txt +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/requires.txt +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/top_level.txt +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/setup.cfg +0 -0
- {mijiaapi-3.0.1 → mijiaapi-3.0.3}/uv.lock +0 -0
|
@@ -2,14 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
本文档记录了项目的v1.3.7以来的重要变更。
|
|
4
4
|
|
|
5
|
-
## [3.0.
|
|
5
|
+
## [3.0.3](https://github.com/Do1e/mijia-api/compare/v3.0.2...v3.0.3) - 2026-01-02
|
|
6
|
+
### new feature
|
|
7
|
+
* 新增 `MIJIA_LOG_LEVEL` 环境变量支持,用于配置 CLI 日志级别
|
|
8
|
+
### bugfix
|
|
9
|
+
* 修复错误代码 "-10020" 描述中的错误拼写
|
|
10
|
+
|
|
11
|
+
## [3.0.2](https://github.com/Do1e/mijia-api/compare/v3.0.1...v3.0.2) - 2026-01-01
|
|
12
|
+
### new feature
|
|
13
|
+
* 为`available`属性添加了缓存机制,减少频繁调用带来的性能损耗
|
|
14
|
+
### chore
|
|
15
|
+
* 日志信息显示毫秒
|
|
16
|
+
|
|
17
|
+
## [3.0.1](https://github.com/Do1e/mijia-api/compare/v3.0.0...v3.0.1) - 2025-12-09
|
|
6
18
|
### new feature
|
|
7
19
|
* 新增 API `mijiaAPI.get_shared_devices_list()`,用于获取共享设备列表
|
|
8
20
|
### bugfix
|
|
9
21
|
* 修复了 alpine 下 `locale` 无法正常获取,默认使用 `zh_CN` 解决,如果需要在 alpine 下使用其他位置,请自行设置环境变量 `LC_ALL` 和 `LANG`。
|
|
10
22
|
* 修复了共享家庭中无权限的问题,确保传递正确的 `owner_id`。
|
|
11
23
|
|
|
12
|
-
## [3.0.0](https://github.com/Do1e/mijia-api/compare/v2.0.2...v3.0.0) - 2025-11
|
|
24
|
+
## [3.0.0](https://github.com/Do1e/mijia-api/compare/v2.0.2...v3.0.0) - 2025-11-28
|
|
13
25
|
### new feature
|
|
14
26
|
* 使用最新的米家API接口,从 https://api.io.mi.com/app 切换到 https://api.mijia.tech/app
|
|
15
27
|
* `mijiaAPI` 类的初始化参数变更,请传递用于保存认证数据的路径 `auth_data_path` 而不是认证数据
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mijiaAPI
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.3
|
|
4
4
|
Summary: A Python API for Xiaomi Mijia
|
|
5
5
|
Author-email: Do1e <i@do1e.cn>
|
|
6
|
-
License: GPL-3.0-or-later
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
7
|
Project-URL: Homepage, https://github.com/Do1e/mijia-api
|
|
8
8
|
Project-URL: Repository, https://github.com/Do1e/mijia-api
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
11
10
|
Classifier: Operating System :: OS Independent
|
|
12
11
|
Requires-Python: <4.0,>=3.9
|
|
13
12
|
Description-Content-Type: text/markdown
|
|
@@ -342,6 +341,25 @@ except APIError as e:
|
|
|
342
341
|
mijiaAPI --help
|
|
343
342
|
```
|
|
344
343
|
|
|
344
|
+
#### 环境变量
|
|
345
|
+
|
|
346
|
+
支持以下环境变量来配置 CLI 的行为:
|
|
347
|
+
|
|
348
|
+
| 环境变量 | 默认值 | 说明 |
|
|
349
|
+
|---------|--------|------|
|
|
350
|
+
| `MIJIA_LOG_LEVEL` | `INFO` | 日志级别,可选值:`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` |
|
|
351
|
+
|
|
352
|
+
##### 示例
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# 设置为 DEBUG 级别查看详细日志
|
|
356
|
+
export MIJIA_LOG_LEVEL=DEBUG
|
|
357
|
+
mijiaAPI --list_devices
|
|
358
|
+
|
|
359
|
+
# 或直接在命令前指定
|
|
360
|
+
MIJIA_LOG_LEVEL=WARNING mijiaAPI get --dev_name "卧室台灯" --prop_name "brightness"
|
|
361
|
+
```
|
|
362
|
+
|
|
345
363
|
完整的命令行参数说明:
|
|
346
364
|
|
|
347
365
|
```
|
|
@@ -556,6 +574,9 @@ api.login()
|
|
|
556
574
|
|
|
557
575
|
本项目采用 [GPL-3.0](LICENSE) 开源许可证。
|
|
558
576
|
|
|
577
|
+
**请注意:GPL-3.0 是具有“强传染性”的开源许可证。**
|
|
578
|
+
如果您在您的项目中使用、修改或分发本项目的代码(包括作为库依赖),您的整个项目也**必须**以 GPL-3.0 或兼容许可证开源发布。
|
|
579
|
+
|
|
559
580
|
## 免责声明
|
|
560
581
|
|
|
561
582
|
* 本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: mijiaAPI
|
|
3
|
-
Version: 3.0.1
|
|
4
|
-
Summary: A Python API for Xiaomi Mijia
|
|
5
|
-
Author-email: Do1e <i@do1e.cn>
|
|
6
|
-
License: GPL-3.0-or-later
|
|
7
|
-
Project-URL: Homepage, https://github.com/Do1e/mijia-api
|
|
8
|
-
Project-URL: Repository, https://github.com/Do1e/mijia-api
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
11
|
-
Classifier: Operating System :: OS Independent
|
|
12
|
-
Requires-Python: <4.0,>=3.9
|
|
13
|
-
Description-Content-Type: text/markdown
|
|
14
|
-
License-File: LICENSE
|
|
15
|
-
Requires-Dist: pillow>=11.3.0
|
|
16
|
-
Requires-Dist: pycryptodome>=3.23.0
|
|
17
|
-
Requires-Dist: qrcode>=8.2
|
|
18
|
-
Requires-Dist: requests>=2.32.5
|
|
19
|
-
Requires-Dist: tzlocal>=5.3.1
|
|
20
|
-
Dynamic: license-file
|
|
21
|
-
|
|
22
1
|
# mijiaAPI
|
|
23
2
|
|
|
24
3
|
小米米家设备的API,可以使用代码直接控制米家设备。
|
|
@@ -342,6 +321,25 @@ except APIError as e:
|
|
|
342
321
|
mijiaAPI --help
|
|
343
322
|
```
|
|
344
323
|
|
|
324
|
+
#### 环境变量
|
|
325
|
+
|
|
326
|
+
支持以下环境变量来配置 CLI 的行为:
|
|
327
|
+
|
|
328
|
+
| 环境变量 | 默认值 | 说明 |
|
|
329
|
+
|---------|--------|------|
|
|
330
|
+
| `MIJIA_LOG_LEVEL` | `INFO` | 日志级别,可选值:`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` |
|
|
331
|
+
|
|
332
|
+
##### 示例
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
# 设置为 DEBUG 级别查看详细日志
|
|
336
|
+
export MIJIA_LOG_LEVEL=DEBUG
|
|
337
|
+
mijiaAPI --list_devices
|
|
338
|
+
|
|
339
|
+
# 或直接在命令前指定
|
|
340
|
+
MIJIA_LOG_LEVEL=WARNING mijiaAPI get --dev_name "卧室台灯" --prop_name "brightness"
|
|
341
|
+
```
|
|
342
|
+
|
|
345
343
|
完整的命令行参数说明:
|
|
346
344
|
|
|
347
345
|
```
|
|
@@ -556,6 +554,9 @@ api.login()
|
|
|
556
554
|
|
|
557
555
|
本项目采用 [GPL-3.0](LICENSE) 开源许可证。
|
|
558
556
|
|
|
557
|
+
**请注意:GPL-3.0 是具有“强传染性”的开源许可证。**
|
|
558
|
+
如果您在您的项目中使用、修改或分发本项目的代码(包括作为库依赖),您的整个项目也**必须**以 GPL-3.0 或兼容许可证开源发布。
|
|
559
|
+
|
|
559
560
|
## 免责声明
|
|
560
561
|
|
|
561
562
|
* 本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import json
|
|
3
3
|
import logging
|
|
4
|
+
import os
|
|
4
5
|
import sys
|
|
5
6
|
import time
|
|
6
7
|
from pathlib import Path
|
|
@@ -11,7 +12,11 @@ from .devices import get_device_info, mijiaDevice
|
|
|
11
12
|
from .version import version
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
log_level_name = os.getenv('MIJIA_LOG_LEVEL', 'INFO').upper()
|
|
16
|
+
if log_level_name not in ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']:
|
|
17
|
+
raise ValueError(f"无效的日志级别: {log_level_name}, 可选值为 DEBUG, INFO, WARNING, ERROR, CRITICAL")
|
|
18
|
+
log_level = getattr(logging, log_level_name, logging.INFO)
|
|
19
|
+
logging.getLogger("mijiaAPI").setLevel(log_level)
|
|
15
20
|
|
|
16
21
|
def parse_args(args):
|
|
17
22
|
parser = argparse.ArgumentParser(description=f"Mijia API CLI (v{version})")
|
|
@@ -37,6 +37,9 @@ class mijiaAPI():
|
|
|
37
37
|
else:
|
|
38
38
|
self.auth_data_path = Path(auth_data_path)
|
|
39
39
|
|
|
40
|
+
self._available_cache = None
|
|
41
|
+
self._available_cache_time = 0
|
|
42
|
+
|
|
40
43
|
if self.auth_data_path.exists():
|
|
41
44
|
with open(self.auth_data_path, "r") as f:
|
|
42
45
|
self.auth_data = json.load(f)
|
|
@@ -72,10 +75,21 @@ class mijiaAPI():
|
|
|
72
75
|
return False
|
|
73
76
|
if any(key not in self.auth_data for key in ["ua", "ssecurity", "userId", "cUserId", "serviceToken"]):
|
|
74
77
|
return False
|
|
78
|
+
|
|
79
|
+
current_time = int(time.time())
|
|
80
|
+
if current_time - self._available_cache_time < 60:
|
|
81
|
+
logger.debug(f"使用缓存的available结果: {self._available_cache}")
|
|
82
|
+
return self._available_cache
|
|
83
|
+
|
|
75
84
|
try:
|
|
76
85
|
self.check_new_msg(refresh_token=False)
|
|
77
86
|
except Exception:
|
|
87
|
+
self._available_cache = False
|
|
88
|
+
self._available_cache_time = current_time
|
|
78
89
|
return False
|
|
90
|
+
|
|
91
|
+
self._available_cache = True
|
|
92
|
+
self._available_cache_time = current_time
|
|
79
93
|
return True
|
|
80
94
|
|
|
81
95
|
@property
|
|
@@ -38,7 +38,7 @@ def get_logger(name: str) -> logging.Logger:
|
|
|
38
38
|
console_handler = logging.StreamHandler()
|
|
39
39
|
|
|
40
40
|
formatter = ColorFormatter(
|
|
41
|
-
"%(asctime)s - %(name)s - %(levelname)s: %(message)s",
|
|
41
|
+
"%(asctime)s.%(msecs)03d - %(name)s - %(levelname)s: %(message)s",
|
|
42
42
|
datefmt="%Y-%m-%d %H:%M:%S",
|
|
43
43
|
)
|
|
44
44
|
console_handler.setFormatter(formatter)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = "3.0.3"
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mijiaAPI
|
|
3
|
+
Version: 3.0.3
|
|
4
|
+
Summary: A Python API for Xiaomi Mijia
|
|
5
|
+
Author-email: Do1e <i@do1e.cn>
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/Do1e/mijia-api
|
|
8
|
+
Project-URL: Repository, https://github.com/Do1e/mijia-api
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: <4.0,>=3.9
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Requires-Dist: pillow>=11.3.0
|
|
15
|
+
Requires-Dist: pycryptodome>=3.23.0
|
|
16
|
+
Requires-Dist: qrcode>=8.2
|
|
17
|
+
Requires-Dist: requests>=2.32.5
|
|
18
|
+
Requires-Dist: tzlocal>=5.3.1
|
|
19
|
+
Dynamic: license-file
|
|
20
|
+
|
|
1
21
|
# mijiaAPI
|
|
2
22
|
|
|
3
23
|
小米米家设备的API,可以使用代码直接控制米家设备。
|
|
@@ -321,6 +341,25 @@ except APIError as e:
|
|
|
321
341
|
mijiaAPI --help
|
|
322
342
|
```
|
|
323
343
|
|
|
344
|
+
#### 环境变量
|
|
345
|
+
|
|
346
|
+
支持以下环境变量来配置 CLI 的行为:
|
|
347
|
+
|
|
348
|
+
| 环境变量 | 默认值 | 说明 |
|
|
349
|
+
|---------|--------|------|
|
|
350
|
+
| `MIJIA_LOG_LEVEL` | `INFO` | 日志级别,可选值:`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` |
|
|
351
|
+
|
|
352
|
+
##### 示例
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# 设置为 DEBUG 级别查看详细日志
|
|
356
|
+
export MIJIA_LOG_LEVEL=DEBUG
|
|
357
|
+
mijiaAPI --list_devices
|
|
358
|
+
|
|
359
|
+
# 或直接在命令前指定
|
|
360
|
+
MIJIA_LOG_LEVEL=WARNING mijiaAPI get --dev_name "卧室台灯" --prop_name "brightness"
|
|
361
|
+
```
|
|
362
|
+
|
|
324
363
|
完整的命令行参数说明:
|
|
325
364
|
|
|
326
365
|
```
|
|
@@ -535,6 +574,9 @@ api.login()
|
|
|
535
574
|
|
|
536
575
|
本项目采用 [GPL-3.0](LICENSE) 开源许可证。
|
|
537
576
|
|
|
577
|
+
**请注意:GPL-3.0 是具有“强传染性”的开源许可证。**
|
|
578
|
+
如果您在您的项目中使用、修改或分发本项目的代码(包括作为库依赖),您的整个项目也**必须**以 GPL-3.0 或兼容许可证开源发布。
|
|
579
|
+
|
|
538
580
|
## 免责声明
|
|
539
581
|
|
|
540
582
|
* 本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除
|
|
@@ -5,7 +5,8 @@ description = "A Python API for Xiaomi Mijia"
|
|
|
5
5
|
authors = [{ name = "Do1e", email = "i@do1e.cn" }]
|
|
6
6
|
readme = "README.md"
|
|
7
7
|
requires-python = ">=3.9,<4.0"
|
|
8
|
-
license =
|
|
8
|
+
license = "GPL-3.0-or-later"
|
|
9
|
+
license-files = ["LICENSE"]
|
|
9
10
|
dependencies = [
|
|
10
11
|
"pillow>=11.3.0",
|
|
11
12
|
"pycryptodome>=3.23.0",
|
|
@@ -15,7 +16,6 @@ dependencies = [
|
|
|
15
16
|
]
|
|
16
17
|
classifiers = [
|
|
17
18
|
"Programming Language :: Python :: 3",
|
|
18
|
-
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
19
19
|
"Operating System :: OS Independent",
|
|
20
20
|
]
|
|
21
21
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
version = "3.0.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|