From 9a5d783537688c6b11cda32bc0522fd1d63bde27 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Mon, 27 May 2019 22:36:15 +0200 Subject: [PATCH] Don't crash on first EAN without installations (#24137) * Don't crash on first EAN without installations * Remove duplicated values * Switch from Exception to persistent notification * Make pylint happy --- homeassistant/components/essent/manifest.json | 2 +- homeassistant/components/essent/sensor.py | 21 +++++++++++++------ requirements_all.txt | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/essent/manifest.json b/homeassistant/components/essent/manifest.json index 49189f6bacb..41313cb44a9 100644 --- a/homeassistant/components/essent/manifest.json +++ b/homeassistant/components/essent/manifest.json @@ -2,7 +2,7 @@ "domain": "essent", "name": "Essent", "documentation": "https://www.home-assistant.io/components/essent", - "requirements": ["PyEssent==0.10"], + "requirements": ["PyEssent==0.12"], "dependencies": [], "codeowners": ["@TheLastProject"] } diff --git a/homeassistant/components/essent/sensor.py b/homeassistant/components/essent/sensor.py index 545ed3d5baf..e77b256abb7 100644 --- a/homeassistant/components/essent/sensor.py +++ b/homeassistant/components/essent/sensor.py @@ -36,6 +36,14 @@ def setup_platform(hass, config, add_devices, discovery_info=None): tariff, data['values']['LVR'][tariff]['unit'])) + if not meters: + hass.components.persistent_notification.create( + 'Couldn\'t find any meter readings. ' + 'Please ensure Verbruiks Manager is enabled in Mijn Essent ' + 'and at least one reading has been logged to Meterstanden.', + title='Essent', notification_id='essent_notification') + return + add_devices(meters, True) @@ -46,14 +54,13 @@ class EssentBase(): """Initialize the Essent API.""" self._username = username self._password = password - self._meters = [] self._meter_data = {} self.update() def retrieve_meters(self): """Retrieve the list of meters.""" - return self._meters + return self._meter_data.keys() def retrieve_meter_data(self, meter): """Retrieve the data for this meter.""" @@ -63,10 +70,12 @@ class EssentBase(): def update(self): """Retrieve the latest meter data from Essent.""" essent = PyEssent(self._username, self._password) - self._meters = essent.get_EANs() - for meter in self._meters: - self._meter_data[meter] = essent.read_meter( - meter, only_last_meter_reading=True) + eans = essent.get_EANs() + for possible_meter in eans: + meter_data = essent.read_meter( + possible_meter, only_last_meter_reading=True) + if meter_data: + self._meter_data[possible_meter] = meter_data class EssentMeter(Entity): diff --git a/requirements_all.txt b/requirements_all.txt index 0e954db800e..a2cf5e37cd9 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -43,7 +43,7 @@ Mastodon.py==1.4.2 OPi.GPIO==0.3.6 # homeassistant.components.essent -PyEssent==0.10 +PyEssent==0.12 # homeassistant.components.github PyGithub==1.43.5