mijiaAPI 3.1.0__tar.gz → 3.2.0__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.1.0 → mijiaapi-3.2.0}/CHANGELOG.md +5 -0
  2. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/PKG-INFO +30 -14
  3. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/README.md +29 -13
  4. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI/__main__.py +41 -17
  5. mijiaapi-3.2.0/mijiaAPI/version.py +1 -0
  6. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI.egg-info/PKG-INFO +30 -14
  7. mijiaapi-3.1.0/mijiaAPI/version.py +0 -1
  8. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  9. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/.gitignore +0 -0
  10. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/FAQ.md +0 -0
  11. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/LICENSE +0 -0
  12. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/demos/test_apis.py +0 -0
  13. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/demos/test_get_statistics.py +0 -0
  14. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/demos/test_login.py +0 -0
  15. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI/__init__.py +0 -0
  16. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI/apis.py +0 -0
  17. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI/devices.py +0 -0
  18. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI/errors.py +0 -0
  19. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI/logger.py +0 -0
  20. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI/miutils.py +0 -0
  21. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI.egg-info/SOURCES.txt +0 -0
  22. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI.egg-info/dependency_links.txt +0 -0
  23. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI.egg-info/entry_points.txt +0 -0
  24. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI.egg-info/requires.txt +0 -0
  25. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/mijiaAPI.egg-info/top_level.txt +0 -0
  26. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/pyproject.toml +0 -0
  27. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/setup.cfg +0 -0
  28. {mijiaapi-3.1.0 → mijiaapi-3.2.0}/uv.lock +0 -0
@@ -2,6 +2,11 @@
2
2
 
3
3
  本文档记录了项目的v1.3.7以来的重要变更。
4
4
 
5
+ ## [3.2.0](https://github.com/Do1e/mijia-api/compare/v3.1.0...v3.2.0) - 2026-06-09
6
+ ### improvement
7
+ * 将 `--run` 参数重构为独立的 `run` 子命令,提升 CLI 结构一致性
8
+ * 保留 `--run` 作为隐藏的废弃参数,并显示迁移提示
9
+
5
10
  ## [3.1.0](https://github.com/Do1e/mijia-api/compare/v3.0.5...v3.1.0) - 2026-05-27
6
11
  ### new feature
7
12
  * 删除设备属性的单位`unit`属性,因为 home.miot-spec.com 上已废弃
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mijiaAPI
3
- Version: 3.1.0
3
+ Version: 3.2.0
4
4
  Summary: A Python API for Xiaomi Mijia
5
5
  Author-email: Do1e <i@do1e.cn>
6
6
  License-Expression: GPL-3.0-or-later
@@ -359,14 +359,17 @@ MIJIA_LOG_LEVEL=WARNING mijiaAPI get --dev_name "卧室台灯" --prop_name "brig
359
359
  完整的命令行参数说明:
360
360
 
361
361
  ```
362
- usage: mijiaAPI [-h] [-p AUTH_PATH] [--list_homes] [-l] [--list_scenes]
363
- [--list_consumable_items] [--run_scene SCENE_ID/SCENE_NAME ...]
364
- [--get_device_info DEVICE_MODEL] [--run PROMPT]
365
- [--wifispeaker_name WIFISPEAKER_NAME] [--quiet]
366
- {get,set} ...
362
+ usage: mijiaAPI [-h] [-v] [-p AUTH_PATH] [--list_homes] [-l]
363
+ [--list_scenes] [--list_consumable_items]
364
+ [--run_scene SCENE_ID/SCENE_NAME [SCENE_ID/SCENE_NAME ...]]
365
+ [--get_device_info DEVICE_MODEL]
366
+ {run,get,set} ...
367
+
368
+ Mijia API CLI (v3.1.0)
367
369
 
368
370
  positional arguments:
369
- {get,set}
371
+ {run,get,set}
372
+ run 使用自然语言描述你的需求,如果你有小爱音箱的话
370
373
  get 获取设备属性
371
374
  set 设置设备属性
372
375
 
@@ -384,10 +387,6 @@ options:
384
387
  运行场景,指定场景ID或名称
385
388
  --get_device_info DEVICE_MODEL
386
389
  获取设备信息,指定设备model,先使用 --list_devices 获取
387
- --run PROMPT 使用自然语言描述你的需求,如果你有小爱音箱的话
388
- --wifispeaker_name WIFISPEAKER_NAME
389
- 指定小爱音箱名称,默认是获取到的第一个小爱音箱
390
- --quiet 小爱音箱静默执行
391
390
  ```
392
391
 
393
392
  ```
@@ -417,6 +416,23 @@ options:
417
416
  --value VALUE 需要设定的属性值
418
417
  ```
419
418
 
419
+ ```
420
+ usage: mijiaAPI run [-h] [-p AUTH_PATH]
421
+ [--wifispeaker_name WIFISPEAKER_NAME] [--quiet]
422
+ PROMPT
423
+
424
+ positional arguments:
425
+ PROMPT 使用自然语言描述你的需求
426
+
427
+ options:
428
+ -h, --help show this help message and exit
429
+ -p, --auth_path AUTH_PATH
430
+ 认证文件保存路径,默认保存在 ~/.config/mijia-api/auth.json
431
+ --wifispeaker_name WIFISPEAKER_NAME
432
+ 指定小爱音箱名称,默认是获取到的第一个小爱音箱
433
+ --quiet 小爱音箱静默执行
434
+ ```
435
+
420
436
  #### 获取设备属性
421
437
 
422
438
  ```bash
@@ -465,9 +481,9 @@ mijiaAPI --get_device_info yeelink.light.lamp4
465
481
  mijiaAPI --list_consumable_items
466
482
 
467
483
  # 使用小爱音箱执行自然语言命令
468
- mijiaAPI --run "打开卧室台灯"
469
- mijiaAPI --run "把亮度调到50%" --wifispeaker_name "卧室小爱"
470
- mijiaAPI --run "关闭所有灯" --quiet
484
+ mijiaAPI run "打开卧室台灯"
485
+ mijiaAPI run "把亮度调到50%" --wifispeaker_name "卧室小爱"
486
+ mijiaAPI run "关闭所有灯" --quiet
471
487
  ```
472
488
 
473
489
  #### 直接使用 uvx(无需安装)
@@ -339,14 +339,17 @@ MIJIA_LOG_LEVEL=WARNING mijiaAPI get --dev_name "卧室台灯" --prop_name "brig
339
339
  完整的命令行参数说明:
340
340
 
341
341
  ```
342
- usage: mijiaAPI [-h] [-p AUTH_PATH] [--list_homes] [-l] [--list_scenes]
343
- [--list_consumable_items] [--run_scene SCENE_ID/SCENE_NAME ...]
344
- [--get_device_info DEVICE_MODEL] [--run PROMPT]
345
- [--wifispeaker_name WIFISPEAKER_NAME] [--quiet]
346
- {get,set} ...
342
+ usage: mijiaAPI [-h] [-v] [-p AUTH_PATH] [--list_homes] [-l]
343
+ [--list_scenes] [--list_consumable_items]
344
+ [--run_scene SCENE_ID/SCENE_NAME [SCENE_ID/SCENE_NAME ...]]
345
+ [--get_device_info DEVICE_MODEL]
346
+ {run,get,set} ...
347
+
348
+ Mijia API CLI (v3.1.0)
347
349
 
348
350
  positional arguments:
349
- {get,set}
351
+ {run,get,set}
352
+ run 使用自然语言描述你的需求,如果你有小爱音箱的话
350
353
  get 获取设备属性
351
354
  set 设置设备属性
352
355
 
@@ -364,10 +367,6 @@ options:
364
367
  运行场景,指定场景ID或名称
365
368
  --get_device_info DEVICE_MODEL
366
369
  获取设备信息,指定设备model,先使用 --list_devices 获取
367
- --run PROMPT 使用自然语言描述你的需求,如果你有小爱音箱的话
368
- --wifispeaker_name WIFISPEAKER_NAME
369
- 指定小爱音箱名称,默认是获取到的第一个小爱音箱
370
- --quiet 小爱音箱静默执行
371
370
  ```
372
371
 
373
372
  ```
@@ -397,6 +396,23 @@ options:
397
396
  --value VALUE 需要设定的属性值
398
397
  ```
399
398
 
399
+ ```
400
+ usage: mijiaAPI run [-h] [-p AUTH_PATH]
401
+ [--wifispeaker_name WIFISPEAKER_NAME] [--quiet]
402
+ PROMPT
403
+
404
+ positional arguments:
405
+ PROMPT 使用自然语言描述你的需求
406
+
407
+ options:
408
+ -h, --help show this help message and exit
409
+ -p, --auth_path AUTH_PATH
410
+ 认证文件保存路径,默认保存在 ~/.config/mijia-api/auth.json
411
+ --wifispeaker_name WIFISPEAKER_NAME
412
+ 指定小爱音箱名称,默认是获取到的第一个小爱音箱
413
+ --quiet 小爱音箱静默执行
414
+ ```
415
+
400
416
  #### 获取设备属性
401
417
 
402
418
  ```bash
@@ -445,9 +461,9 @@ mijiaAPI --get_device_info yeelink.light.lamp4
445
461
  mijiaAPI --list_consumable_items
446
462
 
447
463
  # 使用小爱音箱执行自然语言命令
448
- mijiaAPI --run "打开卧室台灯"
449
- mijiaAPI --run "把亮度调到50%" --wifispeaker_name "卧室小爱"
450
- mijiaAPI --run "关闭所有灯" --quiet
464
+ mijiaAPI run "打开卧室台灯"
465
+ mijiaAPI run "把亮度调到50%" --wifispeaker_name "卧室小爱"
466
+ mijiaAPI run "关闭所有灯" --quiet
451
467
  ```
452
468
 
453
469
  #### 直接使用 uvx(无需安装)
@@ -69,16 +69,36 @@ def parse_args(args):
69
69
  parser.add_argument(
70
70
  '--run',
71
71
  type=str,
72
+ help=argparse.SUPPRESS,
73
+ nargs='?',
74
+ default=None,
75
+ metavar='PROMPT',
76
+ )
77
+
78
+ run = subparsers.add_parser(
79
+ 'run',
72
80
  help="使用自然语言描述你的需求,如果你有小爱音箱的话",
81
+ )
82
+ run.set_defaults(func='run')
83
+ run.add_argument(
84
+ '-p', '--auth_path',
85
+ type=Path,
86
+ default=Path.home() / ".config" / "mijia-api" / "auth.json",
87
+ help="认证文件保存路径,默认保存在 ~/.config/mijia-api/auth.json",
88
+ )
89
+ run.add_argument(
90
+ 'prompt',
91
+ type=str,
92
+ help="使用自然语言描述你的需求",
73
93
  metavar='PROMPT',
74
94
  )
75
- parser.add_argument(
95
+ run.add_argument(
76
96
  '--wifispeaker_name',
77
97
  type=str,
78
98
  help="指定小爱音箱名称,默认是获取到的第一个小爱音箱",
79
99
  default=None,
80
100
  )
81
- parser.add_argument(
101
+ run.add_argument(
82
102
  '--quiet',
83
103
  action='store_true',
84
104
  help="小爱音箱静默执行",
@@ -280,6 +300,11 @@ def set(args):
280
300
  def main(args):
281
301
  args = parse_args(args)
282
302
 
303
+ if args.run is not None:
304
+ print("错误: '--run' 参数已弃用,请使用 'run' 子命令代替。")
305
+ print(f"新用法: mijiaAPI run \"{args.run}\"")
306
+ sys.exit(1)
307
+
283
308
  if args.get_device_info:
284
309
  device_info = get_device_info(args.get_device_info)
285
310
  print(json.dumps(device_info, indent=2, ensure_ascii=False))
@@ -288,7 +313,6 @@ def main(args):
288
313
  args.list_scenes or
289
314
  args.list_consumable_items or
290
315
  args.run_scene or
291
- args.run or
292
316
  hasattr(args, 'func') and args.func is not None):
293
317
  return
294
318
 
@@ -308,25 +332,25 @@ def main(args):
308
332
  if args.run_scene:
309
333
  for scene_id in args.run_scene:
310
334
  run_scene(api, scene_id, scene_mapping=scenes_mapping)
311
- if args.run:
312
- if device_mapping is None:
313
- device_mapping = get_devices_list(api, verbose=False)
314
- if args.wifispeaker_name is None:
315
- wifispeaker = None
316
- for device in device_mapping.values():
317
- if 'xiaomi.wifispeaker' in device['model']:
318
- wifispeaker = mijiaDevice(api, dev_name=device['name'])
319
- break
320
- if wifispeaker is None:
321
- raise ValueError("未找到小爱音箱设备")
322
- else:
323
- wifispeaker = mijiaDevice(api, dev_name=args.wifispeaker_name)
324
- wifispeaker.run_action('execute-text-directive', _in=[args.run, 1 if args.quiet else 0])
325
335
  if hasattr(args, 'func') and args.func is not None:
326
336
  if args.func == 'get':
327
337
  get(args)
328
338
  if args.func == 'set':
329
339
  set(args)
340
+ if args.func == 'run':
341
+ if device_mapping is None:
342
+ device_mapping = get_devices_list(api, verbose=False)
343
+ if args.wifispeaker_name is None:
344
+ wifispeaker = None
345
+ for device in device_mapping.values():
346
+ if 'xiaomi.wifispeaker' in device['model']:
347
+ wifispeaker = mijiaDevice(api, dev_name=device['name'])
348
+ break
349
+ if wifispeaker is None:
350
+ raise ValueError("未找到小爱音箱设备")
351
+ else:
352
+ wifispeaker = mijiaDevice(api, dev_name=args.wifispeaker_name)
353
+ wifispeaker.run_action('execute-text-directive', _in=[args.prompt, 1 if args.quiet else 0])
330
354
 
331
355
  def cli():
332
356
  main(sys.argv[1:])
@@ -0,0 +1 @@
1
+ version = "3.2.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mijiaAPI
3
- Version: 3.1.0
3
+ Version: 3.2.0
4
4
  Summary: A Python API for Xiaomi Mijia
5
5
  Author-email: Do1e <i@do1e.cn>
6
6
  License-Expression: GPL-3.0-or-later
@@ -359,14 +359,17 @@ MIJIA_LOG_LEVEL=WARNING mijiaAPI get --dev_name "卧室台灯" --prop_name "brig
359
359
  完整的命令行参数说明:
360
360
 
361
361
  ```
362
- usage: mijiaAPI [-h] [-p AUTH_PATH] [--list_homes] [-l] [--list_scenes]
363
- [--list_consumable_items] [--run_scene SCENE_ID/SCENE_NAME ...]
364
- [--get_device_info DEVICE_MODEL] [--run PROMPT]
365
- [--wifispeaker_name WIFISPEAKER_NAME] [--quiet]
366
- {get,set} ...
362
+ usage: mijiaAPI [-h] [-v] [-p AUTH_PATH] [--list_homes] [-l]
363
+ [--list_scenes] [--list_consumable_items]
364
+ [--run_scene SCENE_ID/SCENE_NAME [SCENE_ID/SCENE_NAME ...]]
365
+ [--get_device_info DEVICE_MODEL]
366
+ {run,get,set} ...
367
+
368
+ Mijia API CLI (v3.1.0)
367
369
 
368
370
  positional arguments:
369
- {get,set}
371
+ {run,get,set}
372
+ run 使用自然语言描述你的需求,如果你有小爱音箱的话
370
373
  get 获取设备属性
371
374
  set 设置设备属性
372
375
 
@@ -384,10 +387,6 @@ options:
384
387
  运行场景,指定场景ID或名称
385
388
  --get_device_info DEVICE_MODEL
386
389
  获取设备信息,指定设备model,先使用 --list_devices 获取
387
- --run PROMPT 使用自然语言描述你的需求,如果你有小爱音箱的话
388
- --wifispeaker_name WIFISPEAKER_NAME
389
- 指定小爱音箱名称,默认是获取到的第一个小爱音箱
390
- --quiet 小爱音箱静默执行
391
390
  ```
392
391
 
393
392
  ```
@@ -417,6 +416,23 @@ options:
417
416
  --value VALUE 需要设定的属性值
418
417
  ```
419
418
 
419
+ ```
420
+ usage: mijiaAPI run [-h] [-p AUTH_PATH]
421
+ [--wifispeaker_name WIFISPEAKER_NAME] [--quiet]
422
+ PROMPT
423
+
424
+ positional arguments:
425
+ PROMPT 使用自然语言描述你的需求
426
+
427
+ options:
428
+ -h, --help show this help message and exit
429
+ -p, --auth_path AUTH_PATH
430
+ 认证文件保存路径,默认保存在 ~/.config/mijia-api/auth.json
431
+ --wifispeaker_name WIFISPEAKER_NAME
432
+ 指定小爱音箱名称,默认是获取到的第一个小爱音箱
433
+ --quiet 小爱音箱静默执行
434
+ ```
435
+
420
436
  #### 获取设备属性
421
437
 
422
438
  ```bash
@@ -465,9 +481,9 @@ mijiaAPI --get_device_info yeelink.light.lamp4
465
481
  mijiaAPI --list_consumable_items
466
482
 
467
483
  # 使用小爱音箱执行自然语言命令
468
- mijiaAPI --run "打开卧室台灯"
469
- mijiaAPI --run "把亮度调到50%" --wifispeaker_name "卧室小爱"
470
- mijiaAPI --run "关闭所有灯" --quiet
484
+ mijiaAPI run "打开卧室台灯"
485
+ mijiaAPI run "把亮度调到50%" --wifispeaker_name "卧室小爱"
486
+ mijiaAPI run "关闭所有灯" --quiet
471
487
  ```
472
488
 
473
489
  #### 直接使用 uvx(无需安装)
@@ -1 +0,0 @@
1
- version = "3.1.0"
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