Allow atome reauthentication on error (#59452)

* allow reauthentification on error

* Allow reauthentification on error

* allow reauthentification on error

* allow reauthentification on error

* Set one fonction for day/month/week/year and allow retry on error

* allow retry and manage return status

* local variable in retrieve_period_usage_with_retry

* Use If statement rather than exception

* remove blank

* code format

* Reduce variable

* remove useless variable

* get method return false and pylint no else-return

* remove blank

* trailing white space
This commit is contained in:
jugla 2021-11-21 23:38:37 +01:00 committed by GitHub
parent c4128f853d
commit e4931e242a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -111,11 +111,13 @@ class AtomeData:
"""Return latest active power value.""" """Return latest active power value."""
return self._is_connected return self._is_connected
@Throttle(LIVE_SCAN_INTERVAL) def _retrieve_live(self):
def update_live_usage(self): values = self.atome_client.get_live()
"""Return current power value.""" if (
try: values.get("last")
values = self.atome_client.get_live() and values.get("subscribed")
and (values.get("isConnected") is not None)
):
self._live_power = values["last"] self._live_power = values["last"]
self._subscribed_power = values["subscribed"] self._subscribed_power = values["subscribed"]
self._is_connected = values["isConnected"] self._is_connected = values["isConnected"]
@ -125,9 +127,47 @@ class AtomeData:
self._is_connected, self._is_connected,
self._subscribed_power, self._subscribed_power,
) )
return True
except KeyError as error: _LOGGER.error("Live Data : Missing last value in values: %s", values)
_LOGGER.error("Missing last value in values: %s: %s", values, error) return False
@Throttle(LIVE_SCAN_INTERVAL)
def update_live_usage(self):
"""Return current power value."""
if not self._retrieve_live():
_LOGGER.debug("Perform Reconnect during live request")
self.atome_client.login()
self._retrieve_live()
def _retrieve_period_usage(self, period_type):
"""Return current daily/weekly/monthly/yearly power usage."""
values = self.atome_client.get_consumption(period_type)
if values.get("total") and values.get("price"):
period_usage = values["total"] / 1000
period_price = values["price"]
_LOGGER.debug("Updating Atome %s data. Got: %d", period_type, period_usage)
return True, period_usage, period_price
_LOGGER.error("%s : Missing last value in values: %s", period_type, values)
return False, None, None
def _retrieve_period_usage_with_retry(self, period_type):
"""Return current daily/weekly/monthly/yearly power usage with one retry."""
(
retrieve_success,
period_usage,
period_price,
) = self._retrieve_period_usage(period_type)
if not retrieve_success:
_LOGGER.debug("Perform Reconnect during %s", period_type)
self.atome_client.login()
(
retrieve_success,
period_usage,
period_price,
) = self._retrieve_period_usage(period_type)
return (period_usage, period_price)
@property @property
def day_usage(self): def day_usage(self):
@ -142,14 +182,10 @@ class AtomeData:
@Throttle(DAILY_SCAN_INTERVAL) @Throttle(DAILY_SCAN_INTERVAL)
def update_day_usage(self): def update_day_usage(self):
"""Return current daily power usage.""" """Return current daily power usage."""
try: (
values = self.atome_client.get_consumption(DAILY_TYPE) self._day_usage,
self._day_usage = values["total"] / 1000 self._day_price,
self._day_price = values["price"] ) = self._retrieve_period_usage_with_retry(DAILY_TYPE)
_LOGGER.debug("Updating Atome daily data. Got: %d", self._day_usage)
except KeyError as error:
_LOGGER.error("Missing last value in values: %s: %s", values, error)
@property @property
def week_usage(self): def week_usage(self):
@ -164,14 +200,10 @@ class AtomeData:
@Throttle(WEEKLY_SCAN_INTERVAL) @Throttle(WEEKLY_SCAN_INTERVAL)
def update_week_usage(self): def update_week_usage(self):
"""Return current weekly power usage.""" """Return current weekly power usage."""
try: (
values = self.atome_client.get_consumption(WEEKLY_TYPE) self._week_usage,
self._week_usage = values["total"] / 1000 self._week_price,
self._week_price = values["price"] ) = self._retrieve_period_usage_with_retry(WEEKLY_TYPE)
_LOGGER.debug("Updating Atome weekly data. Got: %d", self._week_usage)
except KeyError as error:
_LOGGER.error("Missing last value in values: %s: %s", values, error)
@property @property
def month_usage(self): def month_usage(self):
@ -186,14 +218,10 @@ class AtomeData:
@Throttle(MONTHLY_SCAN_INTERVAL) @Throttle(MONTHLY_SCAN_INTERVAL)
def update_month_usage(self): def update_month_usage(self):
"""Return current monthly power usage.""" """Return current monthly power usage."""
try: (
values = self.atome_client.get_consumption(MONTHLY_TYPE) self._month_usage,
self._month_usage = values["total"] / 1000 self._month_price,
self._month_price = values["price"] ) = self._retrieve_period_usage_with_retry(MONTHLY_TYPE)
_LOGGER.debug("Updating Atome monthly data. Got: %d", self._month_usage)
except KeyError as error:
_LOGGER.error("Missing last value in values: %s: %s", values, error)
@property @property
def year_usage(self): def year_usage(self):
@ -208,14 +236,10 @@ class AtomeData:
@Throttle(YEARLY_SCAN_INTERVAL) @Throttle(YEARLY_SCAN_INTERVAL)
def update_year_usage(self): def update_year_usage(self):
"""Return current yearly power usage.""" """Return current yearly power usage."""
try: (
values = self.atome_client.get_consumption(YEARLY_TYPE) self._year_usage,
self._year_usage = values["total"] / 1000 self._year_price,
self._year_price = values["price"] ) = self._retrieve_period_usage_with_retry(YEARLY_TYPE)
_LOGGER.debug("Updating Atome yearly data. Got: %d", self._year_usage)
except KeyError as error:
_LOGGER.error("Missing last value in values: %s: %s", values, error)
class AtomeSensor(SensorEntity): class AtomeSensor(SensorEntity):