mijiaAPI 2.0.2__tar.gz → 3.0.1__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 (36) hide show
  1. mijiaapi-3.0.1/.github/ISSUE_TEMPLATE/bug_report.md +84 -0
  2. mijiaapi-3.0.1/.gitignore +19 -0
  3. mijiaapi-3.0.1/CHANGELOG.md +129 -0
  4. mijiaapi-3.0.1/FAQ.md +23 -0
  5. mijiaapi-3.0.1/PKG-INFO +563 -0
  6. mijiaapi-3.0.1/README.md +542 -0
  7. mijiaapi-3.0.1/demos/test_apis.py +116 -0
  8. mijiaapi-3.0.1/demos/test_get_statistics.py +35 -0
  9. mijiaapi-3.0.1/demos/test_login.py +12 -0
  10. mijiaapi-3.0.1/mijiaAPI/__init__.py +31 -0
  11. {mijiaapi-2.0.2 → mijiaapi-3.0.1}/mijiaAPI/__main__.py +81 -61
  12. mijiaapi-3.0.1/mijiaAPI/apis.py +804 -0
  13. mijiaapi-3.0.1/mijiaAPI/devices.py +361 -0
  14. mijiaapi-2.0.2/mijiaAPI/code.py → mijiaapi-3.0.1/mijiaAPI/errors.py +34 -7
  15. {mijiaapi-2.0.2 → mijiaapi-3.0.1}/mijiaAPI/logger.py +13 -9
  16. mijiaapi-3.0.1/mijiaAPI/miutils.py +81 -0
  17. mijiaapi-3.0.1/mijiaAPI/version.py +1 -0
  18. mijiaapi-3.0.1/mijiaAPI.egg-info/PKG-INFO +563 -0
  19. mijiaapi-3.0.1/mijiaAPI.egg-info/SOURCES.txt +25 -0
  20. mijiaapi-3.0.1/mijiaAPI.egg-info/dependency_links.txt +1 -0
  21. mijiaapi-3.0.1/mijiaAPI.egg-info/entry_points.txt +2 -0
  22. mijiaapi-3.0.1/mijiaAPI.egg-info/requires.txt +5 -0
  23. mijiaapi-3.0.1/mijiaAPI.egg-info/top_level.txt +1 -0
  24. mijiaapi-3.0.1/pyproject.toml +67 -0
  25. mijiaapi-3.0.1/setup.cfg +4 -0
  26. mijiaapi-3.0.1/uv.lock +749 -0
  27. mijiaapi-2.0.2/PKG-INFO +0 -282
  28. mijiaapi-2.0.2/README.md +0 -255
  29. mijiaapi-2.0.2/mijiaAPI/__init__.py +0 -3
  30. mijiaapi-2.0.2/mijiaAPI/apis.py +0 -251
  31. mijiaapi-2.0.2/mijiaAPI/consts.py +0 -9
  32. mijiaapi-2.0.2/mijiaAPI/devices.py +0 -454
  33. mijiaapi-2.0.2/mijiaAPI/login.py +0 -291
  34. mijiaapi-2.0.2/mijiaAPI/utils.py +0 -42
  35. mijiaapi-2.0.2/pyproject.toml +0 -48
  36. {mijiaapi-2.0.2 → mijiaapi-3.0.1}/LICENSE +0 -0
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: Bug report
3
+ about: 提交一个遇到的bug
4
+ title: "[BUG]"
5
+ labels: bug
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ <!--
11
+ 感谢使用mijia-api!如果您遇到了任何问题或发现了错误,请按照以下格式提交您的Bug报告。这将帮助我们更快地定位并解决问题。
12
+
13
+ 如何提交一个有效的Bug报告:
14
+
15
+ 1. **确保这是一个Bug**:请先查阅[已知问题](https://github.com/Do1e/mijia-api/issues?q=is%3Aissue%20label%3Awontfix),确认您的问题不是已知的问题或是配置不当造成的。
16
+ 2. **尝试重现问题**:在不同的环境或条件下尝试重现此问题,以确定是否总是发生。
17
+ 3. **搜索现有问题**:查看现有的[Issue列表](https://github.com/Do1e/mijia-api/issues),确认这个问题还没有被报告过。
18
+ 4. **提供详细信息**:
19
+ - 您的操作系统和版本。
20
+ - Python版本。
21
+ - 项目的版本号。
22
+ - 出现问题的具体步骤。
23
+ - 实际行为与预期行为之间的差异。
24
+ - 如果可能的话,附上相关的日志输出或截图。
25
+ -->
26
+
27
+ ## 报告模板
28
+
29
+ ### 基本信息
30
+
31
+ - **操作系统**: [例如: Windows 10, macOS Big Sur, Ubuntu 20.04]
32
+ - **Python版本**: [例如: 3.8.5]
33
+ - **项目版本**: [例如: 1.0.0]
34
+ - **设备model**: [例如: "lumi.acpartner.v2"]
35
+
36
+ ### 描述问题
37
+
38
+ <!-- 简短描述遇到的问题是什么。 -->
39
+
40
+ #### 步骤到复现
41
+ <!--
42
+ 1. 第一步...
43
+ 2. 第二步...
44
+ 3. 等等...
45
+ -->
46
+
47
+ #### 实际结果
48
+ <!--
49
+ 这里写实际发生了什么。
50
+ -->
51
+
52
+
53
+ #### 预期结果
54
+ <!--
55
+ 这里写你期望看到的结果是什么样的。
56
+ -->
57
+
58
+ #### 报错堆栈
59
+ <!--
60
+ 复制并在这里粘贴Python的完整报错堆栈。
61
+ -->
62
+
63
+ #### 日志信息
64
+ <!--
65
+ 在代码开头加上:
66
+ ```python
67
+ import logging
68
+ logging.getLogger("mijiaAPI").setLevel(logging.DEBUG)
69
+ ```
70
+ 然后运行代码,复制并粘贴相关的日志输出,请注意手动隐藏任何敏感信息(如did、token等)。
71
+ -->
72
+
73
+ ### 附加信息
74
+ <!--
75
+ 如果有更多的上下文可以帮助我们理解问题所在,请在这里添加。比如错误消息、堆栈跟踪等。
76
+ -->
77
+
78
+
79
+
80
+ ---
81
+
82
+ <!--
83
+ 再次感谢您的贡献!通过您的帮助,我们可以让这个项目变得更好。
84
+ -->
@@ -0,0 +1,19 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+
12
+ # data
13
+ .mijia-api-data/
14
+
15
+ # vscode debug
16
+ .vscode/launch.json
17
+
18
+ # har files
19
+ *.har
@@ -0,0 +1,129 @@
1
+ # 更新日志
2
+
3
+ 本文档记录了项目的v1.3.7以来的重要变更。
4
+
5
+ ## [3.0.1](https://github.com/Do1e/mijia-api/compare/v3.0.0...v3.0.1) - 2025-12.09
6
+ ### new feature
7
+ * 新增 API `mijiaAPI.get_shared_devices_list()`,用于获取共享设备列表
8
+ ### bugfix
9
+ * 修复了 alpine 下 `locale` 无法正常获取,默认使用 `zh_CN` 解决,如果需要在 alpine 下使用其他位置,请自行设置环境变量 `LC_ALL` 和 `LANG`。
10
+ * 修复了共享家庭中无权限的问题,确保传递正确的 `owner_id`。
11
+
12
+ ## [3.0.0](https://github.com/Do1e/mijia-api/compare/v2.0.2...v3.0.0) - 2025-11.28
13
+ ### new feature
14
+ * 使用最新的米家API接口,从 https://api.io.mi.com/app 切换到 https://api.mijia.tech/app
15
+ * `mijiaAPI` 类的初始化参数变更,请传递用于保存认证数据的路径 `auth_data_path` 而不是认证数据
16
+ * 彻底移除账号密码登录方式,仅支持二维码登录
17
+ * 部分 API 需要指定 `home_id`,不指定将遍历所有家庭
18
+ * 实现自动 `serviceToken` 刷新,现在理论上扫码一次能保活一个月
19
+ * 移除登录类 `mijiaLogin`,相关功能集成进入 `mijiaAPI` 类,请使用 `mijiaAPI.login()` / `mijiaAPI.QRlogin()`,两者均为二维码登录
20
+ * `mijiaDevice` 类的初始化参数变更,不再需要传递 `dev_info`,请选择传递 `did` 或 `dev_name` 进行初始化
21
+ * `mijiaDevice` 类的 `set`, `get`, `run_action` 彻底移除 `did` 参数,初始化时已完成
22
+ * 一些其他更改,请参考代码注释
23
+
24
+ ## [2.0.2](https://github.com/Do1e/mijia-api/compare/v2.0.1...v2.0.2) - 2025-09-23
25
+ ### bugfix
26
+ * 修复了`set`方法在类型检查前进行value_list检查,导致某些设备无法设置值的问题
27
+
28
+ ## [2.0.1](https://github.com/Do1e/mijia-api/compare/v2.0.0...v2.0.1) - 2025-06-29
29
+ ### bugfix
30
+ * 处理一个家庭中超过200个设备的情况,修复了`get_devices_list`方法可能无法获取所有设备的问题
31
+ ### improvement
32
+ * 所有打印内容均使用中文
33
+
34
+ ## [2.0.0](https://github.com/Do1e/mijia-api/compare/v1.5.0...v2.0.0) - 2025-06-27
35
+ #### 此版本有多项破坏性变更,请在升级后参考下述说明修复
36
+ ### new feature
37
+ * 新增API:`get_statistics`,用于获取设备的统计信息,使用方法参见[demos/test_get_statistics.py](demos/test_get_statistics.py)
38
+ * 新增文件[demos/decrypt.py](demos/decrypt.py)和[demos/decrypt_har.py](demos/decrypt_har.py),用于解密米家APP抓包
39
+ * `get_homes_list`支持获取共享家庭
40
+ * `get_consumable_items`支持获取共享家庭的耗材列表,需要额外指定`owner_id`参数
41
+ * `get_devices_list`支持获取共享家庭的设备列表
42
+ ### improvement
43
+ * 认证文件保存`cUserId`,可作为`userId`的替代,暂时未使用
44
+ * **此版本彻底移除了`mijiaDevices`,请及时替换为`mijiaDevice`**
45
+ * **`mijiaDevice`的`set`方法更换了参数顺序,请及时修复**
46
+ * **部分API调用后需要读取返回值的字典,如`api.get_devices_list()['list']`,现在直接返回列表,请注意修改,如`api.get_devices_list()`,具体列表如下:**
47
+ * `api.get_devices_list()['list']` -> `api.get_devices_list()`
48
+ * `api.get_homes_list()['homelist']` -> `api.get_homes_list()`
49
+ * `api.get_scenes_list(home_id)['scene_info_list']` -> `api.get_scenes_list(home_id)`
50
+ * `api.get_consumable_items(home_id)['items']` -> `api.get_consumable_items(home_id)`
51
+
52
+ ## [1.5.0](https://github.com/Do1e/mijia-api/compare/v1.4.5...v1.5.0) - 2025-06-19
53
+ ### new feature
54
+ * 重命名`mijiaDevices`为`mijiaDevice`
55
+
56
+ ## [1.4.5](https://github.com/Do1e/mijia-api/compare/v1.4.4...v1.4.5) - 2025-06-16
57
+ ### bugfix
58
+ * 登陆过程中无法获取用户信息时,处理相关报错
59
+
60
+ ## [1.4.4](https://github.com/Do1e/mijia-api/compare/v1.4.3...v1.4.4) - 2025-06-14
61
+ ### new feature
62
+ * `get_device_info`支持[https://home.miot-spec.com/](https://home.miot-spec.com/)中的中文描述
63
+ ### bugfix
64
+ * cli修复了执行`get_device_info`必须先登录的问题
65
+ ### improvement
66
+ * 优化日志输出
67
+ * 使用`login`方法的警告修改得更加明确
68
+
69
+ ## [1.4.3](https://github.com/Do1e/mijia-api/compare/v1.4.2...v1.4.3) - 2025-05-22
70
+ ### bugfix
71
+ * 针对部分特殊的设备,修复了`get_device_info`的TypeError
72
+
73
+ ## [1.4.2](https://github.com/Do1e/mijia-api/compare/v1.4.1...v1.4.2) - 2025-05-19
74
+ ### new feature
75
+ * `get_device_info`支持缓存结果以加速
76
+
77
+ ## [1.4.1](https://github.com/Do1e/mijia-api/compare/v1.4.0...v1.4.1) - 2025-05-19
78
+ ### new feature
79
+ * cli支持`--run`以使用自然语言描述需求,交给小爱音箱执行
80
+
81
+ ## [1.4.0](https://github.com/Do1e/mijia-api/compare/v1.3.14...v1.4.0) - 2025-05-19
82
+ ### new feature
83
+ * 新增`mijiaAPI`的cli支持,运行`mijiaAPI --help`查看帮助
84
+
85
+ ## [1.3.14](https://github.com/Do1e/mijia-api/compare/v1.3.13...v1.3.14) - 2025-05-18
86
+ ### bugfix
87
+ * `available`属性判断错误,始终返回False
88
+
89
+ ## [1.3.13](https://github.com/Do1e/mijia-api/compare/v1.3.12...v1.3.13) - 2025-05-18
90
+ ### new feature
91
+ * 新增从cookie中提取有效期并保存在凭据中
92
+ ### improvement
93
+ * `available`属性根据有效期判断
94
+
95
+ ## [1.3.12](https://github.com/Do1e/mijia-api/compare/v1.3.11...v1.3.12) - 2025-05-16
96
+ ### improvement
97
+ * 简化`mijiaLogin`的初始化参数,根据`save_path`的值自动判断是否需要保存凭据
98
+ * 重构了对象初始化和方法的注释
99
+
100
+ ## [1.3.11](https://github.com/Do1e/mijia-api/compare/v1.3.10...v1.3.11) - 2025-05-16
101
+ ### bugfix
102
+ * 验证保存路径并确保在保存验证数据之前确保目录存在
103
+
104
+ ## [1.3.10](https://github.com/Do1e/mijia-api/compare/v1.3.9...v1.3.10) - 2025-05-16
105
+ ### improvement
106
+ * 使用logging模块替代print函数
107
+
108
+ ## [1.3.9](https://github.com/Do1e/mijia-api/compare/v1.3.8...v1.3.9) - 2025-05-16
109
+ ### new feature
110
+ * 新增用户个人信息查询
111
+ * 新增用户凭据的可选保存
112
+ ### improvement
113
+ * 支持非tty的二维码打印
114
+ * 优化二维码图片的删除逻辑
115
+
116
+ ## [1.3.8](https://github.com/Do1e/mijia-api/compare/v1.3.7...v1.3.8) - 2025-05-14
117
+ ### improvement
118
+ * 新增了devices里所有方法的注释
119
+ * 新增了`mijiaDevice`实例化时的断言检查
120
+ * 新增了操作失败时的错误提示抛出与错误代码的详情
121
+ * 优化了`mijiaDevice`实例化时的内部变量的赋值逻辑
122
+ * 优化了多处代码的可读性与简洁性
123
+ ### bugfix
124
+ * 修复多处由于数据类型更新而引发的警告
125
+
126
+ ## [1.3.7](https://github.com/Do1e/mijia-api/compare/v1.3.6...v1.3.7) - 2025-05-14
127
+ ### new feature
128
+ * 新增自定义`run_action`参数,`in`等python关键字,可在前面加上下划线`_`
129
+ * `mijiaDevice`支持传入设备名称(米家中自定义的名称)进行初始化
mijiaapi-3.0.1/FAQ.md ADDED
@@ -0,0 +1,23 @@
1
+ # 常见问题
2
+
3
+ ## 账号密码登录失败
4
+
5
+ 现在登录似乎100%遇到验证码,建议使用扫码登录。
6
+
7
+ ## 扫码登录后的有效期多长?
8
+
9
+ `serviceToken` 有效期较短,但是已实现自动刷新。用于刷新的 `passToken` 有效期也许是一个月,即扫码登录后理论上可以保活一个月。
10
+
11
+ ## XXX设备的XXX如何获取/设置?
12
+
13
+ 我拥有的设备有限,无法保证能解答这类问题,但也欢迎提交 [issue](https://github.com/Do1e/mijia-api/issues),可能需要你将设备共享给我进行抓包或者自行抓包给我提供请求和响应,提供har文件的话注意自行删除cookie等敏感信息。
14
+
15
+ ## 如何抓包?
16
+
17
+ 小米官方给了一个[抓包教程](https://iot.mi.com/new/doc/accesses/direct-access/extension-development/troubleshooting/packet_capture),我没试过,不确定是否能行,如果抓包成功数据是加密的,可以使用 [decrypt/decrypt.py](decrypt/decrypt.py) 解密。
18
+
19
+ 我自己的解决方案是使用一个获取了root的手机,安装 [reqable](https://reqable.com/zh-CN/) 进行抓包,导出 HAR 文件后使用 [decrypt/decrypt_har.py](decrypt/decrypt_har.py) 解密后导入电脑版的 reqable 查看。
20
+
21
+ ## 是否可以支持设备回调?
22
+
23
+ 理论上可以实现,但由于[ha_xiaomi_home 开源许可证](https://github.com/XiaoMi/ha_xiaomi_home/blob/main/LICENSE.md)的要求,将不会支持相关功能。