From 7dd32a0dadec6658e4ace6875578f673ec5ece0c Mon Sep 17 00:00:00 2001 From: Kevin Fronczak Date: Tue, 9 Jun 2020 13:30:29 +0000 Subject: [PATCH] Make sure cameras are properly merged, initilize minis properly --- blinkpy/blinkpy.py | 8 ++++++-- blinkpy/camera.py | 12 +++++------- blinkpy/sync_module.py | 7 ++++--- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/blinkpy/blinkpy.py b/blinkpy/blinkpy.py index 0aeaee2..6b904f5 100644 --- a/blinkpy/blinkpy.py +++ b/blinkpy/blinkpy.py @@ -33,7 +33,6 @@ from blinkpy.helpers.constants import ( from blinkpy.helpers.constants import __version__ from blinkpy.auth import Auth, TokenRefreshFailed, LoginError - _LOGGER = logging.getLogger(__name__) @@ -128,9 +127,9 @@ class Blink: for name, network_id in networks.items(): sync_cameras = cameras.get(network_id, {}) self.setup_sync_module(name, network_id, sync_cameras) - self.cameras = self.merge_cameras() self.setup_owls() + self.cameras = self.merge_cameras() self.available = True self.key_required = False @@ -145,16 +144,21 @@ class Blink: """Check for mini cameras.""" response = api.request_homescreen(self) self.homescreen = response + network_list = [] try: for owl in response["owls"]: name = owl["name"] network_id = owl["network_id"] if owl["onboarded"]: + network_list.append(str(network_id)) self.sync[name] = BlinkOwl(self, name, network_id, owl) + self.sync[name].start() except KeyError: # No sync-less devices found pass + self.network_ids.extend(network_list) + def setup_camera_list(self): """Create camera list for onboarded networks.""" all_cameras = {} diff --git a/blinkpy/camera.py b/blinkpy/camera.py index ea6f425..627abe7 100644 --- a/blinkpy/camera.py +++ b/blinkpy/camera.py @@ -222,13 +222,11 @@ class BlinkCameraMini(BlinkCamera): def update(self, config, force_cache=False, **kwargs): """Update a blink mini camera.""" - self.name = config["name"] - self.camera_id = str(config["id"]) - self.network_id = str(config["network_id"]) - self.serial = config["serial"] - if not self.serial: - self.serial = f"{self.network_id}-{self.camera_id}" - self.motion_enabled = config["enabled"] + self.name = config.get("name", "unknown") + self.camera_id = str(config.get("id", "")) + self.network_id = str(config.get("network_id", "")) + self.serial = config.get("serial", f"{self.network_id}-{self.camera_id}") + self.motion_enabled = config.get("enabled", False) self.update_images(config, force_cache=force_cache) diff --git a/blinkpy/sync_module.py b/blinkpy/sync_module.py index 6f9d6b4..b33748c 100644 --- a/blinkpy/sync_module.py +++ b/blinkpy/sync_module.py @@ -219,11 +219,11 @@ class BlinkOwl(BlinkSyncModule): def __init__(self, blink, name, network_id, response): """Initialize a sync-less object.""" - self._response = response cameras = [{network_id: {"name": name, "id": response["id"]}}] super().__init__(blink, name, network_id, cameras) self.sync_id = response["id"] self.serial = response["serial"] + self.status = response["enabled"] if not self.serial: self.serial = f"{network_id}-{self.sync_id}" @@ -242,13 +242,14 @@ class BlinkOwl(BlinkSyncModule): def update_cameras(self, camera_type=BlinkCameraMini): """Update sync-less cameras.""" - super().update_cameras(camera_type=camera_type) + super().update_cameras(camera_type=BlinkCameraMini) def get_camera_info(self, camera_id): """Retrieve camera information.""" try: for owl in self.blink.homescreen["owls"]: if owl["name"] == self.name: + self.status = owl["enabled"] return owl except KeyError: pass @@ -265,7 +266,7 @@ class BlinkOwl(BlinkSyncModule): "network": { "id": self.network_id, "name": self.name, - "armed": self._response["enabled"], + "armed": self.status, "sync_module_error": False, "account_id": self.blink.account_id, }