mijiaAPI 1.1.1__tar.gz → 1.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.
- {mijiaapi-1.1.1/mijiaAPI.egg-info → mijiaapi-1.2.0}/PKG-INFO +3 -2
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/README.md +2 -1
- mijiaapi-1.2.0/demos/test_devices_v2_light.py +43 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI/__version__.py +1 -1
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI/devices.py +34 -4
- {mijiaapi-1.1.1 → mijiaapi-1.2.0/mijiaAPI.egg-info}/PKG-INFO +3 -2
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI.egg-info/SOURCES.txt +1 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/.gitignore +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/.vscode/launch.json +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/LICENSE +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/demos/dev_info_example/miaomiaoce.sensor_ht.t1.json +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/demos/dev_info_example/yeelink.light.lamp4.json +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/demos/test_QRlogin.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/demos/test_apis.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/demos/test_available.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/demos/test_devices_airconditioner.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/demos/test_devices_light.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/demos/test_devices_sensor.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/demos/test_login.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI/__init__.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI/apis.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI/login.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI/urls.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI/utils.py +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI.egg-info/dependency_links.txt +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI.egg-info/requires.txt +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/mijiaAPI.egg-info/top_level.txt +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/requirements.txt +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/setup.cfg +0 -0
- {mijiaapi-1.1.1 → mijiaapi-1.2.0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mijiaAPI
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: A Python API for Xiaomi Mijia
|
|
5
5
|
Home-page: https://github.com/Do1e/mijia-api
|
|
6
6
|
Author: Do1e
|
|
@@ -50,9 +50,10 @@ pip install mijiaAPI
|
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
* `mijiaDevices`:使用`mijiaAPI`和设备属性字典初始化,以便更方便地调用设备属性
|
|
53
|
-
* `__init__(api: mijiaAPI, dev_info: dict, sleep_time: float = 0.5)`:初始化,`dev_info
|
|
53
|
+
* `__init__(api: mijiaAPI, dev_info: dict. did: str = None, sleep_time: float = 0.5)`:初始化,`dev_info`为设备属性,参考[demos/dev_info_example](demos/dev_info_example),`sleep_time`为每次调用设备属性的间隔时间(注:设置属性后立刻获取属性会不符合预期,需要延迟一段时间)
|
|
54
54
|
* `set(name: str, did: str, value: Union[bool, int]) -> Union[bool, int]`:设置设备属性
|
|
55
55
|
* `get(name: str, did: str) -> Union[bool, int]`:获取设备属性
|
|
56
|
+
* v1.2.0 新增直接通过名称设置/获取属性,需要在初始化时传入`did`,详见[demos/test_devices_v2_light.py](demos/test_devices_v2_light.py)。名称中包含`-`的属性需要替换为`_`。
|
|
56
57
|
* **欢迎大家把自己编写的设备属性字典分享到Issues中,方便大家使用**
|
|
57
58
|
|
|
58
59
|
## 致谢
|
|
@@ -34,9 +34,10 @@ pip install mijiaAPI
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
* `mijiaDevices`:使用`mijiaAPI`和设备属性字典初始化,以便更方便地调用设备属性
|
|
37
|
-
* `__init__(api: mijiaAPI, dev_info: dict, sleep_time: float = 0.5)`:初始化,`dev_info
|
|
37
|
+
* `__init__(api: mijiaAPI, dev_info: dict. did: str = None, sleep_time: float = 0.5)`:初始化,`dev_info`为设备属性,参考[demos/dev_info_example](demos/dev_info_example),`sleep_time`为每次调用设备属性的间隔时间(注:设置属性后立刻获取属性会不符合预期,需要延迟一段时间)
|
|
38
38
|
* `set(name: str, did: str, value: Union[bool, int]) -> Union[bool, int]`:设置设备属性
|
|
39
39
|
* `get(name: str, did: str) -> Union[bool, int]`:获取设备属性
|
|
40
|
+
* v1.2.0 新增直接通过名称设置/获取属性,需要在初始化时传入`did`,详见[demos/test_devices_v2_light.py](demos/test_devices_v2_light.py)。名称中包含`-`的属性需要替换为`_`。
|
|
40
41
|
* **欢迎大家把自己编写的设备属性字典分享到Issues中,方便大家使用**
|
|
41
42
|
|
|
42
43
|
## 致谢
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import sys
|
|
3
|
+
sys.path.extend(['.', '..'])
|
|
4
|
+
from mijiaAPI import mijiaDevices, mijiaAPI
|
|
5
|
+
|
|
6
|
+
with open('jsons/auth.json') as f:
|
|
7
|
+
auth = json.load(f)
|
|
8
|
+
api = mijiaAPI(auth)
|
|
9
|
+
|
|
10
|
+
with open('demos/dev_info_example/yeelink.light.lamp4.json', encoding='utf-8') as f:
|
|
11
|
+
dev_info = json.load(f)
|
|
12
|
+
with open('jsons/devices.json') as f:
|
|
13
|
+
devices = json.load(f)
|
|
14
|
+
did = devices[0]['did']
|
|
15
|
+
# sleep_time is optional, default is 0.5
|
|
16
|
+
# get after set shuold be delayed for a while, or the result may be incorrect
|
|
17
|
+
device = mijiaDevices(api, dev_info, did=did, sleep_time=2)
|
|
18
|
+
print(device)
|
|
19
|
+
print('---------------------')
|
|
20
|
+
print(device.on)
|
|
21
|
+
device.on = True
|
|
22
|
+
print('---------------------')
|
|
23
|
+
print(f"{device.brightness} {device.prop_list['brightness'].unit}")
|
|
24
|
+
device.brightness = 60
|
|
25
|
+
print(f"{device.brightness} {device.prop_list['brightness'].unit}")
|
|
26
|
+
print('---------------------')
|
|
27
|
+
print(f"{device.color_temperature} {device.prop_list['color-temperature'].unit}")
|
|
28
|
+
device.color_temperature = 5000
|
|
29
|
+
print(f"{device.color_temperature} {device.prop_list['color-temperature'].unit}")
|
|
30
|
+
print('---------------------')
|
|
31
|
+
device.mode = 0
|
|
32
|
+
print('---------------------')
|
|
33
|
+
print(f"{device.brightness} {device.prop_list['brightness'].unit}")
|
|
34
|
+
device.brightness_delta = -10
|
|
35
|
+
print(f"{device.brightness} {device.prop_list['brightness'].unit}")
|
|
36
|
+
print('---------------------')
|
|
37
|
+
print(f"{device.color_temperature} {device.prop_list['color-temperature'].unit}")
|
|
38
|
+
device.ct_delta = -10
|
|
39
|
+
print(f"{device.color_temperature} {device.prop_list['color-temperature'].unit}")
|
|
40
|
+
device.ct_adjust_alexa_increase = 1
|
|
41
|
+
print(f"{device.color_temperature} {device.prop_list['color-temperature'].unit}")
|
|
42
|
+
device.ct_adjust_alexa_decrease = 2
|
|
43
|
+
print(f"{device.color_temperature} {device.prop_list['color-temperature'].unit}")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Union
|
|
1
|
+
from typing import Union, Optional
|
|
2
2
|
from time import sleep
|
|
3
3
|
from .apis import mijiaAPI
|
|
4
4
|
|
|
@@ -19,16 +19,21 @@ class DevProp(object):
|
|
|
19
19
|
f' valuetype: {self.type}, rw: {self.rw}, unit: {self.unit}, range: {self.range}'
|
|
20
20
|
|
|
21
21
|
class mijiaDevices(object):
|
|
22
|
-
def __init__(self, api: mijiaAPI, dev_info: dict,
|
|
22
|
+
def __init__(self, api: mijiaAPI, dev_info: dict,
|
|
23
|
+
did: Optional[str] = None,
|
|
24
|
+
sleep_time: Optional[Union[int, float]] = 0.5):
|
|
23
25
|
self.api = api
|
|
24
26
|
self.name = dev_info['name']
|
|
25
27
|
self.model = dev_info['model']
|
|
26
28
|
self.prop_list = {prop['name']: DevProp(prop) for prop in dev_info['properties']}
|
|
29
|
+
self.prop_list.update({prop['name'].replace('-', '_'): DevProp(prop) for prop in dev_info['properties'] if '-' in prop['name']})
|
|
30
|
+
self.did = did
|
|
27
31
|
self.sleep_time = sleep_time
|
|
28
32
|
|
|
29
33
|
def __str__(self):
|
|
34
|
+
prop_list = [str(v) for k, v in self.prop_list.items() if '_' not in k]
|
|
30
35
|
return f'{self.name} ({self.model})\n' \
|
|
31
|
-
f'Properties:\n' + '\n'.join(
|
|
36
|
+
f'Properties:\n' + '\n'.join(prop_list)
|
|
32
37
|
|
|
33
38
|
def set(self, name: str, did: str, value: Union[bool, int]) -> Union[bool, int]:
|
|
34
39
|
if name not in self.prop_list:
|
|
@@ -67,7 +72,19 @@ class mijiaDevices(object):
|
|
|
67
72
|
sleep(self.sleep_time)
|
|
68
73
|
return ret
|
|
69
74
|
|
|
70
|
-
def
|
|
75
|
+
def set_v2(self, name: str, value: Union[bool, int], did: Optional[str] = None) -> Union[bool, int]:
|
|
76
|
+
if did is not None:
|
|
77
|
+
return self.set(name, did, value)
|
|
78
|
+
elif self.did is not None:
|
|
79
|
+
return self.set(name, self.did, value)
|
|
80
|
+
else:
|
|
81
|
+
raise ValueError('Please specify the did')
|
|
82
|
+
|
|
83
|
+
def get(self, name: str, did: Optional[str] = None) -> Union[bool, int]:
|
|
84
|
+
if did is None:
|
|
85
|
+
did = self.did
|
|
86
|
+
if did is None:
|
|
87
|
+
raise ValueError('Please specify the did')
|
|
71
88
|
if name not in self.prop_list:
|
|
72
89
|
raise ValueError(f'Unsupported property: {name}, available properties: {list(self.prop_list.keys())}')
|
|
73
90
|
prop = self.prop_list[name]
|
|
@@ -78,3 +95,16 @@ class mijiaDevices(object):
|
|
|
78
95
|
ret = self.api.get_devices_prop([method])[0]['value']
|
|
79
96
|
sleep(self.sleep_time)
|
|
80
97
|
return ret
|
|
98
|
+
|
|
99
|
+
def __setattr__(self, name: str, value: Union[bool, int]) -> None:
|
|
100
|
+
if 'prop_list' in self.__dict__ and name in self.prop_list:
|
|
101
|
+
if not self.set_v2(name, value):
|
|
102
|
+
raise RuntimeError(f'Failed to set property: {name}')
|
|
103
|
+
else:
|
|
104
|
+
super().__setattr__(name, value)
|
|
105
|
+
|
|
106
|
+
def __getattr__(self, name: str) -> Union[bool, int]:
|
|
107
|
+
if 'prop_list' in self.__dict__ and name in self.prop_list:
|
|
108
|
+
return self.get(name)
|
|
109
|
+
else:
|
|
110
|
+
return super().__getattr__(name)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mijiaAPI
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: A Python API for Xiaomi Mijia
|
|
5
5
|
Home-page: https://github.com/Do1e/mijia-api
|
|
6
6
|
Author: Do1e
|
|
@@ -50,9 +50,10 @@ pip install mijiaAPI
|
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
* `mijiaDevices`:使用`mijiaAPI`和设备属性字典初始化,以便更方便地调用设备属性
|
|
53
|
-
* `__init__(api: mijiaAPI, dev_info: dict, sleep_time: float = 0.5)`:初始化,`dev_info
|
|
53
|
+
* `__init__(api: mijiaAPI, dev_info: dict. did: str = None, sleep_time: float = 0.5)`:初始化,`dev_info`为设备属性,参考[demos/dev_info_example](demos/dev_info_example),`sleep_time`为每次调用设备属性的间隔时间(注:设置属性后立刻获取属性会不符合预期,需要延迟一段时间)
|
|
54
54
|
* `set(name: str, did: str, value: Union[bool, int]) -> Union[bool, int]`:设置设备属性
|
|
55
55
|
* `get(name: str, did: str) -> Union[bool, int]`:获取设备属性
|
|
56
|
+
* v1.2.0 新增直接通过名称设置/获取属性,需要在初始化时传入`did`,详见[demos/test_devices_v2_light.py](demos/test_devices_v2_light.py)。名称中包含`-`的属性需要替换为`_`。
|
|
56
57
|
* **欢迎大家把自己编写的设备属性字典分享到Issues中,方便大家使用**
|
|
57
58
|
|
|
58
59
|
## 致谢
|
|
@@ -10,6 +10,7 @@ demos/test_available.py
|
|
|
10
10
|
demos/test_devices_airconditioner.py
|
|
11
11
|
demos/test_devices_light.py
|
|
12
12
|
demos/test_devices_sensor.py
|
|
13
|
+
demos/test_devices_v2_light.py
|
|
13
14
|
demos/test_login.py
|
|
14
15
|
demos/dev_info_example/miaomiaoce.sensor_ht.t1.json
|
|
15
16
|
demos/dev_info_example/yeelink.light.lamp4.json
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|