From c7a0483a335ab4d02c7d5d68889c95ea954962e3 Mon Sep 17 00:00:00 2001 From: Angel Nunez Mencias Date: Thu, 22 Aug 2024 11:23:08 +0200 Subject: [PATCH] detect device_trackers based on the existence of longitude and latitude fields --- pyproject.toml | 2 +- src/ttn_client/parsers/default.py | 2 +- src/ttn_client/values/device_tracker.py | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 71109aa..39206eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "ttn_client" -version = "1.2.0" +version = "1.2.1" authors = [ { name="Angel Nunez Mencias", email="pypi@angelnu.com" }, ] diff --git a/src/ttn_client/parsers/default.py b/src/ttn_client/parsers/default.py index 72b2a2b..4afb6f0 100644 --- a/src/ttn_client/parsers/default.py +++ b/src/ttn_client/parsers/default.py @@ -43,7 +43,7 @@ def __default_parse_field( """Parses a cayenne field""" new_ttn_value: TTNBaseValue | None if isinstance(new_value, dict): - if "gps" in field_id: + if "latitude" in new_value and "longitude" in new_value: # GPS new_ttn_value = TTNDeviceTrackerValue(application_up, field_id, new_value) else: diff --git a/src/ttn_client/values/device_tracker.py b/src/ttn_client/values/device_tracker.py index 0352323..01a337e 100644 --- a/src/ttn_client/values/device_tracker.py +++ b/src/ttn_client/values/device_tracker.py @@ -6,6 +6,11 @@ class TTNDeviceTrackerValue(TTNBaseValue): """Sensor of type gps.""" + def __init__(self, uplink: dict, field_id: str, value) -> None: + super().__init__(uplink, field_id, value) + assert "latitude" in self.value + assert "longitude" in self.value + @property def value(self) -> dict: """the value itself.""" @@ -22,6 +27,6 @@ def longitude(self) -> float: return self.value["longitude"] @property - def altitude(self) -> float: + def altitude(self) -> float | None: """Return altitude value of the device.""" - return self.value["altitude"] + return self.value.get("altitude", None)