From 0ef99934b70c7c8f27bacf9dc985e12a9705dab5 Mon Sep 17 00:00:00 2001 From: Florent Thoumie Date: Mon, 28 Oct 2019 16:42:06 -0700 Subject: [PATCH] Add more iaqualink entity properties, fix timeout issues (#28236) * iaqualink: implement some more entity properties * Style fixes --- .../components/iaqualink/__init__.py | 27 ++++++++++++++++--- .../components/iaqualink/manifest.json | 8 ++---- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/iaqualink/__init__.py b/homeassistant/components/iaqualink/__init__.py index 9ce0e04895f..c3fa2bb1eb8 100644 --- a/homeassistant/components/iaqualink/__init__.py +++ b/homeassistant/components/iaqualink/__init__.py @@ -2,8 +2,8 @@ import asyncio from functools import wraps import logging +from typing import Any, Dict -from aiohttp import ClientTimeout import voluptuous as vol from iaqualink import ( @@ -26,7 +26,7 @@ from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_PASSWORD, CONF_USERNAME from homeassistant.core import callback -from homeassistant.helpers.aiohttp_client import async_create_clientsession +from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.dispatcher import ( async_dispatcher_connect, async_dispatcher_send, @@ -85,7 +85,7 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> None sensors = hass.data[DOMAIN][SENSOR_DOMAIN] = [] switches = hass.data[DOMAIN][SWITCH_DOMAIN] = [] - session = async_create_clientsession(hass, timeout=ClientTimeout(total=5)) + session = async_get_clientsession(hass) aqualink = AqualinkClient(username, password, session) try: await aqualink.login() @@ -210,3 +210,24 @@ class AqualinkEntity(Entity): def unique_id(self) -> str: """Return a unique identifier for this entity.""" return f"{self.dev.system.serial}_{self.dev.name}" + + @property + def assumed_state(self) -> bool: + """Return whether the state is based on actual reading from the device.""" + return not self.dev.system.last_run_success + + @property + def available(self) -> bool: + """Return whether the device is available or not.""" + return self.dev.system.online + + @property + def device_info(self) -> Dict[str, Any]: + """Return the device info.""" + return { + "identifiers": {(DOMAIN, self.unique_id)}, + "name": self.name, + "model": self.dev.__class__.__name__.replace("Aqualink", ""), + "manufacturer": "Jandy", + "via_device": (DOMAIN, self.dev.system.serial), + } diff --git a/homeassistant/components/iaqualink/manifest.json b/homeassistant/components/iaqualink/manifest.json index e883aec371c..85392e6371b 100644 --- a/homeassistant/components/iaqualink/manifest.json +++ b/homeassistant/components/iaqualink/manifest.json @@ -4,10 +4,6 @@ "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/iaqualink/", "dependencies": [], - "codeowners": [ - "@flz" - ], - "requirements": [ - "iaqualink==0.2.9" - ] + "codeowners": ["@flz"], + "requirements": ["iaqualink==0.3.0"] } diff --git a/requirements_all.txt b/requirements_all.txt index 98c593fc6c0..5679d126e2d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -676,7 +676,7 @@ hydrawiser==0.1.1 # i2csense==0.0.4 # homeassistant.components.iaqualink -iaqualink==0.2.9 +iaqualink==0.3.0 # homeassistant.components.watson_tts ibm-watson==3.0.3 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 5987c3061b4..7a13a44288a 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -262,7 +262,7 @@ httplib2==0.10.3 huawei-lte-api==1.4.3 # homeassistant.components.iaqualink -iaqualink==0.2.9 +iaqualink==0.3.0 # homeassistant.components.influxdb influxdb==5.2.3