From e6fdb83b18fcfa80c6adbacec6a670353e47c61d Mon Sep 17 00:00:00 2001 From: mkmer Date: Sat, 30 Dec 2023 16:46:06 +0000 Subject: [PATCH 01/10] Add new keys --- blinkpy/camera.py | 23 +++++++++++++++-------- tests/test_camera_functions.py | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/blinkpy/camera.py b/blinkpy/camera.py index bc5c6d80..b7ca575d 100644 --- a/blinkpy/camera.py +++ b/blinkpy/camera.py @@ -43,6 +43,7 @@ def __init__(self, sync): self._cached_video = None self.camera_type = "" self.product_type = None + self.sync_signal = None @property def attributes(self): @@ -64,6 +65,7 @@ def attributes(self): "wifi_strength": self.wifi_strength, "network_id": self.sync.network_id, "sync_module": self.sync.name, + "sync_signal": self.sync_signal, "last_record": self.last_record, "type": self.product_type, } @@ -229,15 +231,20 @@ def extract_config_info(self, config): self.name = config.get("name", "unknown") self.camera_id = str(config.get("id", "unknown")) self.network_id = str(config.get("network_id", "unknown")) - self.serial = config.get("serial", None) + self.serial = config.get("serial") self.motion_enabled = config.get("enabled", "unknown") - self.battery_voltage = config.get("battery_voltage", None) - self.battery_state = config.get("battery_state", None) or config.get( - "battery", None - ) - self.temperature = config.get("temperature", None) - self.wifi_strength = config.get("wifi_strength", None) - self.product_type = config.get("type", None) + self.battery_voltage = config.get("battery_voltage") + self.battery_state = config.get("battery_state") or config.get("battery") + self.temperature = config.get("temperature") + if signals := config.get("signals"): + self.wifi_strength = signals.get("wifi") + self.battery_voltage = signals.get("battery") + self.sync_signal = signals.get("lfr") + else: + self.wifi_strength = config.get("wifi_strength") + self.battery_voltage = config.get("battery_voltage") + + self.product_type = config.get("type") async def get_sensor_info(self): """Retrieve calibrated temperature from special endpoint.""" diff --git a/tests/test_camera_functions.py b/tests/test_camera_functions.py index c1b7df49..b881a6b1 100644 --- a/tests/test_camera_functions.py +++ b/tests/test_camera_functions.py @@ -56,7 +56,7 @@ async def test_camera_update(self, mock_resp): "battery_voltage": 90, "battery_state": "ok", "temperature": 68, - "wifi_strength": 4, + "signals": {"lfr":5,"wifi":4,"battery":3}, "thumbnail": "/thumb", } self.camera.last_record = ["1"] From 852dd6a33ba9cb4a5205576bd17124b8a33088b1 Mon Sep 17 00:00:00 2001 From: mkmer Date: Sat, 30 Dec 2023 17:09:33 +0000 Subject: [PATCH 02/10] Lint again --- tests/test_camera_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_camera_functions.py b/tests/test_camera_functions.py index b881a6b1..3e1f1d85 100644 --- a/tests/test_camera_functions.py +++ b/tests/test_camera_functions.py @@ -56,7 +56,7 @@ async def test_camera_update(self, mock_resp): "battery_voltage": 90, "battery_state": "ok", "temperature": 68, - "signals": {"lfr":5,"wifi":4,"battery":3}, + "signals": {"lfr": 5, "wifi": 4, "battery": 3}, "thumbnail": "/thumb", } self.camera.last_record = ["1"] From 61d1fbb077c017b33743e63797b212b1a721895a Mon Sep 17 00:00:00 2001 From: mkmer Date: Sat, 30 Dec 2023 19:10:49 +0000 Subject: [PATCH 03/10] return percentage --- blinkpy/camera.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/blinkpy/camera.py b/blinkpy/camera.py index b7ca575d..a0db0511 100644 --- a/blinkpy/camera.py +++ b/blinkpy/camera.py @@ -237,9 +237,18 @@ def extract_config_info(self, config): self.battery_state = config.get("battery_state") or config.get("battery") self.temperature = config.get("temperature") if signals := config.get("signals"): - self.wifi_strength = signals.get("wifi") - self.battery_voltage = signals.get("battery") - self.sync_signal = signals.get("lfr") + try: # x / 5 * 100 = x * 20 for percentage + self.wifi_strength = signals.get("wifi") * 20 + except TypeError: + self.wifi_strength = None + try: + self.battery_voltage = signals.get("battery") * 20 + except TypeError: + self.battery_voltage = None + try: + self.sync_signal = signals.get("lfr") * 20 + except TypeError: + self.sync_signal = None else: self.wifi_strength = config.get("wifi_strength") self.battery_voltage = config.get("battery_voltage") From 4302eb6a095e3e01f245f53fd2e7aea666164fd4 Mon Sep 17 00:00:00 2001 From: mkmer Date: Sat, 30 Dec 2023 19:19:29 +0000 Subject: [PATCH 04/10] Fix test to percentage --- tests/test_camera_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_camera_functions.py b/tests/test_camera_functions.py index 3e1f1d85..6332d824 100644 --- a/tests/test_camera_functions.py +++ b/tests/test_camera_functions.py @@ -80,7 +80,7 @@ async def test_camera_update(self, mock_resp): self.assertEqual(self.camera.temperature, 68) self.assertEqual(self.camera.temperature_c, 20) self.assertEqual(self.camera.temperature_calibrated, 71) - self.assertEqual(self.camera.wifi_strength, 4) + self.assertEqual(self.camera.wifi_strength, 80) self.assertEqual( self.camera.thumbnail, "https://rest-test.immedia-semi.com/thumb.jpg" ) From 3e02763ca1da0242fbd5fe28c71b5519a9dcd818 Mon Sep 17 00:00:00 2001 From: mkmer Date: Sat, 30 Dec 2023 19:58:07 +0000 Subject: [PATCH 05/10] Add tests for missing keys --- tests/test_camera_functions.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/test_camera_functions.py b/tests/test_camera_functions.py index 6332d824..ecade4ab 100644 --- a/tests/test_camera_functions.py +++ b/tests/test_camera_functions.py @@ -408,3 +408,26 @@ async def test_save_recent_clips_exception(self, mock_clip, mock_open, mock_resp in "\t".join(dl_log.output) ) assert mock_open.call_count == 1 + + async def test_missing_keys(self, mock_resp): + """Tests missing signal keys.""" + config = { + "name": "new", + "id": 1234, + "network_id": 5678, + "serial": "12345678", + "enabled": False, + "battery_state": "ok", + "temperature": 68, + "signals": {"junk": 1}, + "thumbnail": "", + } + self.camera.sync.homescreen = {"devices": []} + mock_resp.side_effect = [ + {"temp": 71}, + mresp.MockResponse({"test": 200}, 200, raw_data="test"), + mresp.MockResponse({"foobar": 200}, 200, raw_data="foobar"), + ] + await self.camera.update(config, expire_clips=False, force=True) + self.assertEqual(self.camera.wifi_strength, None) + self.assertEqual(self.camera.battery_voltage, None) From a49a54354abd0866f3a103393c3037badfa38ced Mon Sep 17 00:00:00 2001 From: mkmer Date: Mon, 1 Jan 2024 20:14:21 +0000 Subject: [PATCH 06/10] back to raw values remove extra battery_voltage assignment --- blinkpy/camera.py | 16 +++------------- tests/test_camera_functions.py | 2 +- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/blinkpy/camera.py b/blinkpy/camera.py index a0db0511..2e08957c 100644 --- a/blinkpy/camera.py +++ b/blinkpy/camera.py @@ -233,22 +233,12 @@ def extract_config_info(self, config): self.network_id = str(config.get("network_id", "unknown")) self.serial = config.get("serial") self.motion_enabled = config.get("enabled", "unknown") - self.battery_voltage = config.get("battery_voltage") self.battery_state = config.get("battery_state") or config.get("battery") self.temperature = config.get("temperature") if signals := config.get("signals"): - try: # x / 5 * 100 = x * 20 for percentage - self.wifi_strength = signals.get("wifi") * 20 - except TypeError: - self.wifi_strength = None - try: - self.battery_voltage = signals.get("battery") * 20 - except TypeError: - self.battery_voltage = None - try: - self.sync_signal = signals.get("lfr") * 20 - except TypeError: - self.sync_signal = None + self.wifi_strength = signals.get("wifi") + self.battery_voltage = signals.get("battery") + self.sync_signal = signals.get("lfr") else: self.wifi_strength = config.get("wifi_strength") self.battery_voltage = config.get("battery_voltage") diff --git a/tests/test_camera_functions.py b/tests/test_camera_functions.py index ecade4ab..c7283d35 100644 --- a/tests/test_camera_functions.py +++ b/tests/test_camera_functions.py @@ -80,7 +80,7 @@ async def test_camera_update(self, mock_resp): self.assertEqual(self.camera.temperature, 68) self.assertEqual(self.camera.temperature_c, 20) self.assertEqual(self.camera.temperature_calibrated, 71) - self.assertEqual(self.camera.wifi_strength, 80) + self.assertEqual(self.camera.wifi_strength, 4) self.assertEqual( self.camera.thumbnail, "https://rest-test.immedia-semi.com/thumb.jpg" ) From 6e1aa6bf9d52d0e253bc065bdff674934e3fa5ec Mon Sep 17 00:00:00 2001 From: mkmer Date: Tue, 2 Jan 2024 12:16:59 +0000 Subject: [PATCH 07/10] better name for sync signal --- blinkpy/camera.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blinkpy/camera.py b/blinkpy/camera.py index 2e08957c..512a951d 100644 --- a/blinkpy/camera.py +++ b/blinkpy/camera.py @@ -65,7 +65,7 @@ def attributes(self): "wifi_strength": self.wifi_strength, "network_id": self.sync.network_id, "sync_module": self.sync.name, - "sync_signal": self.sync_signal, + "sync_signal_strength": self.sync_signal_strength, "last_record": self.last_record, "type": self.product_type, } @@ -238,7 +238,7 @@ def extract_config_info(self, config): if signals := config.get("signals"): self.wifi_strength = signals.get("wifi") self.battery_voltage = signals.get("battery") - self.sync_signal = signals.get("lfr") + self.sync_signal_strength = signals.get("lfr") else: self.wifi_strength = config.get("wifi_strength") self.battery_voltage = config.get("battery_voltage") From ba99ae7d013041ad8d47b98e569eaae3611514bc Mon Sep 17 00:00:00 2001 From: mkmer Date: Tue, 2 Jan 2024 12:19:58 +0000 Subject: [PATCH 08/10] Missed var --- blinkpy/camera.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blinkpy/camera.py b/blinkpy/camera.py index 512a951d..a535a7c0 100644 --- a/blinkpy/camera.py +++ b/blinkpy/camera.py @@ -43,7 +43,7 @@ def __init__(self, sync): self._cached_video = None self.camera_type = "" self.product_type = None - self.sync_signal = None + self.sync_signal_strength = None @property def attributes(self): @@ -56,7 +56,7 @@ def attributes(self): "temperature_c": self.temperature_c, "temperature_calibrated": self.temperature_calibrated, "battery": self.battery, - "battery_voltage": self.battery_voltage, + "battery_level": self.battery_level, "thumbnail": self.thumbnail, "video": self.clip, "recent_clips": self.recent_clips, From 85fe440a6172bdaf03326cbf6d60aed8fba81d17 Mon Sep 17 00:00:00 2001 From: mkmer Date: Tue, 2 Jan 2024 12:25:04 +0000 Subject: [PATCH 09/10] in advertant variable name change --- blinkpy/camera.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blinkpy/camera.py b/blinkpy/camera.py index a535a7c0..dc37d216 100644 --- a/blinkpy/camera.py +++ b/blinkpy/camera.py @@ -56,7 +56,7 @@ def attributes(self): "temperature_c": self.temperature_c, "temperature_calibrated": self.temperature_calibrated, "battery": self.battery, - "battery_level": self.battery_level, + "battery_level": self.battery_voltage, "thumbnail": self.thumbnail, "video": self.clip, "recent_clips": self.recent_clips, From 6703cb8e593d5df07aad0f5ca96d50e0c5591b13 Mon Sep 17 00:00:00 2001 From: mkmer Date: Tue, 2 Jan 2024 12:27:19 +0000 Subject: [PATCH 10/10] voltage not level --- blinkpy/camera.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blinkpy/camera.py b/blinkpy/camera.py index dc37d216..fb54fbc1 100644 --- a/blinkpy/camera.py +++ b/blinkpy/camera.py @@ -56,7 +56,7 @@ def attributes(self): "temperature_c": self.temperature_c, "temperature_calibrated": self.temperature_calibrated, "battery": self.battery, - "battery_level": self.battery_voltage, + "battery_voltage": self.battery_voltage, "thumbnail": self.thumbnail, "video": self.clip, "recent_clips": self.recent_clips,