Flume Cleanups (unique id, fix missing timeout, http session,… (#32384)

* 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
This commit is contained in:
J. Nick Koston 2020-03-03 11:22:26 -06:00 committed by GitHub
parent 59b4e42f8b
commit 1119da7e8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 8 deletions

View File

@ -2,7 +2,7 @@
"domain": "flume", "domain": "flume",
"name": "flume", "name": "flume",
"documentation": "https://www.home-assistant.io/integrations/flume/", "documentation": "https://www.home-assistant.io/integrations/flume/",
"requirements": ["pyflume==0.2.4"], "requirements": ["pyflume==0.3.0"],
"dependencies": [], "dependencies": [],
"codeowners": ["@ChrisMandich"] "codeowners": ["@ChrisMandich"]
} }

View File

@ -3,6 +3,7 @@ from datetime import timedelta
import logging import logging
from pyflume import FlumeData, FlumeDeviceList from pyflume import FlumeData, FlumeDeviceList
from requests import Session
import voluptuous as vol import voluptuous as vol
from homeassistant.components.sensor import PLATFORM_SCHEMA 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] name = config[CONF_NAME]
flume_entity_list = [] flume_entity_list = []
http_session = Session()
flume_devices = FlumeDeviceList( 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: for device in flume_devices.device_list:
if device["type"] == FLUME_TYPE_SENSOR: if device["type"] == FLUME_TYPE_SENSOR:
device_id = device["id"]
device_name = device["location"]["name"]
flume = FlumeData( flume = FlumeData(
username, username,
password, password,
client_id, client_id,
client_secret, client_secret,
device["id"], device_id,
time_zone, time_zone,
SCAN_INTERVAL, SCAN_INTERVAL,
flume_token_file, 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: if flume_entity_list:
add_entities(flume_entity_list, True) add_entities(flume_entity_list, True)
@ -67,11 +82,13 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
class FlumeSensor(Entity): class FlumeSensor(Entity):
"""Representation of the Flume sensor.""" """Representation of the Flume sensor."""
def __init__(self, flume, name): def __init__(self, flume, name, device_id):
"""Initialize the Flume sensor.""" """Initialize the Flume sensor."""
self.flume = flume self.flume = flume
self._name = name self._name = name
self._device_id = device_id
self._state = None self._state = None
self._available = False
@property @property
def name(self): def name(self):
@ -86,9 +103,24 @@ class FlumeSensor(Entity):
@property @property
def unit_of_measurement(self): def unit_of_measurement(self):
"""Return the unit the value is expressed in.""" """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): def update(self):
"""Get the latest data and updates the states.""" """Get the latest data and updates the states."""
self._available = False
self.flume.update() 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

View File

@ -1260,7 +1260,7 @@ pyflexit==0.3
pyflic-homeassistant==0.4.dev0 pyflic-homeassistant==0.4.dev0
# homeassistant.components.flume # homeassistant.components.flume
pyflume==0.2.4 pyflume==0.3.0
# homeassistant.components.flunearyou # homeassistant.components.flunearyou
pyflunearyou==1.0.3 pyflunearyou==1.0.3