diff --git a/test/mock/__init__.py b/test/mock/__init__.py index ec00fbe..fccd9e9 100644 --- a/test/mock/__init__.py +++ b/test/mock/__init__.py @@ -15,7 +15,8 @@ "lux": 1000, "cap": 36, "batteryVolt": 3.05576890659684, - "LBTh": 2.55 + "LBTh": 2.55, + "rev": 159, } BITS13 = { @@ -33,7 +34,8 @@ "lux": 0, "cap": 87, "batteryVolt": 2.05576890659684, - "LBTh": 2.55 + "LBTh": 2.55, + "rev": 111 } WATERSENSOR = { @@ -51,7 +53,8 @@ "lux": 0, "cap": 87, "batteryVolt": 3.05576890659684, - "LBTh": 2.55 + "LBTh": 2.55, + "rev": 37, } PIRSENSOR = { @@ -105,6 +108,29 @@ "batteryRemaining": 0.95 } +TAG_UNKNOWN = { + "managerName": "#manager_1", + "mac": "0D0D0D0D0D0D", + "slaveId": 1, + "name": "Kitchen", + "uuid": "fake-1111-2222-4444-111111111111", + "tagType": 15, + "rev": 175, + "version1": 2, + "ds18": False, + "v2flag": 18, + "batteryRemaining": 0.95, + "eventState": 0, + "tempEventState": 0, + "capEventState": 0, + "lightEventState": 0, + "temperature": 22.3912296295166, + "lux": 0, + "cap": 87, + "batteryVolt": 3.05576890659684, + "LBTh": 2.55, +} + LOGIN_RESPONSE = ''' { "d": { diff --git a/test/test_platform.py b/test/test_platform.py index 4f39931..d8ce0f3 100644 --- a/test/test_platform.py +++ b/test/test_platform.py @@ -90,6 +90,7 @@ def test_alspro_tag_binary_states(self): self.assertFalse(tag.is_battery_low) self.assertIsNotNone(str(tag)) self.assertIsNotNone(tag.tag_manager_mac) + self.assertIsNotNone(tag.human_readable_name) def test_water_tag_binary_states(self): """Test avaiable binary states for als pro tag.""" @@ -105,6 +106,7 @@ def test_water_tag_binary_states(self): self.assertFalse(tag.is_battery_low) self.assertIsNotNone(str(tag)) self.assertIsNotNone(tag.tag_manager_mac) + self.assertIsNotNone(tag.human_readable_name) def test_13bit_tag_binary_states(self): """Test avaiable binary states for als pro tag.""" @@ -120,6 +122,13 @@ def test_13bit_tag_binary_states(self): self.assertTrue(tag.is_battery_low) self.assertIsNotNone(str(tag)) self.assertIsNotNone(tag.tag_manager_mac) + self.assertIsNotNone(tag.human_readable_name) + + def test_unknown_sensor_name(self): + """Test avaiable binary states for als pro tag.""" + tag = SensorTag(MOCK.TAG_UNKNOWN, self.platform, '0d0d0d0d0d0d') + self.assertEquals(tag.human_readable_name, "Tag type 15 rev.AF") + @requests_mock.mock() def test_failed_login(self, m): diff --git a/wirelesstagpy/constants.py b/wirelesstagpy/constants.py index 69cc360..5f85064 100644 --- a/wirelesstagpy/constants.py +++ b/wirelesstagpy/constants.py @@ -4,7 +4,7 @@ """WirelessTags constants.""" MAJOR_VERSION = 0 -MINOR_VERSION = 7 +MINOR_VERSION = 8 PATCH_VERSION = 0 __version__ = '{}.{}.{}'.format(MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION) diff --git a/wirelesstagpy/sensortag.py b/wirelesstagpy/sensortag.py index b73fd00..d582dc6 100644 --- a/wirelesstagpy/sensortag.py +++ b/wirelesstagpy/sensortag.py @@ -259,6 +259,23 @@ def product_version(self) -> int: """Return product variation variation.""" return self.extract_last_bits(self.revision, 4) + @property + def human_readable_name(self): + """Human readable tag name.""" + names_map = { + 13: "Tag w/13b Temperature", + 26: "ALS Pro Tag", + 32: "Water/Moisture Sensor", + 42: "Outdoor Probe", + 72: "PIR Sensor", + } + + hw_revision = hex(self.hw_revision)[2:].upper() + if self.tag_type in names_map: + return f"{names_map[self.tag_type]} rev.{hw_revision}" + + return f"Tag type {self.tag_type} rev.{hw_revision}" + @property def outdoor_probe_has_ambient_temperature(self) -> bool: """Return if outdoor probe tag has ambient temperature."""