mijiaAPI 1.3.6__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.
@@ -1,8 +1,7 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: mijiaAPI
3
- Version: 1.3.6
3
+ Version: 1.3.7
4
4
  Summary: A Python API for Xiaomi Mijia
5
- Home-page: https://github.com/Do1e/mijia-api
6
5
  License: GPLv3
7
6
  Author: Do1e
8
7
  Author-email: dpj.email@qq.com
@@ -19,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.13
19
18
  Requires-Dist: pillow (>=11.0.0,<12.0.0)
20
19
  Requires-Dist: qrcode (>=8.0,<9.0)
21
20
  Requires-Dist: requests (>=2.32.3,<3.0.0)
21
+ Project-URL: Homepage, https://github.com/Do1e/mijia-api
22
22
  Project-URL: Repository, https://github.com/Do1e/mijia-api
23
23
  Description-Content-Type: text/markdown
24
24
 
@@ -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, dev_info: dict,
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mijiaAPI"
3
- version = "1.3.5"
3
+ version = "1.3.7"
4
4
  description = "A Python API for Xiaomi Mijia"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9,<4.0"
@@ -12,7 +12,7 @@ dependencies = [
12
12
 
13
13
  [tool.poetry]
14
14
  name = "mijiaAPI"
15
- version = "1.3.6"
15
+ version = "1.3.7"
16
16
  description = "A Python API for Xiaomi Mijia"
17
17
  authors = ["Do1e <dpj.email@qq.com>"]
18
18
  license = "GPLv3"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes