diff --git a/homeassistant/components/sensor/dovado.py b/homeassistant/components/sensor/dovado.py index 1e1bf785760339add79953c6986b07f9d60ed5cb..6a3745c0334b666bd3f39d52dc10d9aa7893c6c9 100644 --- a/homeassistant/components/sensor/dovado.py +++ b/homeassistant/components/sensor/dovado.py @@ -16,12 +16,13 @@ from homeassistant.util import slugify import homeassistant.helpers.config_validation as cv from homeassistant.const import (CONF_USERNAME, CONF_PASSWORD, CONF_HOST, CONF_PORT, - CONF_SENSORS, STATE_UNKNOWN) + CONF_SENSORS, STATE_UNKNOWN, + DEVICE_DEFAULT_NAME) from homeassistant.components.sensor import (DOMAIN, PLATFORM_SCHEMA) _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['dovado==0.1.15'] +REQUIREMENTS = ['dovado==0.4.0'] MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=30) @@ -101,21 +102,20 @@ class Dovado: @property def name(self): """Name of the router.""" - return self.state["product name"] + return self.state.get("product name", DEVICE_DEFAULT_NAME) @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): """Update device state.""" _LOGGER.info("Updating") try: - self.state = self._dovado.query_state() + self.state.update(self._dovado.state or {}) self.state.update( - connected=self.state["modem status"] == "CONNECTED") + connected=self.state.get("modem status") == "CONNECTED") _LOGGER.debug("Received: %s", self.state) return True except OSError as error: - _LOGGER.error("Could not contact the router: %s", error) - return False + _LOGGER.warning("Could not contact the router: %s", error) class DovadoSensor(Entity): @@ -140,8 +140,10 @@ class DovadoSensor(Entity): def state(self): """Return the sensor state.""" key = SENSORS[self._sensor][0] - result = self._dovado.state[key] - if self._sensor == SENSOR_NETWORK: + result = self._dovado.state.get(key) + if not result: + return STATE_UNKNOWN + elif self._sensor == SENSOR_NETWORK: match = re.search(r"\((.+)\)", result) return match.group(1) if match else STATE_UNKNOWN elif self._sensor == SENSOR_SIGNAL: @@ -152,8 +154,7 @@ class DovadoSensor(Entity): elif self._sensor == SENSOR_SMS_UNREAD: return int(result) elif self._sensor in [SENSOR_UPLOAD, SENSOR_DOWNLOAD]: - gib = pow(2, 30) - return round(int(result) / gib, 1) + return round(float(result) / 1e6, 1) else: return result diff --git a/requirements_all.txt b/requirements_all.txt index cfe45f4d608baabc4ba409cf69f7ba04d2411a8f..c501b5e29a5f306ee15db7ca3e007c0e5b57222a 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -112,7 +112,7 @@ dlipower==0.7.165 dnspython3==1.15.0 # homeassistant.components.sensor.dovado -dovado==0.1.15 +dovado==0.4.0 # homeassistant.components.sensor.dsmr dsmr_parser==0.6