blueair-api 1.30.2__tar.gz → 1.31.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 (26) hide show
  1. {blueair_api-1.30.2 → blueair_api-1.31.1}/PKG-INFO +2 -2
  2. {blueair_api-1.30.2 → blueair_api-1.31.1}/pyproject.toml +1 -1
  3. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/device.py +11 -6
  4. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/device_aws.py +11 -10
  5. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api.egg-info/PKG-INFO +2 -2
  6. {blueair_api-1.30.2 → blueair_api-1.31.1}/LICENSE +0 -0
  7. {blueair_api-1.30.2 → blueair_api-1.31.1}/README.md +0 -0
  8. {blueair_api-1.30.2 → blueair_api-1.31.1}/setup.cfg +0 -0
  9. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/__init__.py +0 -0
  10. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/callbacks.py +0 -0
  11. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/const.py +0 -0
  12. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/errors.py +0 -0
  13. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/http_aws_blueair.py +0 -0
  14. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/http_blueair.py +0 -0
  15. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/intermediate_representation_aws.py +0 -0
  16. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/model_enum.py +0 -0
  17. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/stub.py +0 -0
  18. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/util.py +0 -0
  19. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/util_bootstrap.py +0 -0
  20. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api/util_http.py +0 -0
  21. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api.egg-info/SOURCES.txt +0 -0
  22. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api.egg-info/dependency_links.txt +0 -0
  23. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api.egg-info/requires.txt +0 -0
  24. {blueair_api-1.30.2 → blueair_api-1.31.1}/src/blueair_api.egg-info/top_level.txt +0 -0
  25. {blueair_api-1.30.2 → blueair_api-1.31.1}/tests/test_device_aws.py +0 -0
  26. {blueair_api-1.30.2 → blueair_api-1.31.1}/tests/test_intermediate_representation_aws.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: blueair_api
3
- Version: 1.30.2
3
+ Version: 1.31.1
4
4
  Summary: Blueair Api Wrapper
5
5
  Author-email: Brendan Dahl <dahl.brendan@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/dahlb/blueair_api
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
8
8
 
9
9
  [project]
10
10
  name = "blueair_api"
11
- version = "1.30.2"
11
+ version = "1.31.1"
12
12
  authors = [
13
13
  { name="Brendan Dahl", email="dahl.brendan@gmail.com" },
14
14
  ]
@@ -1,14 +1,13 @@
1
- import dataclasses
2
- import logging
3
-
4
1
  from .callbacks import CallbacksMixin
5
2
  from .http_blueair import HttpBlueair
6
3
  from .util import transform_data_points, safely_get_json_value
4
+ from dataclasses import dataclass, field
5
+ from logging import getLogger
7
6
 
8
- _LOGGER = logging.getLogger(__name__)
7
+ _LOGGER = getLogger(__name__)
9
8
 
10
9
 
11
- @dataclasses.dataclass(slots=True)
10
+ @dataclass(slots=True)
12
11
  class Device(CallbacksMixin):
13
12
  @classmethod
14
13
  async def create_device(cls, api, uuid, name, mac, refresh=False):
@@ -33,6 +32,8 @@ class Device(CallbacksMixin):
33
32
  return device
34
33
 
35
34
  api: HttpBlueair
35
+ raw_info : dict[str: any] = field(repr=False, init=False)
36
+
36
37
  uuid: str | None = None
37
38
  name: str | None = None
38
39
  timezone: str | None = None
@@ -63,7 +64,9 @@ class Device(CallbacksMixin):
63
64
 
64
65
  async def refresh(self):
65
66
  _LOGGER.debug("Requesting current attributes...")
67
+ self.raw_info = {}
66
68
  attributes = await self.api.get_attributes(self.uuid)
69
+ self.raw_info["attributes"] = attributes
67
70
  _LOGGER.debug(f"result: {attributes}")
68
71
  if "brightness" in attributes:
69
72
  self.brightness = int(attributes["brightness"])
@@ -94,7 +97,9 @@ class Device(CallbacksMixin):
94
97
  else:
95
98
  self.wifi_working = False
96
99
  if self.compatibility != "sense+":
97
- for data_point in transform_data_points(await self.api.get_data_points_since(self.uuid)):
100
+ datapoints = transform_data_points(await self.api.get_data_points_since(self.uuid))
101
+ self.raw_info["datapoints"] = datapoints
102
+ for data_point in datapoints:
98
103
  _LOGGER.debug(data_point)
99
104
  self.pm25 = safely_get_json_value(data_point, "pm25", int)
100
105
  self.pm10 = safely_get_json_value(data_point, "pm10", int)
@@ -1,4 +1,3 @@
1
- import dataclasses
2
1
  import logging
3
2
  from json import dumps
4
3
 
@@ -6,12 +5,13 @@ from .callbacks import CallbacksMixin
6
5
  from .http_aws_blueair import HttpAwsBlueair
7
6
  from .model_enum import ModelEnum
8
7
  from . import intermediate_representation_aws as ir
8
+ from dataclasses import dataclass, field
9
9
 
10
10
  _LOGGER = logging.getLogger(__name__)
11
11
 
12
12
  type AttributeType[T] = T | None
13
13
 
14
- @dataclasses.dataclass(slots=True)
14
+ @dataclass(slots=True)
15
15
  class DeviceAws(CallbacksMixin):
16
16
  @classmethod
17
17
  async def create_device(cls, api, uuid, name, mac, type_name, refresh=False):
@@ -29,6 +29,8 @@ class DeviceAws(CallbacksMixin):
29
29
  return device_aws
30
30
 
31
31
  api: HttpAwsBlueair
32
+ raw_info : dict[str: any] = field(repr=False, init=False)
33
+
32
34
  uuid : str | None = None
33
35
  name : str | None = None
34
36
  name_api : str | None = None
@@ -66,14 +68,14 @@ class DeviceAws(CallbacksMixin):
66
68
 
67
69
  async def refresh(self):
68
70
  _LOGGER.debug(f"refreshing blueair device aws: {self}")
69
- info = await self.api.device_info(self.name_api, self.uuid)
70
- _LOGGER.debug(dumps(info, indent=2))
71
+ self.raw_info = await self.api.device_info(self.name_api, self.uuid)
72
+ _LOGGER.debug(dumps(self.raw_info, indent=2))
71
73
 
72
74
  # ir.parse_json(ir.Attribute, ir.query_json(info, "configuration.da"))
73
- ds = ir.parse_json(ir.Sensor, ir.query_json(info, "configuration.ds"))
74
- dc = ir.parse_json(ir.Control, ir.query_json(info, "configuration.dc"))
75
+ ds = ir.parse_json(ir.Sensor, ir.query_json(self.raw_info, "configuration.ds"))
76
+ dc = ir.parse_json(ir.Control, ir.query_json(self.raw_info, "configuration.dc"))
75
77
 
76
- sensor_data = ir.SensorPack(info["sensordata"]).to_latest_value()
78
+ sensor_data = ir.SensorPack(self.raw_info["sensordata"]).to_latest_value()
77
79
 
78
80
  def sensor_data_safe_get(key):
79
81
  return sensor_data.get(key) if key in ds else NotImplemented
@@ -88,7 +90,7 @@ class DeviceAws(CallbacksMixin):
88
90
  def info_safe_get(path):
89
91
  # directly reads for the schema. If the schema field is
90
92
  # undefined, it is NotImplemented, not merely unavailable.
91
- value = ir.query_json(info, path)
93
+ value = ir.query_json(self.raw_info, path)
92
94
  if value is None:
93
95
  return NotImplemented
94
96
  return value
@@ -99,7 +101,7 @@ class DeviceAws(CallbacksMixin):
99
101
  self.serial_number = info_safe_get("configuration.di.ds")
100
102
  self.sku = info_safe_get("configuration.di.sku")
101
103
 
102
- states = ir.SensorPack(info["states"]).to_latest_value()
104
+ states = ir.SensorPack(self.raw_info["states"]).to_latest_value()
103
105
 
104
106
  def states_safe_get(key):
105
107
  return states.get(key) if key in dc else NotImplemented
@@ -185,4 +187,3 @@ class DeviceAws(CallbacksMixin):
185
187
  if self.sku == "112124":
186
188
  return ModelEnum.T10I
187
189
  return ModelEnum.UNKNOWN
188
-
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: blueair_api
3
- Version: 1.30.2
3
+ Version: 1.31.1
4
4
  Summary: Blueair Api Wrapper
5
5
  Author-email: Brendan Dahl <dahl.brendan@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/dahlb/blueair_api
File without changes
File without changes
File without changes