async def async_get_device_info(pv_request): """Determine device info.""" userdata = UserData(pv_request) resources = await userdata.get_resources() userdata_data = resources[USER_DATA] if FIRMWARE in userdata_data: main_processor_info = userdata_data[FIRMWARE][FIRMWARE_MAINPROCESSOR] elif userdata_data: # Legacy devices fwversion = ApiEntryPoint(pv_request, API_PATH_FWVERSION) resources = await fwversion.get_resources() if FIRMWARE in resources: main_processor_info = resources[FIRMWARE][FIRMWARE_MAINPROCESSOR] else: main_processor_info = DEFAULT_LEGACY_MAINPROCESSOR return { DEVICE_NAME: base64_to_unicode(userdata_data[HUB_NAME]), DEVICE_MAC_ADDRESS: userdata_data[MAC_ADDRESS_IN_USERDATA], DEVICE_SERIAL_NUMBER: userdata_data[SERIAL_NUMBER_IN_USERDATA], DEVICE_REVISION: main_processor_info[FIRMWARE_REVISION], DEVICE_FIRMWARE: main_processor_info, DEVICE_MODEL: main_processor_info[FIRMWARE_NAME], }
async def async_get_device_info(pv_request): """Determine device info.""" userdata = UserData(pv_request) resources = await userdata.get_resources() userdata_data = resources[USER_DATA] if FIRMWARE_IN_USERDATA in userdata_data: main_processor_info = userdata_data[FIRMWARE_IN_USERDATA][ MAINPROCESSOR_IN_USERDATA_FIRMWARE] else: # Legacy devices main_processor_info = { REVISION_IN_MAINPROCESSOR: LEGACY_DEVICE_REVISION, FIRMWARE_SUB_REVISION: LEGACY_DEVICE_SUB_REVISION, FIRMWARE_BUILD: LEGACY_DEVICE_BUILD, MODEL_IN_MAINPROCESSOR: LEGACY_DEVICE_MODEL, } return { DEVICE_NAME: base64_to_unicode(userdata_data[HUB_NAME]), DEVICE_MAC_ADDRESS: userdata_data[MAC_ADDRESS_IN_USERDATA], DEVICE_SERIAL_NUMBER: userdata_data[SERIAL_NUMBER_IN_USERDATA], DEVICE_REVISION: main_processor_info[REVISION_IN_MAINPROCESSOR], DEVICE_FIRMWARE: main_processor_info, DEVICE_MODEL: main_processor_info[MODEL_IN_MAINPROCESSOR], }
async def async_get_device_info(pv_request: AioRequest, hub_address: str) -> PowerviewDeviceInfo: """Determine device info.""" userdata = UserData(pv_request) resources = await userdata.get_resources() userdata_data = resources[USER_DATA] if FIRMWARE in userdata_data: main_processor_info = userdata_data[FIRMWARE][FIRMWARE_MAINPROCESSOR] elif userdata_data: # Legacy devices fwversion = ApiEntryPoint(pv_request, API_PATH_FWVERSION) resources = await fwversion.get_resources() if FIRMWARE in resources: main_processor_info = resources[FIRMWARE][FIRMWARE_MAINPROCESSOR] else: main_processor_info = DEFAULT_LEGACY_MAINPROCESSOR return PowerviewDeviceInfo( name=base64_to_unicode(userdata_data[HUB_NAME]), mac_address=userdata_data[MAC_ADDRESS_IN_USERDATA], serial_number=userdata_data[SERIAL_NUMBER_IN_USERDATA], firmware=main_processor_info, model=main_processor_info[FIRMWARE_NAME], hub_address=hub_address, )
def sanitize_resources(resource): """Cleans up incoming scene data :param scenes: The dict with scene data to be sanitized. :returns: Cleaned up dict. """ try: resource[ATTR_HUB_NAME_UNICODE] = base64_to_unicode(resource[ATTR_HUB_NAME]) return resource except (KeyError, TypeError): LOGGER.debug("no data available") return None
def sanitize_resources(resource): """Cleans up incoming room data :param rooms: The dict with scene data to be sanitized. :return: Cleaned up room dict. """ try: for room in resource[ATTR_ROOM_DATA]: room[ATTR_NAME_UNICODE] = base64_to_unicode(room[ATTR_NAME]) return resource except (KeyError, TypeError): _LOGGER.debug("no roomdata available") return None
def sanitize_resources(resource: dict): """Cleans up incoming scene data :param scenes: The dict with scene data to be sanitized. :returns: Cleaned up scene dict. """ try: for shade in resource[ATTR_SHADE_DATA]: shade[ATTR_NAME_UNICODE] = base64_to_unicode(shade[ATTR_NAME]) return resource except (KeyError, TypeError): LOGGER.debug("no shade data available") return None
def sanitize_resources(scenes: dict): """Cleans up incoming scene data :param scenes: The dict with scene data to be sanitized. :returns: Cleaned up scene dict. """ try: for scene in scenes[ATTR_SCENE_DATA]: try: scene[ATTR_NAME_UNICODE] = base64_to_unicode( scene[ATTR_NAME]) except binascii.Error: pass return scenes except (KeyError, TypeError): _LOGGER.debug("no scene data available") return None
def _sanitize_resource(cls, resource): _name = resource.get(ATTR_NAME) if _name: resource[ATTR_NAME_UNICODE] = base64_to_unicode(_name)