Skip to content

Commit

Permalink
Implement compensation formulas (#209)
Browse files Browse the repository at this point in the history
  • Loading branch information
joostlek authored Sep 20, 2024
1 parent 5eda78d commit 101f2e0
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 2 deletions.
28 changes: 28 additions & 0 deletions src/airgradient/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ class Measures(DataClassORJSONMixin):
rco2: int | None = None
pm01: int | None = None
pm02: int | None = None
raw_pm02: int | None = field(default=None, metadata=field_options(alias="pm02"))
compensated_pm02: int | None = field(
default=None, metadata=field_options(alias="pm02Compensated")
)
pm10: int | None = None
total_volatile_organic_component_index: int | None = field(
default=None, metadata=field_options(alias="tvocIndex")
Expand All @@ -40,9 +44,33 @@ class Measures(DataClassORJSONMixin):
ambient_temperature: float | None = field(
default=None, metadata=field_options(alias="atmp")
)
raw_ambient_temperature: float | None = field(
default=None, metadata=field_options(alias="atmp")
)
compensated_ambient_temperature: float | None = field(
default=None, metadata=field_options(alias="atmpCompensated")
)
raw_relative_humidity: float | None = field(
default=None, metadata=field_options(alias="rhum")
)
relative_humidity: float | None = field(
default=None, metadata=field_options(alias="rhum")
)
compensated_relative_humidity: float | None = field(
default=None, metadata=field_options(alias="rhumCompensated")
)

@classmethod
def __post_deserialize__(cls, obj: Measures) -> Measures:
"""Post deserialize hook."""
obj.ambient_temperature = (
obj.compensated_ambient_temperature or obj.ambient_temperature
)
obj.relative_humidity = (
obj.compensated_relative_humidity or obj.relative_humidity
)
obj.pm02 = obj.compensated_pm02 or obj.pm02
return obj


class PmStandard(StrEnum):
Expand Down
16 changes: 14 additions & 2 deletions tests/__snapshots__/test_airgradient.ambr
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,25 @@
# ---
# name: test_current_fixtures[current_measures.json]
dict({
'ambient_temperature': 23.1,
'ambient_temperature': 22.17,
'boot_time': 4,
'compensated_ambient_temperature': 22.17,
'compensated_pm02': None,
'compensated_relative_humidity': 47.0,
'firmware_version': '3.1.1',
'model': 'I-9PSL',
'nitrogen_index': 1,
'pm003_count': 270,
'pm01': 22,
'pm02': 34,
'pm10': 41,
'raw_ambient_temperature': 23.1,
'raw_nitrogen': 16931,
'raw_pm02': 34,
'raw_relative_humidity': 32.0,
'raw_total_volatile_organic_component': 31792,
'rco2': 778,
'relative_humidity': 32.0,
'relative_humidity': 47.0,
'serial_number': '84fce612f5b8',
'signal_strength': -52,
'total_volatile_organic_component_index': 99,
Expand All @@ -38,14 +44,20 @@
dict({
'ambient_temperature': None,
'boot_time': 0,
'compensated_ambient_temperature': None,
'compensated_pm02': None,
'compensated_relative_humidity': None,
'firmware_version': '3.0.8',
'model': 'I-9PSL',
'nitrogen_index': None,
'pm003_count': None,
'pm01': None,
'pm02': None,
'pm10': None,
'raw_ambient_temperature': None,
'raw_nitrogen': None,
'raw_pm02': None,
'raw_relative_humidity': None,
'raw_total_volatile_organic_component': None,
'rco2': None,
'relative_humidity': None,
Expand Down

0 comments on commit 101f2e0

Please sign in to comment.