From 6a4bec17f2b66e3475e1b719331d2d72db6208ca Mon Sep 17 00:00:00 2001 From: Marc Date: Wed, 24 Feb 2021 21:08:29 +0100 Subject: [PATCH] Introdced logging of warnings and proper treatment of missing 'powerState' attribute --- hassfeld/__init__.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/hassfeld/__init__.py b/hassfeld/__init__.py index a907922..427703b 100644 --- a/hassfeld/__init__.py +++ b/hassfeld/__init__.py @@ -42,6 +42,11 @@ def log_info(message): logger.info(message) +def log_warn(message): + """Logging of warnings.""" + logger.warning(message) + + def log_critical(message): """Logging of information.""" logger.critical(message) @@ -214,9 +219,16 @@ def __update_zone_config(self, content_xml): room_udn = room_itm["@udn"] zone_rooms.append(room_name) self.lists["rooms"].append(room_name) - self.resolve["roomudn_to_powerstate"][room_udn] = room_itm[ - "@powerState" - ] + if "@powerState" in room_itm: + self.resolve["roomudn_to_powerstate"][room_udn] = room_itm[ + "@powerState" + ] + else: + log_warn( + "No 'powerState' attribute provided for room: %s" + % room_name + ) + self.resolve["roomudn_to_powerstate"][room_udn] = None self.resolve["room_to_udn"][room_name] = room_udn self.resolve["udn_to_room"][room_udn] = room_name self.resolve["zoneudn_to_roomudnlst"][zone_udn].append(room_udn) @@ -227,7 +239,15 @@ def __update_zone_config(self, content_xml): for room in self.wsd["zone_config"]["unassignedRooms"]["room"]: room_name = room["@name"] room_udn = room["@udn"] - self.resolve["roomudn_to_powerstate"][room_udn] = room["@powerState"] + if "@powerState" in room: + self.resolve["roomudn_to_powerstate"][room_udn] = room[ + "@powerState" + ] + else: + log_warn( + "No 'powerState' attribute provided for room: %s" % room_name + ) + self.resolve["roomudn_to_powerstate"][room_udn] = None self.resolve["room_to_udn"][room_name] = room_udn self.resolve["udn_to_room"][room_udn] = room_name self.lists["rooms"].append(room_name)