async def test_device_info_is_assummed(hass): """Test that device info is assumed if device is unavailable.""" # Create a device registry entry with device info. mock_d_registry = mock_device_registry(hass) mock_d_registry.async_get_or_create( config_entry_id=MOCK_ENTRY_ID, name=MOCK_HOST_NAME, model=MOCK_DEVICE_MODEL, identifiers={(DOMAIN, MOCK_HOST_ID)}, sw_version=MOCK_HOST_VERSION, ) mock_d_entries = mock_d_registry.devices assert len(mock_d_entries) == 1 # Create a entity_registry entry which is using identifiers from device. mock_unique_id = ps4.format_unique_id(MOCK_CREDS, MOCK_HOST_ID) mock_e_registry = mock_registry(hass) mock_e_registry.async_get_or_create("media_player", DOMAIN, mock_unique_id, config_entry=MOCK_CONFIG) mock_entity_id = mock_e_registry.async_get_entity_id( "media_player", DOMAIN, mock_unique_id) mock_entity_id = await setup_mock_component(hass) mock_state = hass.states.get(mock_entity_id).state # Ensure that state is not set. assert mock_state == STATE_UNKNOWN # Ensure that entity_id is the same as the existing. mock_entities = hass.states.async_entity_ids() assert len(mock_entities) == 1 assert mock_entities[0] == mock_entity_id
def get_device_info(self, status): """Set device info for registry.""" _sw_version = status['system-version'] _sw_version = _sw_version[1:4] sw_version = "{}.{}".format(_sw_version[0], _sw_version[1:]) self._info = { 'name': status['host-name'], 'model': 'PlayStation 4', 'identifiers': {(PS4_DOMAIN, status['host-id'])}, 'manufacturer': 'Sony Interactive Entertainment Inc.', 'sw_version': sw_version } self._unique_id = format_unique_id(self._creds, status['host-id'])
async def async_get_device_info(self, status): """Set device info for registry.""" # If cannot get status on startup, assume info from registry. if status is None: _LOGGER.info("Assuming status from registry") e_registry = await entity_registry.async_get_registry(self.hass) d_registry = await device_registry.async_get_registry(self.hass) for entity_id, entry in e_registry.entities.items(): if entry.config_entry_id == self._entry_id: self._unique_id = entry.unique_id self.entity_id = entity_id break for device in d_registry.devices.values(): if self._entry_id in device.config_entries: self._info = { 'name': device.name, 'model': device.model, 'identifiers': device.identifiers, 'manufacturer': device.manufacturer, 'sw_version': device.sw_version } break else: _sw_version = status['system-version'] _sw_version = _sw_version[1:4] sw_version = "{}.{}".format(_sw_version[0], _sw_version[1:]) self._info = { 'name': status['host-name'], 'model': 'PlayStation 4', 'identifiers': { (PS4_DOMAIN, status['host-id']) }, 'manufacturer': 'Sony Interactive Entertainment Inc.', 'sw_version': sw_version } self._unique_id = format_unique_id(self._creds, status['host-id'])
async def async_get_device_info(self, status): """Set device info for registry.""" # If cannot get status on startup, assume info from registry. if status is None: _LOGGER.info("Assuming status from registry") e_registry = await entity_registry.async_get_registry(self.hass) d_registry = await device_registry.async_get_registry(self.hass) for entity_id, entry in e_registry.entities.items(): if entry.config_entry_id == self._entry_id: self._unique_id = entry.unique_id self.entity_id = entity_id break for device in d_registry.devices.values(): if self._entry_id in device.config_entries: self._info = { "name": device.name, "model": device.model, "identifiers": device.identifiers, "manufacturer": device.manufacturer, "sw_version": device.sw_version, } break else: _sw_version = status["system-version"] _sw_version = _sw_version[1:4] sw_version = "{}.{}".format(_sw_version[0], _sw_version[1:]) self._info = { "name": status["host-name"], "model": "PlayStation 4", "identifiers": {(PS4_DOMAIN, status["host-id"])}, "manufacturer": "Sony Interactive Entertainment Inc.", "sw_version": sw_version, } self._unique_id = format_unique_id(self._creds, status["host-id"])