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.
Files changed (28) hide show
  1. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/CHANGELOG.md +14 -2
  2. {mijiaapi-3.0.1/mijiaAPI.egg-info → mijiaapi-3.0.3}/PKG-INFO +24 -3
  3. mijiaapi-3.0.1/PKG-INFO → mijiaapi-3.0.3/README.md +22 -21
  4. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/__main__.py +6 -1
  5. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/apis.py +14 -0
  6. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/errors.py +1 -1
  7. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/logger.py +1 -1
  8. mijiaapi-3.0.3/mijiaAPI/version.py +1 -0
  9. mijiaapi-3.0.1/README.md → mijiaapi-3.0.3/mijiaAPI.egg-info/PKG-INFO +42 -0
  10. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/pyproject.toml +2 -2
  11. mijiaapi-3.0.1/mijiaAPI/version.py +0 -1
  12. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  13. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/.gitignore +0 -0
  14. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/FAQ.md +0 -0
  15. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/LICENSE +0 -0
  16. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/demos/test_apis.py +0 -0
  17. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/demos/test_get_statistics.py +0 -0
  18. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/demos/test_login.py +0 -0
  19. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/__init__.py +0 -0
  20. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/devices.py +0 -0
  21. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI/miutils.py +0 -0
  22. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/SOURCES.txt +0 -0
  23. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/dependency_links.txt +0 -0
  24. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/entry_points.txt +0 -0
  25. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/requires.txt +0 -0
  26. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/mijiaAPI.egg-info/top_level.txt +0 -0
  27. {mijiaapi-3.0.1 → mijiaapi-3.0.3}/setup.cfg +0 -0
  28. {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.1](https://github.com/Do1e/mijia-api/compare/v3.0.0...v3.0.1) - 2025-12.09
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.28
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.1
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
- logging.getLogger("mijiaAPI").setLevel(logging.INFO)
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
@@ -8,7 +8,7 @@ ERROR_CODE = {
8
8
  "-10005": "权限不足",
9
9
  "-10006": "执行超时",
10
10
  "-10007": "设备离线或者不存在",
11
- "-10020": "未授权OAuth2",
11
+ "-10020": "未授权OAuth2",
12
12
  "-10030": "无效的token(HTTP)",
13
13
  "-10040": "无效的消息格式",
14
14
  "-10050": "无效的证书",
@@ -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 = { text = "GPL-3.0-or-later" }
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