async def fetch_mac_and_title(hass: core.HomeAssistant, host): """Validate the user input allows us to connect.""" session = aiohttp_client.async_get_clientsession(hass) emonitor = Emonitor(host, session) status = await emonitor.async_get_status() mac_address = status.network.mac_address return {"title": name_short_mac(mac_address[-6:]), "mac_address": mac_address}
async def test_async_get_status(): session = ClientSession() emonitor = Emonitor("1.2.3.4", session) with aioresponses() as m: m.get(f"http://1.2.3.4{STATUS_ENDPOINT}", body=load_fixture("status.xml")) status = await emonitor.async_get_status() assert status.hardware.serial_number == "1234" assert status.hardware.firmware_version == "16513" assert status.network.mac_address == "1190C2111111" assert status.network.ip_address == "192.168.1.2" channel_one = status.channels[1] assert channel_one.number == 1 assert channel_one.active is True assert channel_one.label == "Main" assert channel_one.ct_size == 150 assert channel_one.paired_with_channel == 2 assert channel_one.input == 1 assert channel_one.max_power == 69.0 assert channel_one.avg_power == 29.0 assert channel_one.inst_power == 25.0 channel_forty_eight = status.channels[48] assert channel_forty_eight.number == 48 assert channel_forty_eight.active is False await session.close()
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up SiteSage Emonitor from a config entry.""" session = aiohttp_client.async_get_clientsession(hass) emonitor = Emonitor(entry.data[CONF_HOST], session) coordinator: DataUpdateCoordinator = DataUpdateCoordinator( hass, _LOGGER, name=entry.title, update_method=emonitor.async_get_status, update_interval=timedelta(seconds=DEFAULT_UPDATE_RATE), ) await coordinator.async_config_entry_first_refresh() hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator hass.config_entries.async_setup_platforms(entry, PLATFORMS) return True