From 1119da7e8a6bdce2ea70e09bbbad07d1a1c24eb4 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 3 Mar 2020 11:22:26 -0600 Subject: [PATCH] =?UTF-8?q?Flume=20Cleanups=20(unique=20id,=20fix=20missin?= =?UTF-8?q?g=20timeout,=20http=20session,=E2=80=A6=20(#32384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Flume Cleanups * Sensors now show the name * include_devices and exclude_devices are now available in the config. * Address review items * bump as 0.3.0 is published --- homeassistant/components/flume/manifest.json | 2 +- homeassistant/components/flume/sensor.py | 44 +++++++++++++++++--- requirements_all.txt | 2 +- 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/flume/manifest.json b/homeassistant/components/flume/manifest.json index d03c6330f20..2264df2db06 100644 --- a/homeassistant/components/flume/manifest.json +++ b/homeassistant/components/flume/manifest.json @@ -2,7 +2,7 @@ "domain": "flume", "name": "flume", "documentation": "https://www.home-assistant.io/integrations/flume/", - "requirements": ["pyflume==0.2.4"], + "requirements": ["pyflume==0.3.0"], "dependencies": [], "codeowners": ["@ChrisMandich"] } diff --git a/homeassistant/components/flume/sensor.py b/homeassistant/components/flume/sensor.py index e96ce0d96ef..2694842134f 100644 --- a/homeassistant/components/flume/sensor.py +++ b/homeassistant/components/flume/sensor.py @@ -3,6 +3,7 @@ from datetime import timedelta import logging from pyflume import FlumeData, FlumeDeviceList +from requests import Session import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA @@ -42,23 +43,37 @@ def setup_platform(hass, config, add_entities, discovery_info=None): name = config[CONF_NAME] flume_entity_list = [] + http_session = Session() + flume_devices = FlumeDeviceList( - username, password, client_id, client_secret, flume_token_file + username, + password, + client_id, + client_secret, + flume_token_file, + http_session=http_session, ) for device in flume_devices.device_list: if device["type"] == FLUME_TYPE_SENSOR: + device_id = device["id"] + device_name = device["location"]["name"] + flume = FlumeData( username, password, client_id, client_secret, - device["id"], + device_id, time_zone, SCAN_INTERVAL, flume_token_file, + update_on_init=False, + http_session=http_session, + ) + flume_entity_list.append( + FlumeSensor(flume, f"{name} {device_name}", device_id) ) - flume_entity_list.append(FlumeSensor(flume, f"{name} {device['id']}")) if flume_entity_list: add_entities(flume_entity_list, True) @@ -67,11 +82,13 @@ def setup_platform(hass, config, add_entities, discovery_info=None): class FlumeSensor(Entity): """Representation of the Flume sensor.""" - def __init__(self, flume, name): + def __init__(self, flume, name, device_id): """Initialize the Flume sensor.""" self.flume = flume self._name = name + self._device_id = device_id self._state = None + self._available = False @property def name(self): @@ -86,9 +103,24 @@ class FlumeSensor(Entity): @property def unit_of_measurement(self): """Return the unit the value is expressed in.""" - return "gal" + # This is in gallons per SCAN_INTERVAL + return "gal/m" + + @property + def available(self): + """Device is available.""" + return self._available + + @property + def unique_id(self): + """Device unique ID.""" + return self._device_id def update(self): """Get the latest data and updates the states.""" + self._available = False self.flume.update() - self._state = self.flume.value + new_value = self.flume.value + if new_value is not None: + self._available = True + self._state = new_value diff --git a/requirements_all.txt b/requirements_all.txt index ec23b2d51b6..cba7ea06545 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1260,7 +1260,7 @@ pyflexit==0.3 pyflic-homeassistant==0.4.dev0 # homeassistant.components.flume -pyflume==0.2.4 +pyflume==0.3.0 # homeassistant.components.flunearyou pyflunearyou==1.0.3