blueair-api 1.28.0__py3-none-any.whl → 1.30.0__py3-none-any.whl
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.
- blueair_api/device.py +1 -4
- blueair_api/device_aws.py +5 -11
- blueair_api/http_blueair.py +20 -1
- blueair_api/stub.py +1 -5
- blueair_api/util_bootstrap.py +1 -1
- {blueair_api-1.28.0.dist-info → blueair_api-1.30.0.dist-info}/METADATA +1 -1
- {blueair_api-1.28.0.dist-info → blueair_api-1.30.0.dist-info}/RECORD +10 -10
- {blueair_api-1.28.0.dist-info → blueair_api-1.30.0.dist-info}/LICENSE +0 -0
- {blueair_api-1.28.0.dist-info → blueair_api-1.30.0.dist-info}/WHEEL +0 -0
- {blueair_api-1.28.0.dist-info → blueair_api-1.30.0.dist-info}/top_level.txt +0 -0
blueair_api/device.py
CHANGED
@@ -85,10 +85,7 @@ class Device(CallbacksMixin):
|
|
85
85
|
self.filter_expired = attributes["filter_status"] != "OK"
|
86
86
|
else:
|
87
87
|
self.filter_expired = NotImplemented
|
88
|
-
|
89
|
-
self.fan_mode = attributes["mode"]
|
90
|
-
else:
|
91
|
-
self.fan_mode = NotImplemented
|
88
|
+
self.fan_mode = attributes.get("mode", NotImplemented)
|
92
89
|
if "wifi_status" in attributes:
|
93
90
|
self.wifi_working = attributes["wifi_status"] == "1"
|
94
91
|
else:
|
blueair_api/device_aws.py
CHANGED
@@ -138,17 +138,6 @@ class DeviceAws(CallbacksMixin):
|
|
138
138
|
await self.api.set_device_info(self.uuid, "standby", "vb", value)
|
139
139
|
self.publish_updates()
|
140
140
|
|
141
|
-
# FIXME: avoid state translation at the API level and depreate running.
|
142
|
-
# replace with standby which is standard across aws devices.
|
143
|
-
@property
|
144
|
-
def running(self) -> AttributeType[bool]:
|
145
|
-
if self.standby is None or self.standby is NotImplemented:
|
146
|
-
return self.standby
|
147
|
-
return not self.standby
|
148
|
-
|
149
|
-
async def set_running(self, running: bool):
|
150
|
-
await self.set_standby(not running)
|
151
|
-
|
152
141
|
async def set_fan_auto_mode(self, fan_auto_mode: bool):
|
153
142
|
self.fan_auto_mode = fan_auto_mode
|
154
143
|
await self.api.set_device_info(self.uuid, "automode", "vb", fan_auto_mode)
|
@@ -174,6 +163,11 @@ class DeviceAws(CallbacksMixin):
|
|
174
163
|
await self.api.set_device_info(self.uuid, "wickdrys", "vb", value)
|
175
164
|
self.publish_updates()
|
176
165
|
|
166
|
+
async def set_germ_shield(self, value: bool):
|
167
|
+
self.germ_shield = value
|
168
|
+
await self.api.set_device_info(self.uuid, "germshield", "vb", value)
|
169
|
+
self.publish_updates()
|
170
|
+
|
177
171
|
@property
|
178
172
|
def model(self) -> ModelEnum:
|
179
173
|
if self.sku == "111633":
|
blueair_api/http_blueair.py
CHANGED
@@ -7,7 +7,6 @@ import base64
|
|
7
7
|
from .util_http import request_with_logging
|
8
8
|
from .const import API_KEY
|
9
9
|
from .errors import LoginError
|
10
|
-
from typing import Optional
|
11
10
|
|
12
11
|
_LOGGER = logging.getLogger(__name__)
|
13
12
|
|
@@ -295,3 +294,23 @@ class HttpBlueair:
|
|
295
294
|
)
|
296
295
|
)
|
297
296
|
return await response.json()
|
297
|
+
|
298
|
+
async def set_fan_mode(self, device_uuid, auto: bool):
|
299
|
+
url = f"https://{await self.get_home_host()}/v2/device/{device_uuid}/attribute/mode/"
|
300
|
+
new_value = "auto" if auto else "manual"
|
301
|
+
headers = {
|
302
|
+
"X-API-KEY-TOKEN": API_KEY,
|
303
|
+
"X-AUTH-TOKEN": await self.get_auth_token(),
|
304
|
+
}
|
305
|
+
json_body = {
|
306
|
+
"currentValue": new_value,
|
307
|
+
"scope": "device",
|
308
|
+
"name": "mode",
|
309
|
+
"uuid": str(device_uuid),
|
310
|
+
}
|
311
|
+
response: ClientResponse = (
|
312
|
+
await self._post_request_with_logging_and_errors_raised(
|
313
|
+
url=url, json_body=json_body, headers=headers
|
314
|
+
)
|
315
|
+
)
|
316
|
+
return await response.json()
|
blueair_api/stub.py
CHANGED
@@ -1,17 +1,14 @@
|
|
1
1
|
# run with "python3 src/blueair_api/stub.py"
|
2
2
|
import logging
|
3
3
|
import asyncio
|
4
|
-
from threading import Event
|
5
4
|
|
6
5
|
from getpass import getpass
|
7
6
|
from pathlib import Path
|
8
7
|
import sys
|
9
8
|
|
10
|
-
# import blueair_api
|
11
|
-
|
12
9
|
path_root = Path(__file__).parents[2]
|
13
10
|
sys.path.append(str(path_root))
|
14
|
-
from src.blueair_api import get_devices, get_aws_devices
|
11
|
+
from src.blueair_api import get_devices, get_aws_devices, DeviceAws
|
15
12
|
|
16
13
|
|
17
14
|
logger = logging.getLogger("src.blueair_api")
|
@@ -30,7 +27,6 @@ async def testing():
|
|
30
27
|
api, devices = await get_aws_devices(username=username, password=password)
|
31
28
|
for device in devices:
|
32
29
|
await device.refresh()
|
33
|
-
await device.set_child_lock(True)
|
34
30
|
logger.debug(device)
|
35
31
|
finally:
|
36
32
|
if api:
|
blueair_api/util_bootstrap.py
CHANGED
@@ -45,7 +45,7 @@ async def get_aws_devices(
|
|
45
45
|
password: str,
|
46
46
|
region: str = "us",
|
47
47
|
client_session: ClientSession | None = None,
|
48
|
-
) -> tuple[HttpAwsBlueair, list[
|
48
|
+
) -> tuple[HttpAwsBlueair, list[DeviceAws]]:
|
49
49
|
api = HttpAwsBlueair(
|
50
50
|
username=username,
|
51
51
|
password=password,
|
@@ -1,19 +1,19 @@
|
|
1
1
|
blueair_api/__init__.py,sha256=GucsIENhTF4AVxPn4Xyr4imUxJJ8RO8RYt1opHCF2hQ,326
|
2
2
|
blueair_api/callbacks.py,sha256=fvrJsqH5eDRxWOGWiZkF2uLU4n2ve0zzU17ERqWbHP8,756
|
3
3
|
blueair_api/const.py,sha256=q1smSEhwyYvuQiR867lToFm-mGV-d3dNJvN0NJgscbU,1037
|
4
|
-
blueair_api/device.py,sha256=
|
5
|
-
blueair_api/device_aws.py,sha256=
|
4
|
+
blueair_api/device.py,sha256=tMA2pW5tSN_5uKlE7DypGQiQ-u333s-ErKVMjYTOBOs,4530
|
5
|
+
blueair_api/device_aws.py,sha256=W9twRSyH_PZPWQE_m2mPN--9sxnps_hK4obvf2SOie0,7122
|
6
6
|
blueair_api/errors.py,sha256=lJ_iFU_W6zQfGRi_wsMhWDw-fAVPFeCkCbT1erIlYQQ,233
|
7
7
|
blueair_api/http_aws_blueair.py,sha256=jztGyoH0iC7aCJ2oGf9hnEeHFOie3YikFvwtWo3W2w4,8536
|
8
|
-
blueair_api/http_blueair.py,sha256=
|
8
|
+
blueair_api/http_blueair.py,sha256=eH9nwrv-QdmurZwrKLzIkbemJlU-p7H9za2pSQgEM50,11747
|
9
9
|
blueair_api/intermediate_representation_aws.py,sha256=DJWxHFP9yVll0O6kxHWjKscIlu-7genc3f7ZvwV5YdA,6137
|
10
10
|
blueair_api/model_enum.py,sha256=Z9Ne4icNEjbGNwdHJZSDibcKJKwv-W1BRpZx01RGFuY,2480
|
11
|
-
blueair_api/stub.py,sha256=
|
11
|
+
blueair_api/stub.py,sha256=tWJJLIhKf39P1gRAXfJk6L8cBJI9fVK3Uk9pj2_Teaw,1187
|
12
12
|
blueair_api/util.py,sha256=7MrB2DLqUVOlBQuhv7bRmUXvcGcsjXiV3M0H3LloiOo,1962
|
13
|
-
blueair_api/util_bootstrap.py,sha256=
|
13
|
+
blueair_api/util_bootstrap.py,sha256=oo6qqEYUxWb4wLLivk7ofB0YFrKsTZo5tW0U2wc3-D0,1757
|
14
14
|
blueair_api/util_http.py,sha256=45AJG3Vb6LMVzI0WV22AoSyt64f_Jj3KpOAwF5M6EFE,1327
|
15
|
-
blueair_api-1.
|
16
|
-
blueair_api-1.
|
17
|
-
blueair_api-1.
|
18
|
-
blueair_api-1.
|
19
|
-
blueair_api-1.
|
15
|
+
blueair_api-1.30.0.dist-info/LICENSE,sha256=W6UV41yCe1R_Avet8VtsxwdJar18n40b3MRnbEMHZmI,1066
|
16
|
+
blueair_api-1.30.0.dist-info/METADATA,sha256=exaefi2U99qful1oc90IBbBj7A-wU6rEoLDtEV107TI,1995
|
17
|
+
blueair_api-1.30.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
18
|
+
blueair_api-1.30.0.dist-info/top_level.txt,sha256=-gn0jNtmE83qEu70uMW5F4JrXnHGRfuFup1EPWF70oc,12
|
19
|
+
blueair_api-1.30.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|